diff --git a/README.md b/README.md index 593ee6b..4aed638 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,265 @@ -# Token Streaming +# STX Airtime Drip 💰# STX Streaming & Airtime Drip -A token streaming DeFi protocol built using Clarity for Stacks. Inspired by Superfluid. +To simulate, visit `https://stx-airtime-drip.vercel.app/` +Use this address `STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8` connect wallet to create your plan -This project was done as part of the "Introduction to Stacks" course for the "Stacks Developer Degree" on LearnWeb3. +> Automate airtime payments on the Stacks blockchain. No wahala, no POS queues.I built this to drip Stacks (STX) safely from one person to another. It feels like how we do ajo/esusu back home, just automated on the blockchain. **Now with prepaid airtime drip for Nigerian networks!** + +A decentralized payment streaming platform built for Nigerian merchants and customers. Lock STX once, let your people claim their airtime drops automatically — like digital ajo/esusu, but on the blockchain.## What the contract does + +- **Stream STX**: Sender locks STX inside the contract, receiver earns small pieces every block and can cash out what has accrued. + +## Why This Exists- **Airtime Drip Plans**: Create recurring airtime payment plans for customers - perfect for merchants providing prepaid services. + +- **Flexible Management**: Top up plans, cancel anytime, and withdraw remaining balance. + +If you've ever run a small business in Lagos or Abuja, you know the headache: customers calling for airtime top-ups, chasing people down for payments, POS transfers that fail at 5pm. This dApp solves that.- **Multi-network Support**: Works with MTN, Glo, Airtel, and 9mobile. + + + +**How it works:**All of this runs in `contracts/stream.clar` using Clarity. + +- Merchants create airtime plans for regular customers + +- Lock STX once for multiple scheduled drops## ✨ New Features (Professional Edition) + +- Customers claim their own airtime when it's ready + +- No manual transfers, no WhatsApp messages, no stress### 🎯 Enhanced User Experience + +- **Transaction Status Notifications**: Real-time toast notifications for all blockchain interactions + +Built with Clarity smart contracts on Stacks — your funds stay locked on-chain until customers claim them.- **Block Height Countdown**: Live countdown showing when next claim is ready (~10 min per block) + +- **Activity History**: View complete transaction history for each plan + +## What You Can Do- **QR Code Sharing**: Generate shareable links and QR codes for customers + +- **Network Fee Estimation**: See total costs before creating plans + +### For Merchants + +- **Create Plans**: Set up recurring payments (daily, weekly, monthly)### 📊 Portal Views + +- **Bulk Management**: Handle multiple customers from one dashboard- **Customer Portal**: View all your plans, total claimable balance, and bulk claim feature + +- **Track Everything**: See total funded, claimed amounts, active plans- **Merchant Dashboard**: Track total locked value, revenue metrics, active/completed plans + +- **Top Up Anytime**: Add more drops without creating new plans- **Read-Only Mode**: Look up plans by address without connecting wallet + +- **Cancel & Refund**: Get remaining balance back if customer is sorted + +### 🌐 Additional Tools + +### For Customers- **Testnet Faucet Integration**: Quick access to get testnet STX + +- **View Your Plans**: See all merchants sending you airtime- **View Mode Switcher**: Toggle between All Plans, My Claims, and My Business views + +- **Claim When Ready**: Get notified when your next drop is available- **URL Plan Sharing**: Direct links to specific plans (e.g., `?plan=5&customer=ST1ABC...`) + +- **Bulk Claims**: Collect from multiple plans in one go- **Bulk Claiming**: Claim from multiple plans with one click + +- **No Wallet? No Problem**: Check your balance without connecting + +## Features + +### For Everyone### STX Streaming + +- Real-time transaction notifications- Sender locks STX inside the contract + +- Live countdown to next claim (~10 min per block)- Receiver earns small pieces every block and can cash out what has accrued + +- QR codes for easy plan sharing- Sender can top up the pot or pull back whatever is left when the schedule ends + +- Activity history for each plan- Both sides can agree to tweak the plan if they sign the same message + +- Network fee preview before transactions + +### Airtime Drip (NEW!) + +## Quick Start- **Create Plans**: Merchants set up recurring airtime payments with customer address, phone number, and network + +- **Auto Claims**: Customers claim airtime every interval (e.g., every 144 blocks = ~24 hours) + +### Prerequisites- **Top Up**: Add more STX to existing plans anytime + +- Node.js 18+ and pnpm installed- **Cancel**: Merchants can cancel plans and withdraw remaining balance + +- Hiro or Xverse wallet (for testnet/mainnet) + +- Clarinet CLI (for contract development)## Local setup + +```bash + +### Local Developmentpnpm install + +pnpm run dev # Start frontend at http://localhost:5173 + +```bash``` + +# Clone and install + +git clone ### Testing + +cd stacks-token-streaming```bash + +pnpm installclarinet check # Check contract compiles + +pnpm test # Run tests (note: currently being debugged) + +# Start the frontend``` + +pnpm run dev + +# Visit http://localhost:5173## Frontend + + +clarinet check- **Wallet Integration**: Connect with Hiro Wallet using @stacks/connect + +```- **Real-time Notifications**: Toast messages for all transactions + +- **Block Countdown Timer**: Live updates showing when claims are ready + +### First Time Setup- **Smart Portals**: Dedicated views for customers and merchants + +- **Fee Estimation**: See total costs before submitting transactions + +1. **Get testnet STX** (if testing)- **QR Code Generation**: Share plans easily with customers + + - Click "Get testnet STX" in the app- **Activity Logs**: Complete history for each plan + + - Or visit: https://explorer.hiro.so/sandbox/faucet- **Read-Only Lookup**: View plans without wallet connection + +- **Bulk Operations**: Claim from multiple plans at once + +2. **Connect your wallet**- **Nigerian Theme**: Black/orange/army-green color scheme with Nunito fonts + + - Click "Connect wallet" + + - Approve in Hiro/XverseAccess at `http://localhost:5173` after running `pnpm run dev`. + + + +3. **Create your first plan**## Use Cases + + - Fill in customer address- **Airtime Merchants**: Automate recurring airtime top-ups for loyal customers + + - Set phone number and network (MTN, Glo, Airtel, 9mobile)- **Employer Payments**: Stream monthly salary so staff can draw cash anytime + + - Choose amount per drop and frequency- **Pocket Money**: Parents drip feed to kids without giving everything at once + + - Submit and sign the transaction- **Subscription Services**: Vendors providing data or airtime little by little + + + +## Smart Contract## Contract Functions + +### Airtime Functions + + + +- `claim-airtime`: Customer claims their scheduled airtime payout + +- **Airtime Plans**: Recurring payments with interval-based claims- `topup-airtime`: Add more STX to an existing plan + +- **STX Streaming**: Continuous per-block token release (original feature)- `cancel-airtime`: Cancel plan and withdraw remaining balance + +- **Access Control**: Only merchant can top-up/cancel, only customer can claim + +- **Safe Transfers**: Funds locked in contract until explicitly claimed### Streaming Functions + +- `stream-to`: Create a new STX stream + +### Main Functions- `refuel`: Add more STX to existing stream + +- `withdraw`: Receiver claims available STX + +```clarity- `refund`: Sender withdraws excess after stream ends + +;; Merchant creates a plan + +(create-airtime-plan customer phone network payout-amount interval max-claims)## Credits + +Project started during the LearnWeb3 Stacks track. + +;; Customer claims their dropExtended with Airtime Drip functionality for Nigerian prepaid services. + +(claim-airtime plan-id) + +;; Merchant adds more drops +(topup-airtime plan-id extra-claims) + +;; Merchant cancels and gets refund +(cancel-airtime plan-id) +``` + + +## Deployment + +### To Testnet + +```bash +# Deploy contract +clarinet deployments apply -p deployments/default.testnet-plan.yaml + +# Update frontend config +# Create frontend/.env +VITE_CONTRACT_ADDRESS= +VITE_CONTRACT_NAME=stream +VITE_NETWORK=testnet + +# Restart frontend +pnpm run dev +``` + + + +## Use Cases (Real Life) + +1. **Airtime Resellers**: Automate daily top-ups for loyal customers +2. **Small Businesses**: Pay staff salaries in scheduled drops +3. **Parents**: Drip-feed allowance to kids without sending everything at once +4. **Subscription Services**: Manage recurring data/airtime bundles +5. **Savings Groups**: Digital ajo/esusu with transparent on-chain records + +## Nigerian Networks Supported + +- MTN Nigeria +- Glo Mobile +- Airtel Nigeria +- 9mobile + +(Network identifiers stored on-chain; actual airtime redemption requires off-chain integration) + +## Known Limitations + +- Test suite has simnet wallet initialization issues (documented, not code bugs) +- Contract address must be manually configured post-deployment +- Stacks block time is ~10 minutes (slower than Ethereum/Polygon) +- No actual telco integration yet (requires API partnerships) + +## Future Plans + +- Direct integration with Nigerian telco APIs +- Mobile app (React Native) +- Multi-currency support (STX, xBTC, stablecoins) +- Email/SMS notifications for ready claims +- Plan templates and CSV bulk imports + +## Contributing + +Found a bug? Got ideas? PRs welcome. + +Keep it simple, keep it clean, make it work for Nigerians first. + +## License + +MIT — use it, fork it, build on it. + +## Credits + +Started during LearnWeb3 Stacks track. Extended for Nigerian airtime use case. + +Built with ❤️ for merchants and customers tired of payment wahala. + +--- diff --git a/contracts/stream.clar b/contracts/stream.clar index fdb2a0d..9ae21d0 100644 --- a/contracts/stream.clar +++ b/contracts/stream.clar @@ -3,10 +3,16 @@ (define-constant ERR_INVALID_SIGNATURE (err u1)) (define-constant ERR_STREAM_STILL_ACTIVE (err u2)) (define-constant ERR_INVALID_STREAM_ID (err u3)) +(define-constant ERR_INVALID_PLAN_ID (err u4)) +(define-constant ERR_PLAN_NOT_READY (err u5)) +(define-constant ERR_PLAN_EMPTY (err u6)) +(define-constant ERR_INVALID_PARAM (err u7)) +(define-constant ERR_PLAN_COMPLETE (err u8)) ;; data vars (define-data-var latest-stream-id uint u0) (define-data-var nonce uint u0) +(define-data-var latest-airtime-plan-id uint u0) ;; streams mapping (define-map streams @@ -17,30 +23,53 @@ balance: uint, withdrawn-balance: uint, payment-per-block: uint, - timeframe: (tuple (start-block uint) (stop-block uint)) + timeframe: { + start-block: uint, + stop-block: uint, + }, } ) +;; Airtime drip plans keep metadata that makes sense in Lagos traffic - small steady payouts for mobile top-ups +(define-map airtime-plans + uint + { + merchant: principal, + customer: principal, + phone: (buff 16), + network: (buff 16), + payout-amount: uint, + interval: uint, + next-claim-block: uint, + total-funded: uint, + remaining-balance: uint, + total-claims: uint, + max-claims: uint, + } +) ;; Create a new stream (define-public (stream-to (recipient principal) (initial-balance uint) - (timeframe (tuple (start-block uint) (stop-block uint))) + (timeframe { + start-block: uint, + stop-block: uint, + }) (payment-per-block uint) ) (let ( - (stream { - sender: contract-caller, - recipient: recipient, - balance: initial-balance, - withdrawn-balance: u0, - payment-per-block: payment-per-block, - timeframe: timeframe - }) - (current-stream-id (var-get latest-stream-id)) - ) - ;; stx-transfer takes in (amount, sender, recipient) arguments + (stream { + sender: contract-caller, + recipient: recipient, + balance: initial-balance, + withdrawn-balance: u0, + payment-per-block: payment-per-block, + timeframe: timeframe, + }) + (current-stream-id (var-get latest-stream-id)) + ) + ;; Okay stx-transfer takes in (amount, sender, recipient) arguments ;; for the `recipient` - we do `(as-contract tx-sender)` ;; `as-contract` switches the `tx-sender` variable to be the contract principal ;; inside it's scope @@ -53,21 +82,140 @@ ) ) +;; Helper to multiply two uints safely - Clarity already checks overflow so we just wrap it +(define-private (mul + (a uint) + (b uint) + ) + (* a b) +) + +;; Create airtime plan tailored for recurring top-ups +(define-public (create-airtime-plan + (customer principal) + (phone (buff 16)) + (network (buff 16)) + (payout-amount uint) + (interval uint) + (max-claims uint) + ) + (begin + (asserts! (> payout-amount u0) ERR_INVALID_PARAM) + (asserts! (> interval u0) ERR_INVALID_PARAM) + (asserts! (> max-claims u0) ERR_INVALID_PARAM) + (let ( + (required-fund (mul payout-amount max-claims)) + (plan-id (var-get latest-airtime-plan-id)) + (starting-block (+ block-height interval)) + ) + (try! (stx-transfer? required-fund contract-caller (as-contract tx-sender))) + (map-set airtime-plans plan-id { + merchant: contract-caller, + customer: customer, + phone: phone, + network: network, + payout-amount: payout-amount, + interval: interval, + next-claim-block: starting-block, + total-funded: required-fund, + remaining-balance: required-fund, + total-claims: u0, + max-claims: max-claims, + }) + (var-set latest-airtime-plan-id (+ plan-id u1)) + (ok plan-id) + ) + ) +) + +;; Allow customer to claim airtime payout once interval elapses +(define-public (claim-airtime (plan-id uint)) + (let ( + (plan (unwrap! (map-get? airtime-plans plan-id) ERR_INVALID_PLAN_ID)) + (payout (get payout-amount plan)) + ) + (asserts! (is-eq contract-caller (get customer plan)) ERR_UNAUTHORIZED) + (asserts! (<= (get next-claim-block plan) block-height) ERR_PLAN_NOT_READY) + (asserts! (> (get remaining-balance plan) u0) ERR_PLAN_EMPTY) + (asserts! (< (get total-claims plan) (get max-claims plan)) ERR_PLAN_COMPLETE) + (try! (as-contract (stx-transfer? payout tx-sender (get customer plan)))) + (map-set airtime-plans plan-id + (merge plan { + remaining-balance: (- (get remaining-balance plan) payout), + total-claims: (+ (get total-claims plan) u1), + next-claim-block: (+ (get next-claim-block plan) (get interval plan)), + }) + ) + (ok payout) + ) +) + +;; Merchant can extend plan by adding more claim slots +(define-public (topup-airtime + (plan-id uint) + (extra-claims uint) + ) + (let ( + (plan (unwrap! (map-get? airtime-plans plan-id) ERR_INVALID_PLAN_ID)) + (payout (get payout-amount plan)) + ) + (asserts! (is-eq contract-caller (get merchant plan)) ERR_UNAUTHORIZED) + (asserts! (> extra-claims u0) ERR_INVALID_PARAM) + (let ((refill-amount (mul payout extra-claims))) + (try! (stx-transfer? refill-amount contract-caller (as-contract tx-sender))) + (map-set airtime-plans plan-id + (merge plan { + remaining-balance: (+ (get remaining-balance plan) refill-amount), + total-funded: (+ (get total-funded plan) refill-amount), + max-claims: (+ (get max-claims plan) extra-claims), + }) + ) + (ok refill-amount) + ) + ) +) + +;; Merchant can cash out whatever is left when plan wraps up or buyer already has enough data +(define-public (cancel-airtime (plan-id uint)) + (let ( + (plan (unwrap! (map-get? airtime-plans plan-id) ERR_INVALID_PLAN_ID)) + (outstanding (get remaining-balance plan)) + ) + (asserts! (is-eq contract-caller (get merchant plan)) ERR_UNAUTHORIZED) + (asserts! (> outstanding u0) ERR_PLAN_EMPTY) + (map-set airtime-plans plan-id + (merge plan { + remaining-balance: u0, + max-claims: (get total-claims plan), + }) + ) + (try! (as-contract (stx-transfer? outstanding tx-sender (get merchant plan)))) + (ok outstanding) + ) +) + +;; Read-only helper to fetch airtime plan +(define-read-only (get-airtime-plan (plan-id uint)) + (map-get? airtime-plans plan-id) +) + +;; Read-only helper to know how many plans exist +(define-read-only (get-latest-airtime-plan-id) + (ok (var-get latest-airtime-plan-id)) +) ;; Increase the locked STX balance for a stream (define-public (refuel (stream-id uint) (amount uint) ) - (let ( - (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) - ) - (asserts! (is-eq contract-caller (get sender stream)) ERR_UNAUTHORIZED) - (try! (stx-transfer? amount contract-caller (as-contract tx-sender))) - (map-set streams stream-id - (merge stream {balance: (+ (get balance stream) amount)}) - ) - (ok amount) + (let ((stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID))) + (asserts! (is-eq contract-caller (get sender stream)) ERR_UNAUTHORIZED) + (try! (stx-transfer? amount contract-caller (as-contract tx-sender))) + (map-set streams stream-id + (merge stream { balance: (+ (get balance stream) amount) }) + ) + (ok amount) ) ) @@ -77,10 +225,10 @@ (who principal) ) (let ( - (stream (unwrap! (map-get? streams stream-id) u0)) - (block-delta (calculate-block-delta (get timeframe stream))) - (recipient-balance (* block-delta (get payment-per-block stream))) - ) + (stream (unwrap! (map-get? streams stream-id) u0)) + (block-delta (calculate-block-delta (get timeframe stream))) + (recipient-balance (* block-delta (get payment-per-block stream))) + ) (if (is-eq who (get recipient stream)) (- recipient-balance (get withdrawn-balance stream)) (if (is-eq who (get sender stream)) @@ -92,15 +240,14 @@ ) ;; Calculate the number of blocks a stream has been active -(define-read-only (calculate-block-delta - (timeframe (tuple (start-block uint) (stop-block uint))) - ) +(define-read-only (calculate-block-delta (timeframe { + start-block: uint, + stop-block: uint, +})) (let ( - (start-block (get start-block timeframe)) - (stop-block (get stop-block timeframe)) - - (delta - (if (<= block-height start-block) + (start-block (get start-block timeframe)) + (stop-block (get stop-block timeframe)) + (delta (if (<= block-height start-block) ;; then u0 ;; else @@ -109,25 +256,22 @@ (- block-height start-block) ;; else (- stop-block start-block) - ) - ) + ) + )) ) - ) delta ) ) ;; Withdraw received tokens -(define-public (withdraw - (stream-id uint) - ) +(define-public (withdraw (stream-id uint)) (let ( - (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) - (balance (balance-of stream-id contract-caller)) - ) + (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) + (balance (balance-of stream-id contract-caller)) + ) (asserts! (is-eq contract-caller (get recipient stream)) ERR_UNAUTHORIZED) - (map-set streams stream-id - (merge stream {withdrawn-balance: (+ (get withdrawn-balance stream) balance)}) + (map-set streams stream-id + (merge stream { withdrawn-balance: (+ (get withdrawn-balance stream) balance) }) ) (try! (as-contract (stx-transfer? balance tx-sender (get recipient stream)))) (ok balance) @@ -135,19 +279,18 @@ ) ;; Withdraw excess locked tokens -(define-public (refund - (stream-id uint) - ) +(define-public (refund (stream-id uint)) (let ( - (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) - (balance (balance-of stream-id (get sender stream))) - ) + (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) + (balance (balance-of stream-id (get sender stream))) + ) (asserts! (is-eq contract-caller (get sender stream)) ERR_UNAUTHORIZED) - (asserts! (< (get stop-block (get timeframe stream)) block-height) ERR_STREAM_STILL_ACTIVE) - (map-set streams stream-id (merge stream { - balance: (- (get balance stream) balance), - } - )) + (asserts! (< (get stop-block (get timeframe stream)) block-height) + ERR_STREAM_STILL_ACTIVE + ) + (map-set streams stream-id + (merge stream { balance: (- (get balance stream) balance) }) + ) (try! (as-contract (stx-transfer? balance tx-sender (get sender stream)))) (ok balance) ) @@ -157,36 +300,53 @@ (define-read-only (hash-stream (stream-id uint) (new-payment-per-block uint) - (new-timeframe (tuple (start-block uint) (stop-block uint))) + (new-timeframe { + start-block: uint, + stop-block: uint, + }) ) (let ( - (stream (unwrap! (map-get? streams stream-id) (sha256 0))) - (msg (concat (concat (unwrap-panic (to-consensus-buff? stream)) (unwrap-panic (to-consensus-buff? new-payment-per-block))) (unwrap-panic (to-consensus-buff? new-timeframe)))) - ) + (stream (unwrap! (map-get? streams stream-id) (sha256 0))) + (msg (concat + (concat (unwrap-panic (to-consensus-buff? stream)) + (unwrap-panic (to-consensus-buff? new-payment-per-block)) + ) + (unwrap-panic (to-consensus-buff? new-timeframe)) + )) + ) (sha256 msg) ) ) ;; Signature verification -(define-read-only (validate-signature (hash (buff 32)) (signature (buff 65)) (signer principal)) - (is-eq - (principal-of? (unwrap! (secp256k1-recover? hash signature) false)) - (ok signer) - ) +(define-read-only (validate-signature + (hash (buff 32)) + (signature (buff 65)) + (signer principal) + ) + (is-eq (principal-of? (unwrap! (secp256k1-recover? hash signature) false)) + (ok signer) + ) ) ;; Update stream configuration (define-public (update-details (stream-id uint) (payment-per-block uint) - (timeframe (tuple (start-block uint) (stop-block uint))) + (timeframe { + start-block: uint, + stop-block: uint, + }) (signer principal) (signature (buff 65)) ) - (let ( - (stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID)) - ) - (asserts! (validate-signature (hash-stream stream-id payment-per-block timeframe) signature signer) ERR_INVALID_SIGNATURE) + (let ((stream (unwrap! (map-get? streams stream-id) ERR_INVALID_STREAM_ID))) + (asserts! + (validate-signature (hash-stream stream-id payment-per-block timeframe) + signature signer + ) + ERR_INVALID_SIGNATURE + ) (asserts! (or (and (is-eq (get sender stream) contract-caller) (is-eq (get recipient stream) signer)) @@ -194,10 +354,12 @@ ) ERR_UNAUTHORIZED ) - (map-set streams stream-id (merge stream { + (map-set streams stream-id + (merge stream { payment-per-block: payment-per-block, - timeframe: timeframe - })) + timeframe: timeframe, + }) + ) (ok true) ) -) \ No newline at end of file +) diff --git a/deployments/default.devnet-plan.yaml b/deployments/default.devnet-plan.yaml new file mode 100644 index 0000000..a9ae3ea --- /dev/null +++ b/deployments/default.devnet-plan.yaml @@ -0,0 +1,18 @@ +--- +id: 0 +name: Devnet deployment +network: devnet +stacks-node: "http://localhost:20443" +bitcoin-node: "http://devnet:devnet@localhost:18443" +plan: + batches: + - id: 0 + transactions: + - contract-publish: + contract-name: stream + expected-sender: STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8 + cost: 107310 + path: contracts/stream.clar + anchor-block-only: true + clarity-version: 2 + epoch: "2.4" diff --git a/deployments/default.simnet-plan.yaml b/deployments/default.simnet-plan.yaml index 6c1a12f..0be741d 100644 --- a/deployments/default.simnet-plan.yaml +++ b/deployments/default.simnet-plan.yaml @@ -5,35 +5,21 @@ network: simnet genesis: wallets: - name: deployer - address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM - balance: "100000000000000" - - name: faucet - address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6 - balance: "100000000000000" + address: STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8 + balance: "0" + sbtc-balance: "1000000000" - name: wallet_1 - address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5 - balance: "100000000000000" + address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM + balance: "0" + sbtc-balance: "1000000000" - name: wallet_2 - address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG - balance: "100000000000000" + address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5 + balance: "0" + sbtc-balance: "1000000000" - name: wallet_3 - address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC - balance: "100000000000000" - - name: wallet_4 - address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND - balance: "100000000000000" - - name: wallet_5 - address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB - balance: "100000000000000" - - name: wallet_6 - address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0 - balance: "100000000000000" - - name: wallet_7 - address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ - balance: "100000000000000" - - name: wallet_8 - address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP - balance: "100000000000000" + address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG + balance: "0" + sbtc-balance: "1000000000" contracts: - costs - pox @@ -51,7 +37,7 @@ plan: transactions: - emulated-contract-publish: contract-name: stream - emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM + emulated-sender: STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8 path: contracts/stream.clar clarity-version: 2 epoch: "2.4" diff --git a/deployments/default.testnet-plan.yaml b/deployments/default.testnet-plan.yaml new file mode 100644 index 0000000..30648d9 --- /dev/null +++ b/deployments/default.testnet-plan.yaml @@ -0,0 +1,18 @@ +--- +id: 0 +name: Testnet deployment +network: testnet +stacks-node: "https://api.testnet.hiro.so" +bitcoin-node: "http://blockstack:blockstacksystem@bitcoind.testnet.stacks.co:18332" +plan: + batches: + - id: 0 + transactions: + - contract-publish: + contract-name: stream-v2upgraded + expected-sender: STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8 + cost: 33074510 + path: contracts/stream.clar + anchor-block-only: true + clarity-version: 2 + epoch: "2.4" diff --git a/dist/app-icon.svg b/dist/app-icon.svg new file mode 100644 index 0000000..0bc3446 --- /dev/null +++ b/dist/app-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/dist/assets/add-Ckzpqnjf.js b/dist/assets/add-Ckzpqnjf.js new file mode 100644 index 0000000..5ff6497 --- /dev/null +++ b/dist/assets/add-Ckzpqnjf.js @@ -0,0 +1,16 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + `;export{o as addSvg}; +//# sourceMappingURL=add-Ckzpqnjf.js.map diff --git a/dist/assets/add-Ckzpqnjf.js.map b/dist/assets/add-Ckzpqnjf.js.map new file mode 100644 index 0000000..0f24db8 --- /dev/null +++ b/dist/assets/add-Ckzpqnjf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-Ckzpqnjf.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/add.js"],"sourcesContent":["import { svg } from 'lit';\nexport const addSvg = svg `\n `;\n//# sourceMappingURL=add.js.map"],"names":["addSvg","svg"],"mappings":"wCACY,MAACA,EAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/all-wallets-CiVglLrG.js b/dist/assets/all-wallets-CiVglLrG.js new file mode 100644 index 0000000..72fcf10 --- /dev/null +++ b/dist/assets/all-wallets-CiVglLrG.js @@ -0,0 +1,7 @@ +import{p as a}from"./index-B95lHF7v.js";const o=a` + +`;export{o as allWalletsSvg}; +//# sourceMappingURL=all-wallets-CiVglLrG.js.map diff --git a/dist/assets/all-wallets-CiVglLrG.js.map b/dist/assets/all-wallets-CiVglLrG.js.map new file mode 100644 index 0000000..eb3ba89 --- /dev/null +++ b/dist/assets/all-wallets-CiVglLrG.js.map @@ -0,0 +1 @@ +{"version":3,"file":"all-wallets-CiVglLrG.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/all-wallets.js"],"sourcesContent":["import { svg } from 'lit';\nexport const allWalletsSvg = svg `\n \n`;\n//# sourceMappingURL=all-wallets.js.map"],"names":["allWalletsSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/app-store-CiIRArEA.js b/dist/assets/app-store-CiIRArEA.js new file mode 100644 index 0000000..a2a9ac6 --- /dev/null +++ b/dist/assets/app-store-CiIRArEA.js @@ -0,0 +1,18 @@ +import{p as a}from"./index-B95lHF7v.js";const e=a` + + + + + + + + + +`;export{e as appStoreSvg}; +//# sourceMappingURL=app-store-CiIRArEA.js.map diff --git a/dist/assets/app-store-CiIRArEA.js.map b/dist/assets/app-store-CiIRArEA.js.map new file mode 100644 index 0000000..cbfeba0 --- /dev/null +++ b/dist/assets/app-store-CiIRArEA.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app-store-CiIRArEA.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/app-store.js"],"sourcesContent":["import { svg } from 'lit';\nexport const appStoreSvg = svg `\n\n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=app-store.js.map"],"names":["appStoreSvg","svg"],"mappings":"wCACY,MAACA,EAAcC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/apple-2box8Tg1.js b/dist/assets/apple-2box8Tg1.js new file mode 100644 index 0000000..6bd0e8f --- /dev/null +++ b/dist/assets/apple-2box8Tg1.js @@ -0,0 +1,19 @@ +import{p as l}from"./index-B95lHF7v.js";const f=l` + + + + + + + + + + + + + +`;export{f as appleSvg}; +//# sourceMappingURL=apple-2box8Tg1.js.map diff --git a/dist/assets/apple-2box8Tg1.js.map b/dist/assets/apple-2box8Tg1.js.map new file mode 100644 index 0000000..00ac8a6 --- /dev/null +++ b/dist/assets/apple-2box8Tg1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"apple-2box8Tg1.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/apple.js"],"sourcesContent":["import { svg } from 'lit';\nexport const appleSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=apple.js.map"],"names":["appleSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/arrow-bottom-DieQy2op.js b/dist/assets/arrow-bottom-DieQy2op.js new file mode 100644 index 0000000..20fa5e7 --- /dev/null +++ b/dist/assets/arrow-bottom-DieQy2op.js @@ -0,0 +1,9 @@ +import{p as o}from"./index-B95lHF7v.js";const e=o` + +`;export{e as arrowBottomSvg}; +//# sourceMappingURL=arrow-bottom-DieQy2op.js.map diff --git a/dist/assets/arrow-bottom-DieQy2op.js.map b/dist/assets/arrow-bottom-DieQy2op.js.map new file mode 100644 index 0000000..29aa333 --- /dev/null +++ b/dist/assets/arrow-bottom-DieQy2op.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-bottom-DieQy2op.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/arrow-bottom.js"],"sourcesContent":["import { svg } from 'lit';\nexport const arrowBottomSvg = svg `\n \n`;\n//# sourceMappingURL=arrow-bottom.js.map"],"names":["arrowBottomSvg","svg"],"mappings":"wCACY,MAACA,EAAiBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/arrow-bottom-circle-BJi0EAtS.js b/dist/assets/arrow-bottom-circle-BJi0EAtS.js new file mode 100644 index 0000000..1fd885c --- /dev/null +++ b/dist/assets/arrow-bottom-circle-BJi0EAtS.js @@ -0,0 +1,12 @@ +import{p as C}from"./index-B95lHF7v.js";const e=C` + `;export{e as arrowBottomCircleSvg}; +//# sourceMappingURL=arrow-bottom-circle-BJi0EAtS.js.map diff --git a/dist/assets/arrow-bottom-circle-BJi0EAtS.js.map b/dist/assets/arrow-bottom-circle-BJi0EAtS.js.map new file mode 100644 index 0000000..dc23adf --- /dev/null +++ b/dist/assets/arrow-bottom-circle-BJi0EAtS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-bottom-circle-BJi0EAtS.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/arrow-bottom-circle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const arrowBottomCircleSvg = svg `\n `;\n//# sourceMappingURL=arrow-bottom-circle.js.map"],"names":["arrowBottomCircleSvg","svg"],"mappings":"wCACY,MAACA,EAAuBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/arrow-left-CVJ9QikP.js b/dist/assets/arrow-left-CVJ9QikP.js new file mode 100644 index 0000000..118bd4d --- /dev/null +++ b/dist/assets/arrow-left-CVJ9QikP.js @@ -0,0 +1,9 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + +`;export{o as arrowLeftSvg}; +//# sourceMappingURL=arrow-left-CVJ9QikP.js.map diff --git a/dist/assets/arrow-left-CVJ9QikP.js.map b/dist/assets/arrow-left-CVJ9QikP.js.map new file mode 100644 index 0000000..ba09127 --- /dev/null +++ b/dist/assets/arrow-left-CVJ9QikP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-left-CVJ9QikP.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/arrow-left.js"],"sourcesContent":["import { svg } from 'lit';\nexport const arrowLeftSvg = svg `\n \n`;\n//# sourceMappingURL=arrow-left.js.map"],"names":["arrowLeftSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/arrow-right-B8CpHWgq.js b/dist/assets/arrow-right-B8CpHWgq.js new file mode 100644 index 0000000..6cb1daa --- /dev/null +++ b/dist/assets/arrow-right-B8CpHWgq.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + +`;export{e as arrowRightSvg}; +//# sourceMappingURL=arrow-right-B8CpHWgq.js.map diff --git a/dist/assets/arrow-right-B8CpHWgq.js.map b/dist/assets/arrow-right-B8CpHWgq.js.map new file mode 100644 index 0000000..4368f5c --- /dev/null +++ b/dist/assets/arrow-right-B8CpHWgq.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-right-B8CpHWgq.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/arrow-right.js"],"sourcesContent":["import { svg } from 'lit';\nexport const arrowRightSvg = svg `\n \n`;\n//# sourceMappingURL=arrow-right.js.map"],"names":["arrowRightSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/arrow-top-DAeqHcc6.js b/dist/assets/arrow-top-DAeqHcc6.js new file mode 100644 index 0000000..505ec1a --- /dev/null +++ b/dist/assets/arrow-top-DAeqHcc6.js @@ -0,0 +1,9 @@ +import{p as o}from"./index-B95lHF7v.js";const e=o` + +`;export{e as arrowTopSvg}; +//# sourceMappingURL=arrow-top-DAeqHcc6.js.map diff --git a/dist/assets/arrow-top-DAeqHcc6.js.map b/dist/assets/arrow-top-DAeqHcc6.js.map new file mode 100644 index 0000000..6dcc1a1 --- /dev/null +++ b/dist/assets/arrow-top-DAeqHcc6.js.map @@ -0,0 +1 @@ +{"version":3,"file":"arrow-top-DAeqHcc6.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/arrow-top.js"],"sourcesContent":["import { svg } from 'lit';\nexport const arrowTopSvg = svg `\n \n`;\n//# sourceMappingURL=arrow-top.js.map"],"names":["arrowTopSvg","svg"],"mappings":"wCACY,MAACA,EAAcC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/bank-KF44bPGn.js b/dist/assets/bank-KF44bPGn.js new file mode 100644 index 0000000..1ac13b8 --- /dev/null +++ b/dist/assets/bank-KF44bPGn.js @@ -0,0 +1,15 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + `;export{o as bankSvg}; +//# sourceMappingURL=bank-KF44bPGn.js.map diff --git a/dist/assets/bank-KF44bPGn.js.map b/dist/assets/bank-KF44bPGn.js.map new file mode 100644 index 0000000..8f0dffe --- /dev/null +++ b/dist/assets/bank-KF44bPGn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bank-KF44bPGn.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/bank.js"],"sourcesContent":["import { svg } from 'lit';\nexport const bankSvg = svg `\n `;\n//# sourceMappingURL=bank.js.map"],"names":["bankSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/basic-BikkqjP4.js b/dist/assets/basic-BikkqjP4.js new file mode 100644 index 0000000..d276269 --- /dev/null +++ b/dist/assets/basic-BikkqjP4.js @@ -0,0 +1,2166 @@ +import{i as L,e as M,a as B,b as I,x as c,C as O,A as S,O as q,c as E,d as _,f as fe,E as J,R as A,j as ze,H as yi,k as z,S as bt,W as De,l as te,m as li,T as Dt,n as Me,M as xi,o as Ci,p as ke,q as Gi,s as ci,t as Yi}from"./index-B95lHF7v.js";import{n as u,c as C,o as x,r as y,U as le,e as Ji,f as Qi,a as Xi}from"./index-BRPyA7QR.js";const Zi=L` + :host { + position: relative; + background-color: var(--wui-color-gray-glass-002); + display: flex; + justify-content: center; + align-items: center; + width: var(--local-size); + height: var(--local-size); + border-radius: inherit; + border-radius: var(--local-border-radius); + } + + :host > wui-flex { + overflow: hidden; + border-radius: inherit; + border-radius: var(--local-border-radius); + } + + :host::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-gray-glass-010); + pointer-events: none; + } + + :host([name='Extension'])::after { + border: 1px solid var(--wui-color-accent-glass-010); + } + + :host([data-wallet-icon='allWallets']) { + background-color: var(--wui-all-wallets-bg-100); + } + + :host([data-wallet-icon='allWallets'])::after { + border: 1px solid var(--wui-color-accent-glass-010); + } + + wui-icon[data-parent-size='inherit'] { + width: 75%; + height: 75%; + align-items: center; + } + + wui-icon[data-parent-size='sm'] { + width: 18px; + height: 18px; + } + + wui-icon[data-parent-size='md'] { + width: 24px; + height: 24px; + } + + wui-icon[data-parent-size='lg'] { + width: 42px; + height: 42px; + } + + wui-icon[data-parent-size='full'] { + width: 100%; + height: 100%; + } + + :host > wui-icon-box { + position: absolute; + overflow: hidden; + right: -1px; + bottom: -2px; + z-index: 1; + border: 2px solid var(--wui-color-bg-150, #1e1f1f); + padding: 1px; + } +`;var $e=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ce=class extends I{constructor(){super(...arguments),this.size="md",this.name="",this.installed=!1,this.badgeSize="xs"}render(){let e="xxs";return this.size==="lg"?e="m":this.size==="md"?e="xs":e="xxs",this.style.cssText=` + --local-border-radius: var(--wui-border-radius-${e}); + --local-size: var(--wui-wallet-image-size-${this.size}); + `,this.walletIcon&&(this.dataset.walletIcon=this.walletIcon),c` + ${this.templateVisual()} + `}templateVisual(){return this.imageSrc?c``:this.walletIcon?c``:c``}};ce.styles=[M,B,Zi];$e([u()],ce.prototype,"size",void 0);$e([u()],ce.prototype,"name",void 0);$e([u()],ce.prototype,"imageSrc",void 0);$e([u()],ce.prototype,"walletIcon",void 0);$e([u({type:Boolean})],ce.prototype,"installed",void 0);$e([u()],ce.prototype,"badgeSize",void 0);ce=$e([C("wui-wallet-image")],ce);const en=L` + :host { + position: relative; + border-radius: var(--wui-border-radius-xxs); + width: 40px; + height: 40px; + overflow: hidden; + background: var(--wui-color-gray-glass-002); + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; + gap: var(--wui-spacing-4xs); + padding: 3.75px !important; + } + + :host::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-gray-glass-010); + pointer-events: none; + } + + :host > wui-wallet-image { + width: 14px; + height: 14px; + border-radius: var(--wui-border-radius-5xs); + } + + :host > wui-flex { + padding: 2px; + position: fixed; + overflow: hidden; + left: 34px; + bottom: 8px; + background: var(--dark-background-150, #1e1f1f); + border-radius: 50%; + z-index: 2; + display: flex; + } +`;var $i=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};const Ot=4;let nt=class extends I{constructor(){super(...arguments),this.walletImages=[]}render(){const e=this.walletImages.lengthc` + + `)} + ${e?[...Array(Ot-this.walletImages.length)].map(()=>c` `):null} + + + `}};nt.styles=[B,en];$i([u({type:Array})],nt.prototype,"walletImages",void 0);nt=$i([C("wui-all-wallets-image")],nt);const tn=L` + button { + column-gap: var(--wui-spacing-s); + padding: 7px var(--wui-spacing-l) 7px var(--wui-spacing-xs); + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + color: var(--wui-color-fg-100); + } + + button > wui-text:nth-child(2) { + display: flex; + flex: 1; + } + + button:disabled { + background-color: var(--wui-color-gray-glass-015); + color: var(--wui-color-gray-glass-015); + } + + button:disabled > wui-tag { + background-color: var(--wui-color-gray-glass-010); + color: var(--wui-color-fg-300); + } + + wui-icon { + color: var(--wui-color-fg-200) !important; + } +`;var U=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let j=class extends I{constructor(){super(...arguments),this.walletImages=[],this.imageSrc="",this.name="",this.tabIdx=void 0,this.installed=!1,this.disabled=!1,this.showAllWallets=!1,this.loading=!1,this.loadingSpinnerColor="accent-100"}render(){return c` + + `}templateAllWallets(){return this.showAllWallets&&this.imageSrc?c` `:this.showAllWallets&&this.walletIcon?c` `:null}templateWalletImage(){return!this.showAllWallets&&this.imageSrc?c``:!this.showAllWallets&&!this.imageSrc?c``:null}templateStatus(){return this.loading?c``:this.tagLabel&&this.tagVariant?c`${this.tagLabel}`:this.icon?c``:null}};j.styles=[B,M,tn];U([u({type:Array})],j.prototype,"walletImages",void 0);U([u()],j.prototype,"imageSrc",void 0);U([u()],j.prototype,"name",void 0);U([u()],j.prototype,"tagLabel",void 0);U([u()],j.prototype,"tagVariant",void 0);U([u()],j.prototype,"icon",void 0);U([u()],j.prototype,"walletIcon",void 0);U([u()],j.prototype,"tabIdx",void 0);U([u({type:Boolean})],j.prototype,"installed",void 0);U([u({type:Boolean})],j.prototype,"disabled",void 0);U([u({type:Boolean})],j.prototype,"showAllWallets",void 0);U([u({type:Boolean})],j.prototype,"loading",void 0);U([u({type:String})],j.prototype,"loadingSpinnerColor",void 0);j=U([C("wui-list-wallet")],j);var Pe=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let me=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.count=S.state.count,this.filteredCount=S.state.filteredWallets.length,this.isFetchingRecommendedWallets=S.state.isFetchingRecommendedWallets,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e),S.subscribeKey("count",e=>this.count=e),S.subscribeKey("filteredWallets",e=>this.filteredCount=e.length),S.subscribeKey("isFetchingRecommendedWallets",e=>this.isFetchingRecommendedWallets=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.find(h=>h.id==="walletConnect"),{allWallets:i}=q.state;if(!e||i==="HIDE"||i==="ONLY_MOBILE"&&!E.isMobile())return null;const o=S.state.featured.length,n=this.count+o,t=n<10?n:Math.floor(n/10)*10,a=this.filteredCount>0?this.filteredCount:t;let s=`${a}`;this.filteredCount>0?s=`${this.filteredCount}`:a + `}onAllWallets(){J.sendEvent({type:"track",event:"CLICK_ALL_WALLETS"}),A.push("AllWallets")}};Pe([u()],me.prototype,"tabIdx",void 0);Pe([y()],me.prototype,"connectors",void 0);Pe([y()],me.prototype,"count",void 0);Pe([y()],me.prototype,"filteredCount",void 0);Pe([y()],me.prototype,"isFetchingRecommendedWallets",void 0);me=Pe([C("w3m-all-wallets-widget")],me);var mt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ue=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.connections=_.state.connections,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e),_.subscribeKey("connections",e=>this.connections=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(i=>i.type==="ANNOUNCED");return e!=null&&e.length?c` + + ${e.filter(ze.showConnector).map(i=>{const n=(this.connections.get(i.chain)??[]).some(t=>yi.isLowerCaseMatch(t.connectorId,i.id));return c` + this.onConnector(i)} + tagVariant=${n?"shade":"success"} + tagLabel=${n?"connected":"installed"} + data-testid=${`wallet-selector-${i.id}`} + .installed=${!0} + tabIdx=${x(this.tabIdx)} + > + + `})} + + `:(this.style.cssText="display: none",null)}onConnector(e){e.id==="walletConnect"?E.isMobile()?A.push("AllWallets"):A.push("ConnectingWalletConnect"):A.push("ConnectingExternal",{connector:e})}};mt([u()],Ue.prototype,"tabIdx",void 0);mt([y()],Ue.prototype,"connectors",void 0);mt([y()],Ue.prototype,"connections",void 0);Ue=mt([C("w3m-connect-announced-widget")],Ue);var vt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Fe=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.loading=!1,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e)),E.isTelegram()&&E.isIos()&&(this.loading=!_.state.wcUri,this.unsubscribe.push(_.subscribeKey("wcUri",e=>this.loading=!e)))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const{customWallets:e}=q.state;if(!(e!=null&&e.length))return this.style.cssText="display: none",null;const i=this.filterOutDuplicateWallets(e),o=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + ${i.map(n=>c` + this.onConnectWallet(n)} + data-testid=${`wallet-selector-${n.id}`} + tabIdx=${x(this.tabIdx)} + ?loading=${this.loading} + ?disabled=${o} + > + + `)} + `}filterOutDuplicateWallets(e){const i=bt.getRecentWallets(),o=this.connectors.map(s=>{var l;return(l=s.info)==null?void 0:l.rdns}).filter(Boolean),n=i.map(s=>s.rdns).filter(Boolean),t=o.concat(n);if(t.includes("io.metamask.mobile")&&E.isMobile()){const s=t.indexOf("io.metamask.mobile");t[s]="io.metamask"}return e.filter(s=>!t.includes(String(s==null?void 0:s.rdns)))}onConnectWallet(e){this.loading||A.push("ConnectingWalletConnect",{wallet:e})}};vt([u()],Fe.prototype,"tabIdx",void 0);vt([y()],Fe.prototype,"connectors",void 0);vt([y()],Fe.prototype,"loading",void 0);Fe=vt([C("w3m-connect-custom-widget")],Fe);var Jt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ot=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const o=this.connectors.filter(t=>t.type==="EXTERNAL").filter(ze.showConnector).filter(t=>t.id!==fe.CONNECTOR_ID.COINBASE_SDK);if(!(o!=null&&o.length))return this.style.cssText="display: none",null;const n=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + + ${o.map(t=>c` + this.onConnector(t)} + tabIdx=${x(this.tabIdx)} + ?disabled=${n} + > + + `)} + + `}onConnector(e){A.push("ConnectingExternal",{connector:e})}};Jt([u()],ot.prototype,"tabIdx",void 0);Jt([y()],ot.prototype,"connectors",void 0);ot=Jt([C("w3m-connect-external-widget")],ot);var Qt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let rt=class extends I{constructor(){super(...arguments),this.tabIdx=void 0,this.wallets=[]}render(){if(!this.wallets.length)return this.style.cssText="display: none",null;const e=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + + ${this.wallets.map(i=>c` + this.onConnectWallet(i)} + tabIdx=${x(this.tabIdx)} + ?disabled=${e} + > + + `)} + + `}onConnectWallet(e){O.selectWalletConnector(e)}};Qt([u()],rt.prototype,"tabIdx",void 0);Qt([u()],rt.prototype,"wallets",void 0);rt=Qt([C("w3m-connect-featured-widget")],rt);var yt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ve=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=[],this.connections=_.state.connections,this.unsubscribe.push(_.subscribeKey("connections",e=>this.connections=e))}render(){const e=this.connectors.filter(ze.showConnector);return e.length===0?(this.style.cssText="display: none",null):c` + + ${e.map(i=>{const n=(this.connections.get(i.chain)??[]).some(t=>yi.isLowerCaseMatch(t.connectorId,i.id));return c` + this.onConnector(i)} + tabIdx=${x(this.tabIdx)} + > + + `})} + + `}onConnector(e){O.setActiveConnector(e),A.push("ConnectingExternal",{connector:e})}};yt([u()],Ve.prototype,"tabIdx",void 0);yt([u()],Ve.prototype,"connectors",void 0);yt([y()],Ve.prototype,"connections",void 0);Ve=yt([C("w3m-connect-injected-widget")],Ve);var Xt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let at=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.connectors.filter(i=>i.type==="MULTI_CHAIN"&&i.name!=="WalletConnect");return e!=null&&e.length?c` + + ${e.map(i=>c` + this.onConnector(i)} + tabIdx=${x(this.tabIdx)} + > + + `)} + + `:(this.style.cssText="display: none",null)}onConnector(e){O.setActiveConnector(e),A.push("ConnectingMultiChain")}};Xt([u()],at.prototype,"tabIdx",void 0);Xt([y()],at.prototype,"connectors",void 0);at=Xt([C("w3m-connect-multi-chain-widget")],at);var xt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let qe=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.loading=!1,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e)),E.isTelegram()&&E.isIos()&&(this.loading=!_.state.wcUri,this.unsubscribe.push(_.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const i=bt.getRecentWallets().filter(n=>!De.isExcluded(n)).filter(n=>!this.hasWalletConnector(n)).filter(n=>this.isWalletCompatibleWithCurrentChain(n));if(!i.length)return this.style.cssText="display: none",null;const o=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + + ${i.map(n=>c` + this.onConnectWallet(n)} + tagLabel="recent" + tagVariant="shade" + tabIdx=${x(this.tabIdx)} + ?loading=${this.loading} + ?disabled=${o} + > + + `)} + + `}onConnectWallet(e){this.loading||O.selectWalletConnector(e)}hasWalletConnector(e){return this.connectors.some(i=>i.id===e.id||i.name===e.name)}isWalletCompatibleWithCurrentChain(e){const i=te.state.activeChain;return i&&e.chains?e.chains.some(o=>{const n=o.split(":")[0];return i===n}):!0}};xt([u()],qe.prototype,"tabIdx",void 0);xt([y()],qe.prototype,"connectors",void 0);xt([y()],qe.prototype,"loading",void 0);qe=xt([C("w3m-connect-recent-widget")],qe);var Ct=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let He=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.wallets=[],this.loading=!1,E.isTelegram()&&E.isIos()&&(this.loading=!_.state.wcUri,this.unsubscribe.push(_.subscribeKey("wcUri",e=>this.loading=!e)))}render(){const{connectors:e}=O.state,{customWallets:i,featuredWalletIds:o}=q.state,n=bt.getRecentWallets(),t=e.find(g=>g.id==="walletConnect"),s=e.filter(g=>g.type==="INJECTED"||g.type==="ANNOUNCED"||g.type==="MULTI_CHAIN").filter(g=>g.name!=="Browser Wallet");if(!t)return null;if(o||i||!this.wallets.length)return this.style.cssText="display: none",null;const l=s.length+n.length,h=Math.max(0,2-l),d=De.filterOutDuplicateWallets(this.wallets).slice(0,h);if(!d.length)return this.style.cssText="display: none",null;const T=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + + ${d.map(g=>c` + this.onConnectWallet(g)} + tabIdx=${x(this.tabIdx)} + ?loading=${this.loading} + ?disabled=${T} + > + + `)} + + `}onConnectWallet(e){if(this.loading)return;const i=O.getConnector({id:e.id,rdns:e.rdns});i?A.push("ConnectingExternal",{connector:i}):A.push("ConnectingWalletConnect",{wallet:e})}};Ct([u()],He.prototype,"tabIdx",void 0);Ct([u()],He.prototype,"wallets",void 0);Ct([y()],He.prototype,"loading",void 0);He=Ct([C("w3m-connect-recommended-widget")],He);var $t=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ke=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.connectorImages=li.state.connectorImages,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e),li.subscribeKey("connectorImages",e=>this.connectorImages=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){if(E.isMobile())return this.style.cssText="display: none",null;const e=this.connectors.find(n=>n.id==="walletConnect");if(!e)return this.style.cssText="display: none",null;const i=e.imageUrl||this.connectorImages[(e==null?void 0:e.imageId)??""],o=_.hasAnyConnection(fe.CONNECTOR_ID.WALLET_CONNECT);return c` + this.onConnector(e)} + tagLabel="qr code" + tagVariant="main" + tabIdx=${x(this.tabIdx)} + data-testid="wallet-selector-walletconnect" + ?disabled=${o} + > + + `}onConnector(e){O.setActiveConnector(e),A.push("ConnectingWalletConnect")}};$t([u()],Ke.prototype,"tabIdx",void 0);$t([y()],Ke.prototype,"connectors",void 0);$t([y()],Ke.prototype,"connectorImages",void 0);Ke=$t([C("w3m-connect-walletconnect-widget")],Ke);const nn=L` + :host { + margin-top: var(--wui-spacing-3xs); + } + wui-separator { + margin: var(--wui-spacing-m) calc(var(--wui-spacing-m) * -1) var(--wui-spacing-xs) + calc(var(--wui-spacing-m) * -1); + width: calc(100% + var(--wui-spacing-s) * 2); + } +`;var Ye=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ve=class extends I{constructor(){super(),this.unsubscribe=[],this.tabIdx=void 0,this.connectors=O.state.connectors,this.recommended=S.state.recommended,this.featured=S.state.featured,this.unsubscribe.push(O.subscribeKey("connectors",e=>this.connectors=e),S.subscribeKey("recommended",e=>this.recommended=e),S.subscribeKey("featured",e=>this.featured=e))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` + ${this.connectorListTemplate()} + `}connectorListTemplate(){const{custom:e,recent:i,announced:o,injected:n,multiChain:t,recommended:a,featured:s,external:l}=ze.getConnectorsByType(this.connectors,this.recommended,this.featured);return ze.getConnectorTypeOrder({custom:e,recent:i,announced:o,injected:n,multiChain:t,recommended:a,featured:s,external:l}).map(d=>{switch(d){case"injected":return c` + ${t.length?c``:null} + ${o.length?c``:null} + ${n.length?c``:null} + `;case"walletConnect":return c``;case"recent":return c``;case"featured":return c``;case"custom":return c``;case"external":return c``;case"recommended":return c``;default:return console.warn(`Unknown connector type: ${d}`),null}})}};ve.styles=nn;Ye([u()],ve.prototype,"tabIdx",void 0);Ye([y()],ve.prototype,"connectors",void 0);Ye([y()],ve.prototype,"recommended",void 0);Ye([y()],ve.prototype,"featured",void 0);ve=Ye([C("w3m-connector-list")],ve);const on=L` + :host { + display: inline-flex; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-3xl); + padding: var(--wui-spacing-3xs); + position: relative; + height: 36px; + min-height: 36px; + overflow: hidden; + } + + :host::before { + content: ''; + position: absolute; + pointer-events: none; + top: 4px; + left: 4px; + display: block; + width: var(--local-tab-width); + height: 28px; + border-radius: var(--wui-border-radius-3xl); + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + transform: translateX(calc(var(--local-tab) * var(--local-tab-width))); + transition: transform var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color, opacity; + } + + :host([data-type='flex'])::before { + left: 3px; + transform: translateX(calc((var(--local-tab) * 34px) + (var(--local-tab) * 4px))); + } + + :host([data-type='flex']) { + display: flex; + padding: 0px 0px 0px 12px; + gap: 4px; + } + + :host([data-type='flex']) > button > wui-text { + position: absolute; + left: 18px; + opacity: 0; + } + + button[data-active='true'] > wui-icon, + button[data-active='true'] > wui-text { + color: var(--wui-color-fg-100); + } + + button[data-active='false'] > wui-icon, + button[data-active='false'] > wui-text { + color: var(--wui-color-fg-200); + } + + button[data-active='true']:disabled, + button[data-active='false']:disabled { + background-color: transparent; + opacity: 0.5; + cursor: not-allowed; + } + + button[data-active='true']:disabled > wui-text { + color: var(--wui-color-fg-200); + } + + button[data-active='false']:disabled > wui-text { + color: var(--wui-color-fg-300); + } + + button > wui-icon, + button > wui-text { + pointer-events: none; + transition: color var(--wui-e ase-out-power-1) var(--wui-duration-md); + will-change: color; + } + + button { + width: var(--local-tab-width); + transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color; + } + + :host([data-type='flex']) > button { + width: 34px; + position: relative; + display: flex; + justify-content: flex-start; + } + + button:hover:enabled, + button:active:enabled { + background-color: transparent !important; + } + + button:hover:enabled > wui-icon, + button:active:enabled > wui-icon { + transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); + color: var(--wui-color-fg-125); + } + + button:hover:enabled > wui-text, + button:active:enabled > wui-text { + transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg); + color: var(--wui-color-fg-125); + } + + button { + border-radius: var(--wui-border-radius-3xl); + } +`;var we=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ie=class extends I{constructor(){super(...arguments),this.tabs=[],this.onTabChange=()=>null,this.buttons=[],this.disabled=!1,this.localTabWidth="100px",this.activeTab=0,this.isDense=!1}render(){return this.isDense=this.tabs.length>3,this.style.cssText=` + --local-tab: ${this.activeTab}; + --local-tab-width: ${this.localTabWidth}; + `,this.dataset.type=this.isDense?"flex":"block",this.tabs.map((e,i)=>{var n;const o=i===this.activeTab;return c` + + `})}firstUpdated(){this.shadowRoot&&this.isDense&&(this.buttons=[...this.shadowRoot.querySelectorAll("button")],setTimeout(()=>{this.animateTabs(0,!0)},0))}iconTemplate(e){return e.icon?c``:null}onTabClick(e){this.buttons&&this.animateTabs(e,!1),this.activeTab=e,this.onTabChange(e)}animateTabs(e,i){const o=this.buttons[this.activeTab],n=this.buttons[e],t=o==null?void 0:o.querySelector("wui-text"),a=n==null?void 0:n.querySelector("wui-text"),s=n==null?void 0:n.getBoundingClientRect(),l=a==null?void 0:a.getBoundingClientRect();o&&t&&!i&&e!==this.activeTab&&(t.animate([{opacity:0}],{duration:50,easing:"ease",fill:"forwards"}),o.animate([{width:"34px"}],{duration:500,easing:"ease",fill:"forwards"})),n&&s&&l&&a&&(e!==this.activeTab||i)&&(this.localTabWidth=`${Math.round(s.width+l.width)+6}px`,n.animate([{width:`${s.width+l.width}px`}],{duration:i?0:500,fill:"forwards",easing:"ease"}),a.animate([{opacity:1}],{duration:i?0:125,delay:i?0:200,fill:"forwards",easing:"ease"}))}};ie.styles=[B,M,on];we([u({type:Array})],ie.prototype,"tabs",void 0);we([u()],ie.prototype,"onTabChange",void 0);we([u({type:Array})],ie.prototype,"buttons",void 0);we([u({type:Boolean})],ie.prototype,"disabled",void 0);we([u()],ie.prototype,"localTabWidth",void 0);we([y()],ie.prototype,"activeTab",void 0);we([y()],ie.prototype,"isDense",void 0);ie=we([C("wui-tabs")],ie);var Zt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let st=class extends I{constructor(){super(...arguments),this.platformTabs=[],this.unsubscribe=[],this.platforms=[],this.onSelectPlatfrom=void 0}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){const e=this.generateTabs();return c` + + + + `}generateTabs(){const e=this.platforms.map(i=>i==="browser"?{label:"Browser",icon:"extension",platform:"browser"}:i==="mobile"?{label:"Mobile",icon:"mobile",platform:"mobile"}:i==="qrcode"?{label:"Mobile",icon:"mobile",platform:"qrcode"}:i==="web"?{label:"Webapp",icon:"browser",platform:"web"}:i==="desktop"?{label:"Desktop",icon:"desktop",platform:"desktop"}:{label:"Browser",icon:"extension",platform:"unsupported"});return this.platformTabs=e.map(({platform:i})=>i),e}onTabChange(e){var o;const i=this.platformTabs[e];i&&((o=this.onSelectPlatfrom)==null||o.call(this,i))}};Zt([u({type:Array})],st.prototype,"platforms",void 0);Zt([u()],st.prototype,"onSelectPlatfrom",void 0);st=Zt([C("w3m-connecting-header")],st);const rn=L` + :host { + width: var(--local-width); + position: relative; + } + + button { + border: none; + border-radius: var(--local-border-radius); + width: var(--local-width); + white-space: nowrap; + } + + /* -- Sizes --------------------------------------------------- */ + button[data-size='xs'] { + padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s); + height: 24px; + } + + button[data-size='xs'][data-icon-left='true'][data-icon-right='false'] { + padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s); + } + + button[data-size='xs'][data-icon-right='true'][data-icon-left='false'] { + padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s); + } + + button[data-size='sm'] { + padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s); + height: 32px; + } + + button[data-size='sm'][data-icon-left='true'][data-icon-right='false'] { + padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s); + } + + button[data-size='sm'][data-icon-right='true'][data-icon-left='false'] { + padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s); + } + + button[data-size='md'] { + padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-l); + height: 36px; + } + + button[data-size='md'][data-icon-left='true'][data-icon-right='false'] { + padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-s); + } + + button[data-size='md'][data-icon-right='true'][data-icon-left='false'] { + padding: 8.2px var(--wui-spacing-s) 9px var(--wui-spacing-l); + } + + button[data-size='lg'] { + padding: var(--wui-spacing-m) var(--wui-spacing-2l); + height: 48px; + } + + /* -- Variants --------------------------------------------------------- */ + button[data-variant='main'] { + background-color: var(--wui-color-accent-100); + color: var(--wui-color-inverse-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='inverse'] { + background-color: var(--wui-color-inverse-100); + color: var(--wui-color-inverse-000); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='accent'] { + background-color: var(--wui-color-accent-glass-010); + color: var(--wui-color-accent-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + button[data-variant='accent-error'] { + background: var(--wui-color-error-glass-015); + color: var(--wui-color-error-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-error-glass-010); + } + + button[data-variant='accent-success'] { + background: var(--wui-color-success-glass-015); + color: var(--wui-color-success-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-success-glass-010); + } + + button[data-variant='neutral'] { + background: transparent; + color: var(--wui-color-fg-100); + border: none; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + /* -- Focus states --------------------------------------------------- */ + button[data-variant='main']:focus-visible:enabled { + background-color: var(--wui-color-accent-090); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='inverse']:focus-visible:enabled { + background-color: var(--wui-color-inverse-100); + box-shadow: + inset 0 0 0 1px var(--wui-color-gray-glass-010), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='accent']:focus-visible:enabled { + background-color: var(--wui-color-accent-glass-010); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0 0 0 4px var(--wui-color-accent-glass-020); + } + button[data-variant='accent-error']:focus-visible:enabled { + background: var(--wui-color-error-glass-015); + box-shadow: + inset 0 0 0 1px var(--wui-color-error-100), + 0 0 0 4px var(--wui-color-error-glass-020); + } + button[data-variant='accent-success']:focus-visible:enabled { + background: var(--wui-color-success-glass-015); + box-shadow: + inset 0 0 0 1px var(--wui-color-success-100), + 0 0 0 4px var(--wui-color-success-glass-020); + } + button[data-variant='neutral']:focus-visible:enabled { + background: var(--wui-color-gray-glass-005); + box-shadow: + inset 0 0 0 1px var(--wui-color-gray-glass-010), + 0 0 0 4px var(--wui-color-gray-glass-002); + } + + /* -- Hover & Active states ----------------------------------------------------------- */ + @media (hover: hover) and (pointer: fine) { + button[data-variant='main']:hover:enabled { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:active:enabled { + background-color: var(--wui-color-accent-080); + } + + button[data-variant='accent']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + + button[data-variant='accent']:active:enabled { + background-color: var(--wui-color-accent-glass-020); + } + + button[data-variant='accent-error']:hover:enabled { + background: var(--wui-color-error-glass-020); + color: var(--wui-color-error-100); + } + + button[data-variant='accent-error']:active:enabled { + background: var(--wui-color-error-glass-030); + color: var(--wui-color-error-100); + } + + button[data-variant='accent-success']:hover:enabled { + background: var(--wui-color-success-glass-020); + color: var(--wui-color-success-100); + } + + button[data-variant='accent-success']:active:enabled { + background: var(--wui-color-success-glass-030); + color: var(--wui-color-success-100); + } + + button[data-variant='neutral']:hover:enabled { + background: var(--wui-color-gray-glass-002); + } + + button[data-variant='neutral']:active:enabled { + background: var(--wui-color-gray-glass-005); + } + + button[data-size='lg'][data-icon-left='true'][data-icon-right='false'] { + padding-left: var(--wui-spacing-m); + } + + button[data-size='lg'][data-icon-right='true'][data-icon-left='false'] { + padding-right: var(--wui-spacing-m); + } + } + + /* -- Disabled state --------------------------------------------------- */ + button:disabled { + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + color: var(--wui-color-gray-glass-020); + cursor: not-allowed; + } + + button > wui-text { + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + opacity: var(--local-opacity-100); + } + + ::slotted(*) { + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + opacity: var(--local-opacity-100); + } + + wui-loading-spinner { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + opacity: var(--local-opacity-000); + } +`;var ne=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};const ui={main:"inverse-100",inverse:"inverse-000",accent:"accent-100","accent-error":"error-100","accent-success":"success-100",neutral:"fg-100",disabled:"gray-glass-020"},an={lg:"paragraph-600",md:"small-600",sm:"small-600",xs:"tiny-600"},sn={lg:"md",md:"md",sm:"sm",xs:"sm"};let H=class extends I{constructor(){super(...arguments),this.size="lg",this.disabled=!1,this.fullWidth=!1,this.loading=!1,this.variant="main",this.hasIconLeft=!1,this.hasIconRight=!1,this.borderRadius="m"}render(){this.style.cssText=` + --local-width: ${this.fullWidth?"100%":"auto"}; + --local-opacity-100: ${this.loading?0:1}; + --local-opacity-000: ${this.loading?1:0}; + --local-border-radius: var(--wui-border-radius-${this.borderRadius}); + `;const e=this.textVariant??an[this.size];return c` + + `}handleSlotLeftChange(){this.hasIconLeft=!0}handleSlotRightChange(){this.hasIconRight=!0}loadingTemplate(){if(this.loading){const e=sn[this.size],i=this.disabled?ui.disabled:ui[this.variant];return c``}return c``}};H.styles=[B,M,rn];ne([u()],H.prototype,"size",void 0);ne([u({type:Boolean})],H.prototype,"disabled",void 0);ne([u({type:Boolean})],H.prototype,"fullWidth",void 0);ne([u({type:Boolean})],H.prototype,"loading",void 0);ne([u()],H.prototype,"variant",void 0);ne([u({type:Boolean})],H.prototype,"hasIconLeft",void 0);ne([u({type:Boolean})],H.prototype,"hasIconRight",void 0);ne([u()],H.prototype,"borderRadius",void 0);ne([u()],H.prototype,"textVariant",void 0);H=ne([C("wui-button")],H);const ln=L` + button { + padding: var(--wui-spacing-4xs) var(--wui-spacing-xxs); + border-radius: var(--wui-border-radius-3xs); + background-color: transparent; + color: var(--wui-color-accent-100); + } + + button:disabled { + background-color: transparent; + color: var(--wui-color-gray-glass-015); + } + + button:hover { + background-color: var(--wui-color-gray-glass-005); + } +`;var Rt=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let _e=class extends I{constructor(){super(...arguments),this.tabIdx=void 0,this.disabled=!1,this.color="inherit"}render(){return c` + + `}};_e.styles=[B,M,ln];Rt([u()],_e.prototype,"tabIdx",void 0);Rt([u({type:Boolean})],_e.prototype,"disabled",void 0);Rt([u()],_e.prototype,"color",void 0);_e=Rt([C("wui-link")],_e);const cn=L` + :host { + display: block; + width: var(--wui-box-size-md); + height: var(--wui-box-size-md); + } + + svg { + width: var(--wui-box-size-md); + height: var(--wui-box-size-md); + } + + rect { + fill: none; + stroke: var(--wui-color-accent-100); + stroke-width: 4px; + stroke-linecap: round; + animation: dash 1s linear infinite; + } + + @keyframes dash { + to { + stroke-dashoffset: 0px; + } + } +`;var Ri=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let lt=class extends I{constructor(){super(...arguments),this.radius=36}render(){return this.svgLoaderTemplate()}svgLoaderTemplate(){const e=this.radius>50?50:this.radius,o=36-e,n=116+o,t=245+o,a=360+o*1.75;return c` + + + + `}};lt.styles=[B,cn];Ri([u({type:Number})],lt.prototype,"radius",void 0);lt=Ri([C("wui-loading-thumbnail")],lt);const un=L` + button { + border: none; + border-radius: var(--wui-border-radius-3xl); + } + + button[data-variant='main'] { + background-color: var(--wui-color-accent-100); + color: var(--wui-color-inverse-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='accent'] { + background-color: var(--wui-color-accent-glass-010); + color: var(--wui-color-accent-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + } + + button[data-variant='gray'] { + background-color: transparent; + color: var(--wui-color-fg-200); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-variant='shade'] { + background-color: transparent; + color: var(--wui-color-accent-100); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + button[data-size='sm'] { + height: 32px; + padding: 0 var(--wui-spacing-s); + } + + button[data-size='md'] { + height: 40px; + padding: 0 var(--wui-spacing-l); + } + + button[data-size='sm'] > wui-image { + width: 16px; + height: 16px; + } + + button[data-size='md'] > wui-image { + width: 24px; + height: 24px; + } + + button[data-size='sm'] > wui-icon { + width: 12px; + height: 12px; + } + + button[data-size='md'] > wui-icon { + width: 14px; + height: 14px; + } + + wui-image { + border-radius: var(--wui-border-radius-3xl); + overflow: hidden; + } + + button.disabled > wui-icon, + button.disabled > wui-image { + filter: grayscale(1); + } + + button[data-variant='main'] > wui-image { + box-shadow: inset 0 0 0 1px var(--wui-color-accent-090); + } + + button[data-variant='shade'] > wui-image, + button[data-variant='gray'] > wui-image { + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010); + } + + @media (hover: hover) and (pointer: fine) { + button[data-variant='main']:focus-visible { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:hover:enabled { + background-color: var(--wui-color-accent-090); + } + + button[data-variant='main']:active:enabled { + background-color: var(--wui-color-accent-080); + } + + button[data-variant='accent']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + + button[data-variant='accent']:active:enabled { + background-color: var(--wui-color-accent-glass-020); + } + + button[data-variant='shade']:focus-visible, + button[data-variant='gray']:focus-visible, + button[data-variant='shade']:hover, + button[data-variant='gray']:hover { + background-color: var(--wui-color-gray-glass-002); + } + + button[data-variant='gray']:active, + button[data-variant='shade']:active { + background-color: var(--wui-color-gray-glass-005); + } + } + + button.disabled { + color: var(--wui-color-gray-glass-020); + background-color: var(--wui-color-gray-glass-002); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + pointer-events: none; + } +`;var Re=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ue=class extends I{constructor(){super(...arguments),this.variant="accent",this.imageSrc="",this.disabled=!1,this.icon="externalLink",this.size="md",this.text=""}render(){const e=this.size==="sm"?"small-600":"paragraph-600";return c` + + `}};ue.styles=[B,M,un];Re([u()],ue.prototype,"variant",void 0);Re([u()],ue.prototype,"imageSrc",void 0);Re([u({type:Boolean})],ue.prototype,"disabled",void 0);Re([u()],ue.prototype,"icon",void 0);Re([u()],ue.prototype,"size",void 0);Re([u()],ue.prototype,"text",void 0);ue=Re([C("wui-chip-button")],ue);const dn=L` + wui-flex { + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + } +`;var _t=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ie=class extends I{constructor(){super(...arguments),this.disabled=!1,this.label="",this.buttonLabel=""}render(){return c` + + ${this.label} + + + + `}};Ie.styles=[B,M,dn];_t([u({type:Boolean})],Ie.prototype,"disabled",void 0);_t([u()],Ie.prototype,"label",void 0);_t([u()],Ie.prototype,"buttonLabel",void 0);Ie=_t([C("wui-cta-button")],Ie);const hn=L` + :host { + display: block; + padding: 0 var(--wui-spacing-xl) var(--wui-spacing-xl); + } +`;var _i=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ct=class extends I{constructor(){super(...arguments),this.wallet=void 0}render(){if(!this.wallet)return this.style.display="none",null;const{name:e,app_store:i,play_store:o,chrome_store:n,homepage:t}=this.wallet,a=E.isMobile(),s=E.isIos(),l=E.isAndroid(),h=[i,o,t,n].filter(Boolean).length>1,d=le.getTruncateString({string:e,charsStart:12,charsEnd:0,truncate:"end"});return h&&!a?c` + A.push("Downloads",{wallet:this.wallet})} + > + `:!h&&t?c` + + `:i&&s?c` + + `:o&&l?c` + + `:(this.style.display="none",null)}onAppStore(){var e;(e=this.wallet)!=null&&e.app_store&&E.openHref(this.wallet.app_store,"_blank")}onPlayStore(){var e;(e=this.wallet)!=null&&e.play_store&&E.openHref(this.wallet.play_store,"_blank")}onHomePage(){var e;(e=this.wallet)!=null&&e.homepage&&E.openHref(this.wallet.homepage,"_blank")}};ct.styles=[hn];_i([u({type:Object})],ct.prototype,"wallet",void 0);ct=_i([C("w3m-mobile-download-links")],ct);const pn=L` + @keyframes shake { + 0% { + transform: translateX(0); + } + 25% { + transform: translateX(3px); + } + 50% { + transform: translateX(-3px); + } + 75% { + transform: translateX(3px); + } + 100% { + transform: translateX(0); + } + } + + wui-flex:first-child:not(:only-child) { + position: relative; + } + + wui-loading-thumbnail { + position: absolute; + } + + wui-icon-box { + position: absolute; + right: calc(var(--wui-spacing-3xs) * -1); + bottom: calc(var(--wui-spacing-3xs) * -1); + opacity: 0; + transform: scale(0.5); + transition-property: opacity, transform; + transition-duration: var(--wui-duration-lg); + transition-timing-function: var(--wui-ease-out-power-2); + will-change: opacity, transform; + } + + wui-text[align='center'] { + width: 100%; + padding: 0px var(--wui-spacing-l); + } + + [data-error='true'] wui-icon-box { + opacity: 1; + transform: scale(1); + } + + [data-error='true'] > wui-flex:first-child { + animation: shake 250ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both; + } + + [data-retry='false'] wui-link { + display: none; + } + + [data-retry='true'] wui-link { + display: block; + opacity: 1; + } +`;var X=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};class k extends I{constructor(){var e,i,o,n,t;super(),this.wallet=(e=A.state.data)==null?void 0:e.wallet,this.connector=(i=A.state.data)==null?void 0:i.connector,this.timeout=void 0,this.secondaryBtnIcon="refresh",this.onConnect=void 0,this.onRender=void 0,this.onAutoConnect=void 0,this.isWalletConnect=!0,this.unsubscribe=[],this.imageSrc=z.getWalletImage(this.wallet)??z.getConnectorImage(this.connector),this.name=((o=this.wallet)==null?void 0:o.name)??((n=this.connector)==null?void 0:n.name)??"Wallet",this.isRetrying=!1,this.uri=_.state.wcUri,this.error=_.state.wcError,this.ready=!1,this.showRetry=!1,this.label=void 0,this.secondaryBtnLabel="Try again",this.secondaryLabel="Accept connection request in the wallet",this.isLoading=!1,this.isMobile=!1,this.onRetry=void 0,this.unsubscribe.push(_.subscribeKey("wcUri",a=>{var s;this.uri=a,this.isRetrying&&this.onRetry&&(this.isRetrying=!1,(s=this.onConnect)==null||s.call(this))}),_.subscribeKey("wcError",a=>this.error=a)),(E.isTelegram()||E.isSafari())&&E.isIos()&&_.state.wcUri&&((t=this.onConnect)==null||t.call(this))}firstUpdated(){var e;(e=this.onAutoConnect)==null||e.call(this),this.showRetry=!this.onAutoConnect}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),_.setWcError(!1),clearTimeout(this.timeout)}render(){var o;(o=this.onRender)==null||o.call(this),this.onShowRetry();const e=this.error?"Connection can be declined if a previous request is still active":this.secondaryLabel;let i="";return this.label?i=this.label:(i=`Continue in ${this.name}`,this.error&&(i="Connection declined")),c` + + + + + ${this.error?null:this.loaderTemplate()} + + + + + + + ${i} + + ${e} + + + ${this.secondaryBtnLabel?c` + + + ${this.secondaryBtnLabel} + + `:null} + + + ${this.isWalletConnect?c` + + + + Copy link + + + `:null} + + + `}onShowRetry(){var e;if(this.error&&!this.showRetry){this.showRetry=!0;const i=(e=this.shadowRoot)==null?void 0:e.querySelector("wui-button");i==null||i.animate([{opacity:0},{opacity:1}],{fill:"forwards",easing:"ease"})}}onTryAgain(){var e,i;_.setWcError(!1),this.onRetry?(this.isRetrying=!0,(e=this.onRetry)==null||e.call(this)):(i=this.onConnect)==null||i.call(this)}loaderTemplate(){const e=Dt.state.themeVariables["--w3m-border-radius-master"],i=e?parseInt(e.replace("px",""),10):4;return c``}onCopyUri(){try{this.uri&&(E.copyToClopboard(this.uri),Me.showSuccess("Link copied"))}catch{Me.showError("Failed to copy")}}}k.styles=pn;X([y()],k.prototype,"isRetrying",void 0);X([y()],k.prototype,"uri",void 0);X([y()],k.prototype,"error",void 0);X([y()],k.prototype,"ready",void 0);X([y()],k.prototype,"showRetry",void 0);X([y()],k.prototype,"label",void 0);X([y()],k.prototype,"secondaryBtnLabel",void 0);X([y()],k.prototype,"secondaryLabel",void 0);X([y()],k.prototype,"isLoading",void 0);X([u({type:Boolean})],k.prototype,"isMobile",void 0);X([u()],k.prototype,"onRetry",void 0);var fn=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let di=class extends k{constructor(){var e;if(super(),!this.wallet)throw new Error("w3m-connecting-wc-browser: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onAutoConnect=this.onConnectProxy.bind(this),J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser",displayIndex:(e=this.wallet)==null?void 0:e.display_index}})}async onConnectProxy(){var e,i;try{this.error=!1;const{connectors:o}=O.state,n=o.find(t=>{var a,s,l;return t.type==="ANNOUNCED"&&((a=t.info)==null?void 0:a.rdns)===((s=this.wallet)==null?void 0:s.rdns)||t.type==="INJECTED"||t.name===((l=this.wallet)==null?void 0:l.name)});if(n)await _.connectExternal(n,n.chain);else throw new Error("w3m-connecting-wc-browser: No connector found");xi.close(),J.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:"browser",name:((e=this.wallet)==null?void 0:e.name)||"Unknown",caipNetworkId:(i=te.getActiveCaipNetwork())==null?void 0:i.caipNetworkId}})}catch(o){J.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:(o==null?void 0:o.message)??"Unknown"}}),this.error=!0}}};di=fn([C("w3m-connecting-wc-browser")],di);var gn=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let hi=class extends k{constructor(){var e;if(super(),!this.wallet)throw new Error("w3m-connecting-wc-desktop: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.onRender=this.onRenderProxy.bind(this),J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"desktop",displayIndex:(e=this.wallet)==null?void 0:e.display_index}})}onRenderProxy(){var e;!this.ready&&this.uri&&(this.ready=!0,(e=this.onConnect)==null||e.call(this))}onConnectProxy(){var e;if((e=this.wallet)!=null&&e.desktop_link&&this.uri)try{this.error=!1;const{desktop_link:i,name:o}=this.wallet,{redirect:n,href:t}=E.formatNativeUrl(i,this.uri);_.setWcLinking({name:o,href:t}),_.setRecentWallet(this.wallet),E.openHref(n,"_blank")}catch{this.error=!0}}};hi=gn([C("w3m-connecting-wc-desktop")],hi);var Ae=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ye=class extends k{constructor(){var e;if(super(),this.btnLabelTimeout=void 0,this.redirectDeeplink=void 0,this.redirectUniversalLink=void 0,this.target=void 0,this.preferUniversalLinks=q.state.experimental_preferUniversalLinks,this.isLoading=!0,this.onConnect=()=>{var i;if((i=this.wallet)!=null&&i.mobile_link&&this.uri)try{this.error=!1;const{mobile_link:o,link_mode:n,name:t}=this.wallet,{redirect:a,redirectUniversalLink:s,href:l}=E.formatNativeUrl(o,this.uri,n);this.redirectDeeplink=a,this.redirectUniversalLink=s,this.target=E.isIframe()?"_top":"_self",_.setWcLinking({name:t,href:l}),_.setRecentWallet(this.wallet),this.preferUniversalLinks&&this.redirectUniversalLink?E.openHref(this.redirectUniversalLink,this.target):E.openHref(this.redirectDeeplink,this.target)}catch(o){J.sendEvent({type:"track",event:"CONNECT_PROXY_ERROR",properties:{message:o instanceof Error?o.message:"Error parsing the deeplink",uri:this.uri,mobile_link:this.wallet.mobile_link,name:this.wallet.name}}),this.error=!0}},!this.wallet)throw new Error("w3m-connecting-wc-mobile: No wallet provided");this.secondaryBtnLabel="Open",this.secondaryLabel=Ci.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.onHandleURI(),this.unsubscribe.push(_.subscribeKey("wcUri",()=>{this.onHandleURI()})),J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"mobile",displayIndex:(e=this.wallet)==null?void 0:e.display_index}})}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this.btnLabelTimeout)}onHandleURI(){var e;this.isLoading=!this.uri,!this.ready&&this.uri&&(this.ready=!0,(e=this.onConnect)==null||e.call(this))}onTryAgain(){var e;_.setWcError(!1),(e=this.onConnect)==null||e.call(this)}};Ae([y()],ye.prototype,"redirectDeeplink",void 0);Ae([y()],ye.prototype,"redirectUniversalLink",void 0);Ae([y()],ye.prototype,"target",void 0);Ae([y()],ye.prototype,"preferUniversalLinks",void 0);Ae([y()],ye.prototype,"isLoading",void 0);ye=Ae([C("w3m-connecting-wc-mobile")],ye);var Je={},wn=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Ii={},V={};let ei;const bn=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];V.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};V.getSymbolTotalCodewords=function(e){return bn[e]};V.getBCHDigit=function(r){let e=0;for(;r!==0;)e++,r>>>=1;return e};V.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ei=e};V.isKanjiModeEnabled=function(){return typeof ei<"u"};V.toSJIS=function(e){return ei(e)};var It={};(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function e(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.toLowerCase()){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+i)}}r.isValid=function(o){return o&&typeof o.bit<"u"&&o.bit>=0&&o.bit<4},r.from=function(o,n){if(r.isValid(o))return o;try{return e(o)}catch{return n}}})(It);function Ei(){this.buffer=[],this.length=0}Ei.prototype={get:function(r){const e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(let i=0;i>>e-i-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var mn=Ei;function Qe(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}Qe.prototype.set=function(r,e,i,o){const n=r*this.size+e;this.data[n]=i,o&&(this.reservedBit[n]=!0)};Qe.prototype.get=function(r,e){return this.data[r*this.size+e]};Qe.prototype.xor=function(r,e,i){this.data[r*this.size+e]^=i};Qe.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};var vn=Qe,Wi={};(function(r){const e=V.getSymbolSize;r.getRowColCoords=function(o){if(o===1)return[];const n=Math.floor(o/7)+2,t=e(o),a=t===145?26:Math.ceil((t-13)/(2*n-2))*2,s=[t-7];for(let l=1;l=0&&n<=7},r.from=function(n){return r.isValid(n)?parseInt(n,10):void 0},r.getPenaltyN1=function(n){const t=n.size;let a=0,s=0,l=0,h=null,d=null;for(let T=0;T=5&&(a+=e.N1+(s-5)),h=v,s=1),v=n.get(g,T),v===d?l++:(l>=5&&(a+=e.N1+(l-5)),d=v,l=1)}s>=5&&(a+=e.N1+(s-5)),l>=5&&(a+=e.N1+(l-5))}return a},r.getPenaltyN2=function(n){const t=n.size;let a=0;for(let s=0;s=10&&(s===1488||s===93)&&a++,l=l<<1&2047|n.get(d,h),d>=10&&(l===1488||l===93)&&a++}return a*e.N3},r.getPenaltyN4=function(n){let t=0;const a=n.data.length;for(let l=0;l=0;){const a=t[0];for(let l=0;l0){const t=new Uint8Array(this.degree);return t.set(o,n),t}return o};var xn=ti,Pi={},be={},ii={};ii.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40};var oe={};const Ai="[0-9]+",Cn="[A-Z $%*+\\-./:]+";let Ge="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Ge=Ge.replace(/u/g,"\\u");const $n="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ge+`)(?:.|[\r +]))+`;oe.KANJI=new RegExp(Ge,"g");oe.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");oe.BYTE=new RegExp($n,"g");oe.NUMERIC=new RegExp(Ai,"g");oe.ALPHANUMERIC=new RegExp(Cn,"g");const Rn=new RegExp("^"+Ge+"$"),_n=new RegExp("^"+Ai+"$"),In=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");oe.testKanji=function(e){return Rn.test(e)};oe.testNumeric=function(e){return _n.test(e)};oe.testAlphanumeric=function(e){return In.test(e)};(function(r){const e=ii,i=oe;r.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},r.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},r.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},r.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},r.MIXED={bit:-1},r.getCharCountIndicator=function(t,a){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!e.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?t.ccBits[0]:a<27?t.ccBits[1]:t.ccBits[2]},r.getBestModeForData=function(t){return i.testNumeric(t)?r.NUMERIC:i.testAlphanumeric(t)?r.ALPHANUMERIC:i.testKanji(t)?r.KANJI:r.BYTE},r.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},r.isValid=function(t){return t&&t.bit&&t.ccBits};function o(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+n)}}r.from=function(t,a){if(r.isValid(t))return t;try{return o(t)}catch{return a}}})(be);(function(r){const e=V,i=Et,o=It,n=be,t=ii,a=7973,s=e.getBCHDigit(a);function l(g,v,$){for(let m=1;m<=40;m++)if(v<=r.getCapacity(m,$,g))return m}function h(g,v){return n.getCharCountIndicator(g,v)+4}function d(g,v){let $=0;return g.forEach(function(m){const R=h(m.mode,v);$+=R+m.getBitsLength()}),$}function T(g,v){for(let $=1;$<=40;$++)if(d(g,$)<=r.getCapacity($,v,n.MIXED))return $}r.from=function(v,$){return t.isValid(v)?parseInt(v,10):$},r.getCapacity=function(v,$,m){if(!t.isValid(v))throw new Error("Invalid QR Code version");typeof m>"u"&&(m=n.BYTE);const R=e.getSymbolTotalCodewords(v),w=i.getTotalCodewordsCount(v,$),f=(R-w)*8;if(m===n.MIXED)return f;const b=f-h(m,v);switch(m){case n.NUMERIC:return Math.floor(b/10*3);case n.ALPHANUMERIC:return Math.floor(b/11*2);case n.KANJI:return Math.floor(b/13);case n.BYTE:default:return Math.floor(b/8)}},r.getBestVersionForData=function(v,$){let m;const R=o.from($,o.M);if(Array.isArray(v)){if(v.length>1)return T(v,R);if(v.length===0)return 1;m=v[0]}else m=v;return l(m.mode,m.getLength(),R)},r.getEncodedBits=function(v){if(!t.isValid(v)||v<7)throw new Error("Invalid QR Code version");let $=v<<12;for(;e.getBCHDigit($)-s>=0;)$^=a<=0;)n^=Ni<0&&(o=this.data.substr(i),n=parseInt(o,10),e.put(n,t*3+1))};var Tn=Ee;const Sn=be,Pt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function We(r){this.mode=Sn.ALPHANUMERIC,this.data=r}We.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};We.prototype.getLength=function(){return this.data.length};We.prototype.getBitsLength=function(){return We.getBitsLength(this.data.length)};We.prototype.write=function(e){let i;for(i=0;i+2<=this.data.length;i+=2){let o=Pt.indexOf(this.data[i])*45;o+=Pt.indexOf(this.data[i+1]),e.put(o,11)}this.data.length%2&&e.put(Pt.indexOf(this.data[i]),6)};var Ln=We,On=function(e){for(var i=[],o=e.length,n=0;n=55296&&t<=56319&&o>n+1){var a=e.charCodeAt(n+1);a>=56320&&a<=57343&&(t=(t-55296)*1024+a-56320+65536,n+=1)}if(t<128){i.push(t);continue}if(t<2048){i.push(t>>6|192),i.push(t&63|128);continue}if(t<55296||t>=57344&&t<65536){i.push(t>>12|224),i.push(t>>6&63|128),i.push(t&63|128);continue}if(t>=65536&&t<=1114111){i.push(t>>18|240),i.push(t>>12&63|128),i.push(t>>6&63|128),i.push(t&63|128);continue}i.push(239,191,189)}return new Uint8Array(i).buffer};const Pn=On,An=be;function Te(r){this.mode=An.BYTE,typeof r=="string"&&(r=Pn(r)),this.data=new Uint8Array(r)}Te.getBitsLength=function(e){return e*8};Te.prototype.getLength=function(){return this.data.length};Te.prototype.getBitsLength=function(){return Te.getBitsLength(this.data.length)};Te.prototype.write=function(r){for(let e=0,i=this.data.length;e=33088&&i<=40956)i-=33088;else if(i>=57408&&i<=60351)i-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+` +Make sure your charset is UTF-8`);i=(i>>>8&255)*192+(i&255),r.put(i,13)}};var jn=Se,ji={exports:{}};(function(r){var e={single_source_shortest_paths:function(i,o,n){var t={},a={};a[o]=0;var s=e.PriorityQueue.make();s.push(o,0);for(var l,h,d,T,g,v,$,m,R;!s.empty();){l=s.pop(),h=l.value,T=l.cost,g=i[h]||{};for(d in g)g.hasOwnProperty(d)&&(v=g[d],$=T+v,m=a[d],R=typeof a[d]>"u",(R||m>$)&&(a[d]=$,s.push(d,$),t[d]=h))}if(typeof n<"u"&&typeof a[n]>"u"){var w=["Could not find a path from ",o," to ",n,"."].join("");throw new Error(w)}return t},extract_shortest_path_from_predecessor_list:function(i,o){for(var n=[],t=o;t;)n.push(t),i[t],t=i[t];return n.reverse(),n},find_path:function(i,o,n){var t=e.single_source_shortest_paths(i,o,n);return e.extract_shortest_path_from_predecessor_list(t,n)},PriorityQueue:{make:function(i){var o=e.PriorityQueue,n={},t;i=i||{};for(t in o)o.hasOwnProperty(t)&&(n[t]=o[t]);return n.queue=[],n.sorter=i.sorter||o.default_sorter,n},default_sorter:function(i,o){return i.cost-o.cost},push:function(i,o){var n={value:i,cost:o};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};r.exports=e})(ji);var zn=ji.exports;(function(r){const e=be,i=Tn,o=Ln,n=Bn,t=jn,a=oe,s=V,l=zn;function h(w){return unescape(encodeURIComponent(w)).length}function d(w,f,b){const p=[];let W;for(;(W=w.exec(b))!==null;)p.push({data:W[0],index:W.index,mode:f,length:W[0].length});return p}function T(w){const f=d(a.NUMERIC,e.NUMERIC,w),b=d(a.ALPHANUMERIC,e.ALPHANUMERIC,w);let p,W;return s.isKanjiModeEnabled()?(p=d(a.BYTE,e.BYTE,w),W=d(a.KANJI,e.KANJI,w)):(p=d(a.BYTE_KANJI,e.BYTE,w),W=[]),f.concat(b,p,W).sort(function(N,Y){return N.index-Y.index}).map(function(N){return{data:N.data,mode:N.mode,length:N.length}})}function g(w,f){switch(f){case e.NUMERIC:return i.getBitsLength(w);case e.ALPHANUMERIC:return o.getBitsLength(w);case e.KANJI:return t.getBitsLength(w);case e.BYTE:return n.getBitsLength(w)}}function v(w){return w.reduce(function(f,b){const p=f.length-1>=0?f[f.length-1]:null;return p&&p.mode===b.mode?(f[f.length-1].data+=b.data,f):(f.push(b),f)},[])}function $(w){const f=[];for(let b=0;b=0&&s<=6&&(l===0||l===6)||l>=0&&l<=6&&(s===0||s===6)||s>=2&&s<=4&&l>=2&&l<=4?r.set(t+s,a+l,!0,!0):r.set(t+s,a+l,!1,!0))}}function Gn(r){const e=r.size;for(let i=8;i>s&1)===1,r.set(n,t,a,!0),r.set(t,n,a,!0)}function Nt(r,e,i){const o=r.size,n=qn.getEncodedBits(e,i);let t,a;for(t=0;t<15;t++)a=(n>>t&1)===1,t<6?r.set(t,8,a,!0):t<8?r.set(t+1,8,a,!0):r.set(o-15+t,8,a,!0),t<8?r.set(8,o-t-1,a,!0):t<9?r.set(8,15-t-1+1,a,!0):r.set(8,15-t-1,a,!0);r.set(o-8,8,1,!0)}function Qn(r,e){const i=r.size;let o=-1,n=i-1,t=7,a=0;for(let s=i-1;s>0;s-=2)for(s===6&&s--;;){for(let l=0;l<2;l++)if(!r.isReserved(n,s-l)){let h=!1;a>>t&1)===1),r.set(n,s-l,h),t--,t===-1&&(a++,t=7)}if(n+=o,n<0||i<=n){n-=o,o=-o;break}}}function Xn(r,e,i){const o=new Dn;i.forEach(function(l){o.put(l.mode.bit,4),o.put(l.getLength(),Hn.getCharCountIndicator(l.mode,r)),l.write(o)});const n=Tt.getSymbolTotalCodewords(r),t=Ft.getTotalCodewordsCount(r,e),a=(n-t)*8;for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!==0;)o.putBit(0);const s=(a-o.getLengthInBits())/8;for(let l=0;l=7&&Jn(l,e),Qn(l,a),isNaN(o)&&(o=Ut.getBestMask(l,Nt.bind(null,l,i))),Ut.applyMask(o,l),Nt(l,i,o),{modules:l,version:e,errorCorrectionLevel:i,maskPattern:o,segments:n}}Ii.create=function(e,i){if(typeof e>"u"||e==="")throw new Error("No input text");let o=At.M,n,t;return typeof i<"u"&&(o=At.from(i.errorCorrectionLevel,At.M),n=dt.from(i.version),t=Ut.from(i.maskPattern),i.toSJISFunc&&Tt.setToSJISFunction(i.toSJISFunc)),eo(e,n,o,t)};var zi={},ni={};(function(r){function e(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let o=i.slice().replace("#","").split("");if(o.length<3||o.length===5||o.length>8)throw new Error("Invalid hex color: "+i);(o.length===3||o.length===4)&&(o=Array.prototype.concat.apply([],o.map(function(t){return[t,t]}))),o.length===6&&o.push("F","F");const n=parseInt(o.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+o.slice(0,6).join("")}}r.getOptions=function(o){o||(o={}),o.color||(o.color={});const n=typeof o.margin>"u"||o.margin===null||o.margin<0?4:o.margin,t=o.width&&o.width>=21?o.width:void 0,a=o.scale||4;return{width:t,scale:t?4:a,margin:n,color:{dark:e(o.color.dark||"#000000ff"),light:e(o.color.light||"#ffffffff")},type:o.type,rendererOpts:o.rendererOpts||{}}},r.getScale=function(o,n){return n.width&&n.width>=o+n.margin*2?n.width/(o+n.margin*2):n.scale},r.getImageWidth=function(o,n){const t=r.getScale(o,n);return Math.floor((o+n.margin*2)*t)},r.qrToImageData=function(o,n,t){const a=n.modules.size,s=n.modules.data,l=r.getScale(a,t),h=Math.floor((a+t.margin*2)*l),d=t.margin*l,T=[t.color.light,t.color.dark];for(let g=0;g=d&&v>=d&&g"u"&&(!a||!a.getContext)&&(l=a,a=void 0),a||(h=o()),l=e.getOptions(l);const d=e.getImageWidth(t.modules.size,l),T=h.getContext("2d"),g=T.createImageData(d,d);return e.qrToImageData(g.data,t,l),i(T,h,d),T.putImageData(g,0,0),h},r.renderToDataURL=function(t,a,s){let l=s;typeof l>"u"&&(!a||!a.getContext)&&(l=a,a=void 0),l||(l={});const h=r.render(t,a,l),d=l.type||"image/png",T=l.rendererOpts||{};return h.toDataURL(d,T.quality)}})(zi);var Di={};const to=ni;function gi(r,e){const i=r.a/255,o=e+'="'+r.hex+'"';return i<1?o+" "+e+'-opacity="'+i.toFixed(2).slice(1)+'"':o}function kt(r,e,i){let o=r+e;return typeof i<"u"&&(o+=" "+i),o}function io(r,e,i){let o="",n=0,t=!1,a=0;for(let s=0;s0&&l>0&&r[s-1]||(o+=t?kt("M",l+i,.5+h+i):kt("m",n,0),n=0,t=!1),l+1':"",h="',d='viewBox="0 0 '+s+" "+s+'"',g=''+l+h+` +`;return typeof o=="function"&&o(null,g),g};const no=wn,Vt=Ii,Mi=zi,oo=Di;function oi(r,e,i,o,n){const t=[].slice.call(arguments,1),a=t.length,s=typeof t[a-1]=="function";if(!s&&!no())throw new Error("Callback required as last argument");if(s){if(a<2)throw new Error("Too few arguments provided");a===2?(n=i,i=e,e=o=void 0):a===3&&(e.getContext&&typeof n>"u"?(n=o,o=void 0):(n=o,o=i,i=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(i=e,e=o=void 0):a===2&&!e.getContext&&(o=i,i=e,e=void 0),new Promise(function(l,h){try{const d=Vt.create(i,o);l(r(d,e,o))}catch(d){h(d)}})}try{const l=Vt.create(i,o);n(null,r(l,e,o))}catch(l){n(l)}}Je.create=Vt.create;Je.toCanvas=oi.bind(null,Mi.render);Je.toDataURL=oi.bind(null,Mi.renderToDataURL);Je.toString=oi.bind(null,function(r,e,i){return oo.render(r,i)});const ro=.1,wi=2.5,se=7;function jt(r,e,i){return r===e?!1:(r-e<0?e-r:r-e)<=i+ro}function ao(r,e){const i=Array.prototype.slice.call(Je.create(r,{errorCorrectionLevel:e}).modules.data,0),o=Math.sqrt(i.length);return i.reduce((n,t,a)=>(a%o===0?n.push([t]):n[n.length-1].push(t))&&n,[])}const so={generate({uri:r,size:e,logoSize:i,dotColor:o="#141414"}){const n="transparent",a=[],s=ao(r,"Q"),l=e/s.length,h=[{x:0,y:0},{x:1,y:0},{x:0,y:1}];h.forEach(({x:m,y:R})=>{const w=(s.length-se)*l*m,f=(s.length-se)*l*R,b=.45;for(let p=0;p + `)}});const d=Math.floor((i+25)/l),T=s.length/2-d/2,g=s.length/2+d/2-1,v=[];s.forEach((m,R)=>{m.forEach((w,f)=>{if(s[R][f]&&!(Rs.length-(se+1)&&fs.length-(se+1))&&!(R>T&&RT&&f{var w;$[m]?(w=$[m])==null||w.push(R):$[m]=[R]}),Object.entries($).map(([m,R])=>{const w=R.filter(f=>R.every(b=>!jt(f,b,l)));return[Number(m),w]}).forEach(([m,R])=>{R.forEach(w=>{a.push(ke``)})}),Object.entries($).filter(([m,R])=>R.length>1).map(([m,R])=>{const w=R.filter(f=>R.some(b=>jt(f,b,l)));return[Number(m),w]}).map(([m,R])=>{R.sort((f,b)=>fp.some(W=>jt(f,W,l)));b?b.push(f):w.push([f])}return[m,w.map(f=>[f[0],f[f.length-1]])]}).forEach(([m,R])=>{R.forEach(([w,f])=>{a.push(ke` + + `)})}),a}},lo=L` + :host { + position: relative; + user-select: none; + display: block; + overflow: hidden; + aspect-ratio: 1 / 1; + width: var(--local-size); + } + + :host([data-theme='dark']) { + border-radius: clamp(0px, var(--wui-border-radius-l), 40px); + background-color: var(--wui-color-inverse-100); + padding: var(--wui-spacing-l); + } + + :host([data-theme='light']) { + box-shadow: 0 0 0 1px var(--wui-color-bg-125); + background-color: var(--wui-color-bg-125); + } + + :host([data-clear='true']) > wui-icon { + display: none; + } + + svg:first-child, + wui-image, + wui-icon { + position: absolute; + top: 50%; + left: 50%; + transform: translateY(-50%) translateX(-50%); + } + + wui-image { + width: 25%; + height: 25%; + border-radius: var(--wui-border-radius-xs); + } + + wui-icon { + width: 100%; + height: 100%; + color: var(--local-icon-color) !important; + transform: translateY(-50%) translateX(-50%) scale(0.25); + } +`;var de=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};const co="#3396ff";let Q=class extends I{constructor(){super(...arguments),this.uri="",this.size=0,this.theme="dark",this.imageSrc=void 0,this.alt=void 0,this.arenaClear=void 0,this.farcaster=void 0}render(){return this.dataset.theme=this.theme,this.dataset.clear=String(this.arenaClear),this.style.cssText=` + --local-size: ${this.size}px; + --local-icon-color: ${this.color??co} + `,c`${this.templateVisual()} ${this.templateSvg()}`}templateSvg(){const e=this.theme==="light"?this.size:this.size-32;return ke` + + ${so.generate({uri:this.uri,size:e,logoSize:this.arenaClear?0:e/4,dotColor:this.color})} + + `}templateVisual(){return this.imageSrc?c``:this.farcaster?c``:c``}};Q.styles=[B,lo];de([u()],Q.prototype,"uri",void 0);de([u({type:Number})],Q.prototype,"size",void 0);de([u()],Q.prototype,"theme",void 0);de([u()],Q.prototype,"imageSrc",void 0);de([u()],Q.prototype,"alt",void 0);de([u()],Q.prototype,"color",void 0);de([u({type:Boolean})],Q.prototype,"arenaClear",void 0);de([u({type:Boolean})],Q.prototype,"farcaster",void 0);Q=de([C("wui-qr-code")],Q);const uo=L` + :host { + display: block; + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005); + background: linear-gradient( + 120deg, + var(--wui-color-bg-200) 5%, + var(--wui-color-bg-200) 48%, + var(--wui-color-bg-300) 55%, + var(--wui-color-bg-300) 60%, + var(--wui-color-bg-300) calc(60% + 10px), + var(--wui-color-bg-200) calc(60% + 12px), + var(--wui-color-bg-200) 100% + ); + background-size: 250%; + animation: shimmer 3s linear infinite reverse; + } + + :host([variant='light']) { + background: linear-gradient( + 120deg, + var(--wui-color-bg-150) 5%, + var(--wui-color-bg-150) 48%, + var(--wui-color-bg-200) 55%, + var(--wui-color-bg-200) 60%, + var(--wui-color-bg-200) calc(60% + 10px), + var(--wui-color-bg-150) calc(60% + 12px), + var(--wui-color-bg-150) 100% + ); + background-size: 250%; + } + + @keyframes shimmer { + from { + background-position: -250% 0; + } + to { + background-position: 250% 0; + } + } +`;var Xe=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let xe=class extends I{constructor(){super(...arguments),this.width="",this.height="",this.borderRadius="m",this.variant="default"}render(){return this.style.cssText=` + width: ${this.width}; + height: ${this.height}; + border-radius: ${`clamp(0px,var(--wui-border-radius-${this.borderRadius}), 40px)`}; + `,c``}};xe.styles=[uo];Xe([u()],xe.prototype,"width",void 0);Xe([u()],xe.prototype,"height",void 0);Xe([u()],xe.prototype,"borderRadius",void 0);Xe([u()],xe.prototype,"variant",void 0);xe=Xe([C("wui-shimmer")],xe);const ho="https://reown.com",po=L` + .reown-logo { + height: var(--wui-spacing-xxl); + } + + a { + text-decoration: none; + cursor: pointer; + } + + a:hover { + opacity: 0.9; + } +`;var fo=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let qt=class extends I{render(){return c` + + + UX by + + + + `}};qt.styles=[B,M,po];qt=fo([C("wui-ux-by-reown")],qt);const go=L` + @keyframes fadein { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + wui-shimmer { + width: 100%; + aspect-ratio: 1 / 1; + border-radius: clamp(0px, var(--wui-border-radius-l), 40px) !important; + } + + wui-qr-code { + opacity: 0; + animation-duration: 200ms; + animation-timing-function: ease; + animation-name: fadein; + animation-fill-mode: forwards; + } +`;var wo=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ht=class extends k{constructor(){var e,i;super(),this.forceUpdate=()=>{this.requestUpdate()},window.addEventListener("resize",this.forceUpdate),J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:((e=this.wallet)==null?void 0:e.name)??"WalletConnect",platform:"qrcode",displayIndex:(i=this.wallet)==null?void 0:i.display_index}})}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this.unsubscribe)==null||e.forEach(i=>i()),window.removeEventListener("resize",this.forceUpdate)}render(){return this.onRenderProxy(),c` + + ${this.qrCodeTemplate()} + + + Scan this QR Code with your phone + + ${this.copyTemplate()} + + + `}onRenderProxy(){!this.ready&&this.uri&&(this.timeout=setTimeout(()=>{this.ready=!0},200))}qrCodeTemplate(){if(!this.uri||!this.ready)return null;const e=this.getBoundingClientRect().width-40,i=this.wallet?this.wallet.name:void 0;return _.setWcLinking(void 0),_.setRecentWallet(this.wallet),c` `}copyTemplate(){const e=!this.uri||!this.ready;return c` + + Copy link + `}};Ht.styles=go;Ht=wo([C("w3m-connecting-wc-qrcode")],Ht);var bo=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let bi=class extends I{constructor(){var e,i;if(super(),this.wallet=(e=A.state.data)==null?void 0:e.wallet,!this.wallet)throw new Error("w3m-connecting-wc-unsupported: No wallet provided");J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"browser",displayIndex:(i=this.wallet)==null?void 0:i.display_index}})}render(){return c` + + + + Not Detected + + + + `}};bi=bo([C("w3m-connecting-wc-unsupported")],bi);var Ui=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Kt=class extends k{constructor(){var e;if(super(),this.isLoading=!0,!this.wallet)throw new Error("w3m-connecting-wc-web: No wallet provided");this.onConnect=this.onConnectProxy.bind(this),this.secondaryBtnLabel="Open",this.secondaryLabel=Ci.CONNECT_LABELS.MOBILE,this.secondaryBtnIcon="externalLink",this.updateLoadingState(),this.unsubscribe.push(_.subscribeKey("wcUri",()=>{this.updateLoadingState()})),J.sendEvent({type:"track",event:"SELECT_WALLET",properties:{name:this.wallet.name,platform:"web",displayIndex:(e=this.wallet)==null?void 0:e.display_index}})}updateLoadingState(){this.isLoading=!this.uri}onConnectProxy(){var e;if((e=this.wallet)!=null&&e.webapp_link&&this.uri)try{this.error=!1;const{webapp_link:i,name:o}=this.wallet,{redirect:n,href:t}=E.formatUniversalUrl(i,this.uri);_.setWcLinking({name:o,href:t}),_.setRecentWallet(this.wallet),E.openHref(n,"_blank")}catch{this.error=!0}}};Ui([y()],Kt.prototype,"isLoading",void 0);Kt=Ui([C("w3m-connecting-wc-web")],Kt);var Ze=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Le=class extends I{constructor(){var e;super(),this.wallet=(e=A.state.data)==null?void 0:e.wallet,this.unsubscribe=[],this.platform=void 0,this.platforms=[],this.isSiwxEnabled=!!q.state.siwx,this.remoteFeatures=q.state.remoteFeatures,this.determinePlatforms(),this.initializeConnection(),this.unsubscribe.push(q.subscribeKey("remoteFeatures",i=>this.remoteFeatures=i))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){return c` + ${this.headerTemplate()} +
${this.platformTemplate()}
+ ${this.reownBrandingTemplate()} + `}reownBrandingTemplate(){var e;return(e=this.remoteFeatures)!=null&&e.reownBranding?c``:null}async initializeConnection(e=!1){var i,o;if(!(this.platform==="browser"||q.state.manualWCControl&&!e))try{const{wcPairingExpiry:n,status:t}=_.state;if(e||q.state.enableEmbedded||E.isPairingExpired(n)||t==="connecting"){const a=_.getConnections(te.state.activeChain),s=(i=this.remoteFeatures)==null?void 0:i.multiWallet,l=a.length>0;await _.connectWalletConnect(),this.isSiwxEnabled||(l&&s?(A.replace("ProfileWallets"),Me.showSuccess("New Wallet Added")):xi.close())}}catch(n){if(n instanceof Error&&n.message.includes("An error occurred when attempting to switch chain")&&!q.state.enableNetworkSwitch&&te.state.activeChain){te.setActiveCaipNetwork(Gi.getUnsupportedNetwork(`${te.state.activeChain}:${(o=te.state.activeCaipNetwork)==null?void 0:o.id}`)),te.showUnsupportedChainUI();return}J.sendEvent({type:"track",event:"CONNECT_ERROR",properties:{message:(n==null?void 0:n.message)??"Unknown"}}),_.setWcError(!0),Me.showError(n.message??"Connection error"),_.resetWcConnection(),A.goBack()}}determinePlatforms(){if(!this.wallet){this.platforms.push("qrcode"),this.platform="qrcode";return}if(this.platform)return;const{mobile_link:e,desktop_link:i,webapp_link:o,injected:n,rdns:t}=this.wallet,a=n==null?void 0:n.map(({injected_id:$})=>$).filter(Boolean),s=[...t?[t]:a??[]],l=q.state.isUniversalProvider?!1:s.length,h=e,d=o,T=_.checkInstalled(s),g=l&&T,v=i&&!E.isMobile();g&&!te.state.noAdapters&&this.platforms.push("browser"),h&&this.platforms.push(E.isMobile()?"mobile":"qrcode"),d&&this.platforms.push("web"),v&&this.platforms.push("desktop"),!g&&l&&!te.state.noAdapters&&this.platforms.push("unsupported"),this.platform=this.platforms[0]}platformTemplate(){switch(this.platform){case"browser":return c``;case"web":return c``;case"desktop":return c` + this.initializeConnection(!0)}> + + `;case"mobile":return c` + this.initializeConnection(!0)}> + + `;case"qrcode":return c``;default:return c``}}headerTemplate(){return this.platforms.length>1?c` + + + `:null}async onSelectPlatform(e){var o;const i=(o=this.shadowRoot)==null?void 0:o.querySelector("div");i&&(await i.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.platform=e,i.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}};Ze([y()],Le.prototype,"platform",void 0);Ze([y()],Le.prototype,"platforms",void 0);Ze([y()],Le.prototype,"isSiwxEnabled",void 0);Ze([y()],Le.prototype,"remoteFeatures",void 0);Le=Ze([C("w3m-connecting-wc-view")],Le);var Fi=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Gt=class extends I{constructor(){super(...arguments),this.isMobile=E.isMobile()}render(){if(this.isMobile){const{featured:e,recommended:i}=S.state,{customWallets:o}=q.state,n=bt.getRecentWallets(),t=e.length||i.length||(o==null?void 0:o.length)||n.length;return c` + ${t?c``:null} + + `}return c` + + + `}};Fi([y()],Gt.prototype,"isMobile",void 0);Gt=Fi([C("w3m-connecting-wc-basic-view")],Gt);/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const ri=()=>new mo;class mo{}const zt=new WeakMap,ai=Ji(class extends Qi{render(r){return ci}update(r,[e]){var o;const i=e!==this.G;return i&&this.G!==void 0&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.G=e,this.ht=(o=r.options)==null?void 0:o.host,this.rt(this.ct=r.element)),ci}rt(r){if(this.isConnected||(r=void 0),typeof this.G=="function"){const e=this.ht??globalThis;let i=zt.get(e);i===void 0&&(i=new WeakMap,zt.set(e,i)),i.get(this.G)!==void 0&&this.G.call(this.ht,void 0),i.set(this.G,r),r!==void 0&&this.G.call(this.ht,r)}else this.G.value=r}get lt(){var r,e;return typeof this.G=="function"?(r=zt.get(this.ht??globalThis))==null?void 0:r.get(this.G):(e=this.G)==null?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}}),vo=L` + :host { + display: flex; + align-items: center; + justify-content: center; + } + + label { + position: relative; + display: inline-block; + width: 32px; + height: 22px; + } + + input { + width: 0; + height: 0; + opacity: 0; + } + + span { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: var(--wui-color-blue-100); + border-width: 1px; + border-style: solid; + border-color: var(--wui-color-gray-glass-002); + border-radius: 999px; + transition: + background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + border-color var(--wui-ease-inout-power-1) var(--wui-duration-md); + will-change: background-color, border-color; + } + + span:before { + position: absolute; + content: ''; + height: 16px; + width: 16px; + left: 3px; + top: 2px; + background-color: var(--wui-color-inverse-100); + transition: transform var(--wui-ease-inout-power-1) var(--wui-duration-lg); + will-change: transform; + border-radius: 50%; + } + + input:checked + span { + border-color: var(--wui-color-gray-glass-005); + background-color: var(--wui-color-blue-100); + } + + input:not(:checked) + span { + background-color: var(--wui-color-gray-glass-010); + } + + input:checked + span:before { + transform: translateX(calc(100% - 7px)); + } +`;var Vi=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ht=class extends I{constructor(){super(...arguments),this.inputElementRef=ri(),this.checked=void 0}render(){return c` + + `}dispatchChangeEvent(){var e;this.dispatchEvent(new CustomEvent("switchChange",{detail:(e=this.inputElementRef.value)==null?void 0:e.checked,bubbles:!0,composed:!0}))}};ht.styles=[B,M,Yi,vo];Vi([u({type:Boolean})],ht.prototype,"checked",void 0);ht=Vi([C("wui-switch")],ht);const yo=L` + :host { + height: 100%; + } + + button { + display: flex; + align-items: center; + justify-content: center; + column-gap: var(--wui-spacing-1xs); + padding: var(--wui-spacing-xs) var(--wui-spacing-s); + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: background-color; + cursor: pointer; + } + + wui-switch { + pointer-events: none; + } +`;var qi=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let pt=class extends I{constructor(){super(...arguments),this.checked=void 0}render(){return c` + + `}};pt.styles=[B,M,yo];qi([u({type:Boolean})],pt.prototype,"checked",void 0);pt=qi([C("wui-certified-switch")],pt);const xo=L` + button { + background-color: var(--wui-color-fg-300); + border-radius: var(--wui-border-radius-4xs); + width: 16px; + height: 16px; + } + + button:disabled { + background-color: var(--wui-color-bg-300); + } + + wui-icon { + color: var(--wui-color-bg-200) !important; + } + + button:focus-visible { + background-color: var(--wui-color-fg-250); + border: 1px solid var(--wui-color-accent-100); + } + + @media (hover: hover) and (pointer: fine) { + button:hover:enabled { + background-color: var(--wui-color-fg-250); + } + + button:active:enabled { + background-color: var(--wui-color-fg-225); + } + } +`;var Hi=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let ft=class extends I{constructor(){super(...arguments),this.icon="copy"}render(){return c` + + `}};ft.styles=[B,M,xo];Hi([u()],ft.prototype,"icon",void 0);ft=Hi([C("wui-input-element")],ft);const Co=L` + :host { + position: relative; + width: 100%; + display: inline-block; + color: var(--wui-color-fg-275); + } + + input { + width: 100%; + border-radius: var(--wui-border-radius-xs); + box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002); + background: var(--wui-color-gray-glass-002); + font-size: var(--wui-font-size-paragraph); + letter-spacing: var(--wui-letter-spacing-paragraph); + color: var(--wui-color-fg-100); + transition: + background-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + border-color var(--wui-ease-inout-power-1) var(--wui-duration-md), + box-shadow var(--wui-ease-inout-power-1) var(--wui-duration-md); + will-change: background-color, border-color, box-shadow; + caret-color: var(--wui-color-accent-100); + } + + input:disabled { + cursor: not-allowed; + border: 1px solid var(--wui-color-gray-glass-010); + } + + input:disabled::placeholder, + input:disabled + wui-icon { + color: var(--wui-color-fg-300); + } + + input::placeholder { + color: var(--wui-color-fg-275); + } + + input:focus:enabled { + background-color: var(--wui-color-gray-glass-005); + -webkit-box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + -moz-box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + box-shadow: + inset 0 0 0 1px var(--wui-color-accent-100), + 0px 0px 0px 4px var(--wui-box-shadow-blue); + } + + input:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + wui-icon { + position: absolute; + top: 50%; + transform: translateY(-50%); + pointer-events: none; + } + + .wui-size-sm { + padding: 9px var(--wui-spacing-m) 10px var(--wui-spacing-s); + } + + wui-icon + .wui-size-sm { + padding: 9px var(--wui-spacing-m) 10px 36px; + } + + wui-icon[data-input='sm'] { + left: var(--wui-spacing-s); + } + + .wui-size-md { + padding: 15px var(--wui-spacing-m) var(--wui-spacing-l) var(--wui-spacing-m); + } + + wui-icon + .wui-size-md, + wui-loading-spinner + .wui-size-md { + padding: 10.5px var(--wui-spacing-3xl) 10.5px var(--wui-spacing-3xl); + } + + wui-icon[data-input='md'] { + left: var(--wui-spacing-l); + } + + .wui-size-lg { + padding: var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-l); + letter-spacing: var(--wui-letter-spacing-medium-title); + font-size: var(--wui-font-size-medium-title); + font-weight: var(--wui-font-weight-light); + line-height: 130%; + color: var(--wui-color-fg-100); + height: 64px; + } + + .wui-padding-right-xs { + padding-right: var(--wui-spacing-xs); + } + + .wui-padding-right-s { + padding-right: var(--wui-spacing-s); + } + + .wui-padding-right-m { + padding-right: var(--wui-spacing-m); + } + + .wui-padding-right-l { + padding-right: var(--wui-spacing-l); + } + + .wui-padding-right-xl { + padding-right: var(--wui-spacing-xl); + } + + .wui-padding-right-2xl { + padding-right: var(--wui-spacing-2xl); + } + + .wui-padding-right-3xl { + padding-right: var(--wui-spacing-3xl); + } + + .wui-padding-right-4xl { + padding-right: var(--wui-spacing-4xl); + } + + .wui-padding-right-5xl { + padding-right: var(--wui-spacing-5xl); + } + + wui-icon + .wui-size-lg, + wui-loading-spinner + .wui-size-lg { + padding-left: 50px; + } + + wui-icon[data-input='lg'] { + left: var(--wui-spacing-l); + } + + .wui-size-mdl { + padding: 17.25px var(--wui-spacing-m) 17.25px var(--wui-spacing-m); + } + wui-icon + .wui-size-mdl, + wui-loading-spinner + .wui-size-mdl { + padding: 17.25px var(--wui-spacing-3xl) 17.25px 40px; + } + wui-icon[data-input='mdl'] { + left: var(--wui-spacing-m); + } + + input:placeholder-shown ~ ::slotted(wui-input-element), + input:placeholder-shown ~ ::slotted(wui-icon) { + opacity: 0; + pointer-events: none; + } + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + + input[type='number'] { + -moz-appearance: textfield; + } + + ::slotted(wui-input-element), + ::slotted(wui-icon) { + position: absolute; + top: 50%; + transform: translateY(-50%); + } + + ::slotted(wui-input-element) { + right: var(--wui-spacing-m); + } + + ::slotted(wui-icon) { + right: 0px; + } +`;var re=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let K=class extends I{constructor(){super(...arguments),this.inputElementRef=ri(),this.size="md",this.disabled=!1,this.placeholder="",this.type="text",this.value=""}render(){const e=`wui-padding-right-${this.inputRightPadding}`,o={[`wui-size-${this.size}`]:!0,[e]:!!this.inputRightPadding};return c`${this.templateIcon()} + + `}templateIcon(){return this.icon?c``:null}dispatchInputChangeEvent(){var e;this.dispatchEvent(new CustomEvent("inputChange",{detail:(e=this.inputElementRef.value)==null?void 0:e.value,bubbles:!0,composed:!0}))}};K.styles=[B,M,Co];re([u()],K.prototype,"size",void 0);re([u()],K.prototype,"icon",void 0);re([u({type:Boolean})],K.prototype,"disabled",void 0);re([u()],K.prototype,"placeholder",void 0);re([u()],K.prototype,"type",void 0);re([u()],K.prototype,"keyHint",void 0);re([u()],K.prototype,"value",void 0);re([u()],K.prototype,"inputRightPadding",void 0);re([u()],K.prototype,"tabIdx",void 0);K=re([C("wui-input-text")],K);const $o=L` + :host { + position: relative; + display: inline-block; + width: 100%; + } +`;var Ro=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Yt=class extends I{constructor(){super(...arguments),this.inputComponentRef=ri()}render(){return c` + + + + `}clearValue(){const e=this.inputComponentRef.value,i=e==null?void 0:e.inputElementRef.value;i&&(i.value="",i.focus(),i.dispatchEvent(new Event("input")))}};Yt.styles=[B,$o];Yt=Ro([C("wui-search-bar")],Yt);const _o=ke` + +`,Io=L` + :host { + display: flex; + flex-direction: column; + align-items: center; + width: 104px; + row-gap: var(--wui-spacing-xs); + padding: var(--wui-spacing-xs) 10px; + background-color: var(--wui-color-gray-glass-002); + border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); + position: relative; + } + + wui-shimmer[data-type='network'] { + border: none; + -webkit-clip-path: var(--wui-path-network); + clip-path: var(--wui-path-network); + } + + svg { + position: absolute; + width: 48px; + height: 54px; + z-index: 1; + } + + svg > path { + stroke: var(--wui-color-gray-glass-010); + stroke-width: 1px; + } + + @media (max-width: 350px) { + :host { + width: 100%; + } + } +`;var Ki=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let gt=class extends I{constructor(){super(...arguments),this.type="wallet"}render(){return c` + ${this.shimmerTemplate()} + + `}shimmerTemplate(){return this.type==="network"?c` + ${_o}`:c``}};gt.styles=[B,M,Io];Ki([u()],gt.prototype,"type",void 0);gt=Ki([C("wui-card-select-loader")],gt);const Eo=L` + :host { + display: grid; + width: inherit; + height: inherit; + } +`;var G=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let D=class extends I{render(){return this.style.cssText=` + grid-template-rows: ${this.gridTemplateRows}; + grid-template-columns: ${this.gridTemplateColumns}; + justify-items: ${this.justifyItems}; + align-items: ${this.alignItems}; + justify-content: ${this.justifyContent}; + align-content: ${this.alignContent}; + column-gap: ${this.columnGap&&`var(--wui-spacing-${this.columnGap})`}; + row-gap: ${this.rowGap&&`var(--wui-spacing-${this.rowGap})`}; + gap: ${this.gap&&`var(--wui-spacing-${this.gap})`}; + padding-top: ${this.padding&&le.getSpacingStyles(this.padding,0)}; + padding-right: ${this.padding&&le.getSpacingStyles(this.padding,1)}; + padding-bottom: ${this.padding&&le.getSpacingStyles(this.padding,2)}; + padding-left: ${this.padding&&le.getSpacingStyles(this.padding,3)}; + margin-top: ${this.margin&&le.getSpacingStyles(this.margin,0)}; + margin-right: ${this.margin&&le.getSpacingStyles(this.margin,1)}; + margin-bottom: ${this.margin&&le.getSpacingStyles(this.margin,2)}; + margin-left: ${this.margin&&le.getSpacingStyles(this.margin,3)}; + `,c``}};D.styles=[B,Eo];G([u()],D.prototype,"gridTemplateRows",void 0);G([u()],D.prototype,"gridTemplateColumns",void 0);G([u()],D.prototype,"justifyItems",void 0);G([u()],D.prototype,"alignItems",void 0);G([u()],D.prototype,"justifyContent",void 0);G([u()],D.prototype,"alignContent",void 0);G([u()],D.prototype,"columnGap",void 0);G([u()],D.prototype,"rowGap",void 0);G([u()],D.prototype,"gap",void 0);G([u()],D.prototype,"padding",void 0);G([u()],D.prototype,"margin",void 0);D=G([C("wui-grid")],D);const Wo=L` + button { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + cursor: pointer; + width: 104px; + row-gap: var(--wui-spacing-xs); + padding: var(--wui-spacing-s) var(--wui-spacing-0); + background-color: var(--wui-color-gray-glass-002); + border-radius: clamp(0px, var(--wui-border-radius-xs), 20px); + transition: + color var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: background-color, color, border-radius; + outline: none; + border: none; + } + + button > wui-flex > wui-text { + color: var(--wui-color-fg-100); + max-width: 86px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + justify-content: center; + } + + button > wui-flex > wui-text.certified { + max-width: 66px; + } + + button:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + button:disabled > wui-flex > wui-text { + color: var(--wui-color-gray-glass-015); + } + + [data-selected='true'] { + background-color: var(--wui-color-accent-glass-020); + } + + @media (hover: hover) and (pointer: fine) { + [data-selected='true']:hover:enabled { + background-color: var(--wui-color-accent-glass-015); + } + } + + [data-selected='true']:active:enabled { + background-color: var(--wui-color-accent-glass-010); + } + + @media (max-width: 350px) { + button { + width: 100%; + } + } +`;var et=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Ce=class extends I{constructor(){super(),this.observer=new IntersectionObserver(()=>{}),this.visible=!1,this.imageSrc=void 0,this.imageLoading=!1,this.wallet=void 0,this.observer=new IntersectionObserver(e=>{e.forEach(i=>{i.isIntersecting?(this.visible=!0,this.fetchImageSrc()):this.visible=!1})},{threshold:.01})}firstUpdated(){this.observer.observe(this)}disconnectedCallback(){this.observer.disconnect()}render(){var i,o;const e=((i=this.wallet)==null?void 0:i.badge_type)==="certified";return c` + + `}imageTemplate(){var e,i;return!this.visible&&!this.imageSrc||this.imageLoading?this.shimmerTemplate():c` + + + `}shimmerTemplate(){return c``}async fetchImageSrc(){this.wallet&&(this.imageSrc=z.getWalletImage(this.wallet),!this.imageSrc&&(this.imageLoading=!0,this.imageSrc=await z.fetchWalletImage(this.wallet.image_id),this.imageLoading=!1))}};Ce.styles=Wo;et([y()],Ce.prototype,"visible",void 0);et([y()],Ce.prototype,"imageSrc",void 0);et([y()],Ce.prototype,"imageLoading",void 0);et([u()],Ce.prototype,"wallet",void 0);Ce=et([C("w3m-all-wallets-list-item")],Ce);const To=L` + wui-grid { + max-height: clamp(360px, 400px, 80vh); + overflow: scroll; + scrollbar-width: none; + grid-auto-rows: min-content; + grid-template-columns: repeat(auto-fill, 104px); + } + + @media (max-width: 350px) { + wui-grid { + grid-template-columns: repeat(2, 1fr); + } + } + + wui-grid[data-scroll='false'] { + overflow: hidden; + } + + wui-grid::-webkit-scrollbar { + display: none; + } + + wui-loading-spinner { + padding-top: var(--wui-spacing-l); + padding-bottom: var(--wui-spacing-l); + justify-content: center; + grid-column: 1 / span 4; + } +`;var Be=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};const mi="local-paginator";let ge=class extends I{constructor(){super(),this.unsubscribe=[],this.paginationObserver=void 0,this.loading=!S.state.wallets.length,this.wallets=S.state.wallets,this.recommended=S.state.recommended,this.featured=S.state.featured,this.filteredWallets=S.state.filteredWallets,this.unsubscribe.push(S.subscribeKey("wallets",e=>this.wallets=e),S.subscribeKey("recommended",e=>this.recommended=e),S.subscribeKey("featured",e=>this.featured=e),S.subscribeKey("filteredWallets",e=>this.filteredWallets=e))}firstUpdated(){this.initialFetch(),this.createPaginationObserver()}disconnectedCallback(){var e;this.unsubscribe.forEach(i=>i()),(e=this.paginationObserver)==null||e.disconnect()}render(){return c` + + ${this.loading?this.shimmerTemplate(16):this.walletsTemplate()} + ${this.paginationLoaderTemplate()} + + `}async initialFetch(){var i;this.loading=!0;const e=(i=this.shadowRoot)==null?void 0:i.querySelector("wui-grid");e&&(await S.fetchWalletsByPage({page:1}),await e.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.loading=!1,e.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}shimmerTemplate(e,i){return[...Array(e)].map(()=>c` + + `)}getWallets(){var n;const e=[...this.featured,...this.recommended];((n=this.filteredWallets)==null?void 0:n.length)>0?e.push(...this.filteredWallets):e.push(...this.wallets);const i=E.uniqueBy(e,"id"),o=De.markWalletsAsInstalled(i);return De.markWalletsWithDisplayIndex(o)}walletsTemplate(){return this.getWallets().map(i=>c` + this.onConnectWallet(i)} + .wallet=${i} + > + `)}paginationLoaderTemplate(){const{wallets:e,recommended:i,featured:o,count:n}=S.state,t=window.innerWidth<352?3:4,a=e.length+i.length;let l=Math.ceil(a/t)*t-a+t;return l-=e.length?o.length%t:0,n===0&&o.length>0?null:n===0||[...o,...e,...i].length{if(o!=null&&o.isIntersecting&&!this.loading){const{page:n,count:t,wallets:a}=S.state;a.length=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let Oe=class extends I{constructor(){super(...arguments),this.prevQuery="",this.prevBadge=void 0,this.loading=!0,this.query=""}render(){return this.onSearch(),this.loading?c``:this.walletsTemplate()}async onSearch(){(this.query.trim()!==this.prevQuery.trim()||this.badge!==this.prevBadge)&&(this.prevQuery=this.query,this.prevBadge=this.badge,this.loading=!0,await S.searchWallet({search:this.query,badge:this.badge}),this.loading=!1)}walletsTemplate(){const{search:e}=S.state,i=De.markWalletsAsInstalled(e);return e.length?c` + + ${i.map(o=>c` + this.onConnectWallet(o)} + .wallet=${o} + data-testid="wallet-search-item-${o.id}" + > + `)} + + `:c` + + + + No Wallet found + + + `}onConnectWallet(e){O.selectWalletConnector(e)}};Oe.styles=So;St([y()],Oe.prototype,"loading",void 0);St([u()],Oe.prototype,"query",void 0);St([u()],Oe.prototype,"badge",void 0);Oe=St([C("w3m-all-wallets-search")],Oe);var si=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let wt=class extends I{constructor(){super(...arguments),this.search="",this.onDebouncedSearch=E.debounce(e=>{this.search=e})}render(){const e=this.search.length>=2;return c` + + + + ${this.qrButtonTemplate()} + + ${e||this.badge?c``:c``} + `}onInputChange(e){this.onDebouncedSearch(e.detail)}onClick(){if(this.badge==="certified"){this.badge=void 0;return}this.badge="certified",Me.showSvg("Only WalletConnect certified",{icon:"walletConnectBrown",iconColor:"accent-100"})}qrButtonTemplate(){return E.isMobile()?c` + + `:null}onWalletConnectQr(){A.push("ConnectingWalletConnect")}};si([y()],wt.prototype,"search",void 0);si([y()],wt.prototype,"badge",void 0);wt=si([C("w3m-all-wallets-view")],wt);const Lo=L` + button { + column-gap: var(--wui-spacing-s); + padding: 11px 18px 11px var(--wui-spacing-s); + width: 100%; + background-color: var(--wui-color-gray-glass-002); + border-radius: var(--wui-border-radius-xs); + color: var(--wui-color-fg-250); + transition: + color var(--wui-ease-out-power-1) var(--wui-duration-md), + background-color var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: color, background-color; + } + + button[data-iconvariant='square'], + button[data-iconvariant='square-blue'] { + padding: 6px 18px 6px 9px; + } + + button > wui-flex { + flex: 1; + } + + button > wui-image { + width: 32px; + height: 32px; + box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); + border-radius: var(--wui-border-radius-3xl); + } + + button > wui-icon { + width: 36px; + height: 36px; + transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md); + will-change: opacity; + } + + button > wui-icon-box[data-variant='blue'] { + box-shadow: 0 0 0 2px var(--wui-color-accent-glass-005); + } + + button > wui-icon-box[data-variant='overlay'] { + box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005); + } + + button > wui-icon-box[data-variant='square-blue'] { + border-radius: var(--wui-border-radius-3xs); + position: relative; + border: none; + width: 36px; + height: 36px; + } + + button > wui-icon-box[data-variant='square-blue']::after { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + border-radius: inherit; + border: 1px solid var(--wui-color-accent-glass-010); + pointer-events: none; + } + + button > wui-icon:last-child { + width: 14px; + height: 14px; + } + + button:disabled { + color: var(--wui-color-gray-glass-020); + } + + button[data-loading='true'] > wui-icon { + opacity: 0; + } + + wui-loading-spinner { + position: absolute; + right: 18px; + top: 50%; + transform: translateY(-50%); + } +`;var Z=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let F=class extends I{constructor(){super(...arguments),this.tabIdx=void 0,this.variant="icon",this.disabled=!1,this.imageSrc=void 0,this.alt=void 0,this.chevron=!1,this.loading=!1}render(){return c` + + `}visualTemplate(){if(this.variant==="image"&&this.imageSrc)return c``;if(this.iconVariant==="square"&&this.icon&&this.variant==="icon")return c``;if(this.variant==="icon"&&this.icon&&this.iconVariant){const e=["blue","square-blue"].includes(this.iconVariant)?"accent-100":"fg-200",i=this.iconVariant==="square-blue"?"mdl":"md",o=this.iconSize?this.iconSize:i;return c` + + `}return null}loadingTemplate(){return this.loading?c``:c``}chevronTemplate(){return this.chevron?c``:null}};F.styles=[B,M,Lo];Z([u()],F.prototype,"icon",void 0);Z([u()],F.prototype,"iconSize",void 0);Z([u()],F.prototype,"tabIdx",void 0);Z([u()],F.prototype,"variant",void 0);Z([u()],F.prototype,"iconVariant",void 0);Z([u({type:Boolean})],F.prototype,"disabled",void 0);Z([u()],F.prototype,"imageSrc",void 0);Z([u()],F.prototype,"alt",void 0);Z([u({type:Boolean})],F.prototype,"chevron",void 0);Z([u({type:Boolean})],F.prototype,"loading",void 0);F=Z([C("wui-list-item")],F);var Oo=function(r,e,i,o){var n=arguments.length,t=n<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,i):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,i,o);else for(var s=r.length-1;s>=0;s--)(a=r[s])&&(t=(n<3?a(t):n>3?a(e,i,t):a(e,i))||t);return n>3&&t&&Object.defineProperty(e,i,t),t};let vi=class extends I{constructor(){var e;super(...arguments),this.wallet=(e=A.state.data)==null?void 0:e.wallet}render(){if(!this.wallet)throw new Error("w3m-downloads-view");return c` + + ${this.chromeTemplate()} ${this.iosTemplate()} ${this.androidTemplate()} + ${this.homepageTemplate()} + + `}chromeTemplate(){var e;return(e=this.wallet)!=null&&e.chrome_store?c` + Chrome Extension + `:null}iosTemplate(){var e;return(e=this.wallet)!=null&&e.app_store?c` + iOS App + `:null}androidTemplate(){var e;return(e=this.wallet)!=null&&e.play_store?c` + Android App + `:null}homepageTemplate(){var e;return(e=this.wallet)!=null&&e.homepage?c` + + Website + + `:null}onChromeStore(){var e;(e=this.wallet)!=null&&e.chrome_store&&E.openHref(this.wallet.chrome_store,"_blank")}onAppStore(){var e;(e=this.wallet)!=null&&e.app_store&&E.openHref(this.wallet.app_store,"_blank")}onPlayStore(){var e;(e=this.wallet)!=null&&e.play_store&&E.openHref(this.wallet.play_store,"_blank")}onHomePage(){var e;(e=this.wallet)!=null&&e.homepage&&E.openHref(this.wallet.homepage,"_blank")}};vi=Oo([C("w3m-downloads-view")],vi);export{wt as W3mAllWalletsView,Gt as W3mConnectingWcBasicView,vi as W3mDownloadsView}; +//# sourceMappingURL=basic-BikkqjP4.js.map diff --git a/dist/assets/basic-BikkqjP4.js.map b/dist/assets/basic-BikkqjP4.js.map new file mode 100644 index 0000000..fa4276d --- /dev/null +++ b/dist/assets/basic-BikkqjP4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"basic-BikkqjP4.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-wallet-image/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-wallet-image/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-all-wallets-image/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-all-wallets-image/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-list-wallet/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-list-wallet/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-announced-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-custom-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-external-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-featured-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-injected-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-multi-chain-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-recent-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-recommended-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connect-walletconnect-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connector-list/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connector-list/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-tabs/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-tabs/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-header/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-button/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-button/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-link/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-link/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-loading-thumbnail/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-loading-thumbnail/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-chip-button/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-chip-button/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-cta-button/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-cta-button/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-mobile-download-links/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-mobile-download-links/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/w3m-connecting-widget/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/w3m-connecting-widget/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-browser/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-desktop/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-mobile/index.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/can-promise.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/utils.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/error-correction-level.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/bit-buffer.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/bit-matrix.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/alignment-pattern.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/finder-pattern.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/mask-pattern.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/error-correction-code.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/galois-field.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/polynomial.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/reed-solomon-encoder.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/version-check.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/regex.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/mode.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/version.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/format-info.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/numeric-data.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/alphanumeric-data.js","../../node_modules/.pnpm/encode-utf8@1.0.3/node_modules/encode-utf8/index.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/byte-data.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/kanji-data.js","../../node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/segments.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/core/qrcode.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/renderer/utils.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/renderer/canvas.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/renderer/svg-tag.js","../../node_modules/.pnpm/qrcode@1.5.3/node_modules/qrcode/lib/browser.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/QrCode.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-qr-code/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-qr-code/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-shimmer/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-shimmer/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-ux-by-reown/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-ux-by-reown/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-qrcode/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-qrcode/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-unsupported/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-connecting-wc-web/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-connecting-wc-view/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-connecting-wc-basic-view/index.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/ref.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-switch/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-switch/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-certified-switch/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-certified-switch/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-element/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-element/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-text/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-input-text/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-search-bar/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-search-bar/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/networkMd.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-card-select-loader/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-card-select-loader/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/layout/wui-grid/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/layout/wui-grid/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-list-item/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-list-item/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-list/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-list/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-search/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-all-wallets-search/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-all-wallets-view/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-list-item/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-list-item/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/views/w3m-downloads-view/index.js"],"sourcesContent":["import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n background-color: var(--wui-color-gray-glass-002);\n display: flex;\n justify-content: center;\n align-items: center;\n width: var(--local-size);\n height: var(--local-size);\n border-radius: inherit;\n border-radius: var(--local-border-radius);\n }\n\n :host > wui-flex {\n overflow: hidden;\n border-radius: inherit;\n border-radius: var(--local-border-radius);\n }\n\n :host::after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: inherit;\n border: 1px solid var(--wui-color-gray-glass-010);\n pointer-events: none;\n }\n\n :host([name='Extension'])::after {\n border: 1px solid var(--wui-color-accent-glass-010);\n }\n\n :host([data-wallet-icon='allWallets']) {\n background-color: var(--wui-all-wallets-bg-100);\n }\n\n :host([data-wallet-icon='allWallets'])::after {\n border: 1px solid var(--wui-color-accent-glass-010);\n }\n\n wui-icon[data-parent-size='inherit'] {\n width: 75%;\n height: 75%;\n align-items: center;\n }\n\n wui-icon[data-parent-size='sm'] {\n width: 18px;\n height: 18px;\n }\n\n wui-icon[data-parent-size='md'] {\n width: 24px;\n height: 24px;\n }\n\n wui-icon[data-parent-size='lg'] {\n width: 42px;\n height: 42px;\n }\n\n wui-icon[data-parent-size='full'] {\n width: 100%;\n height: 100%;\n }\n\n :host > wui-icon-box {\n position: absolute;\n overflow: hidden;\n right: -1px;\n bottom: -2px;\n z-index: 1;\n border: 2px solid var(--wui-color-bg-150, #1e1f1f);\n padding: 1px;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-image/index.js';\nimport '../../layout/wui-flex/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-icon-box/index.js';\nimport styles from './styles.js';\nlet WuiWalletImage = class WuiWalletImage extends LitElement {\n constructor() {\n super(...arguments);\n this.size = 'md';\n this.name = '';\n this.installed = false;\n this.badgeSize = 'xs';\n }\n render() {\n let borderRadius = 'xxs';\n if (this.size === 'lg') {\n borderRadius = 'm';\n }\n else if (this.size === 'md') {\n borderRadius = 'xs';\n }\n else {\n borderRadius = 'xxs';\n }\n this.style.cssText = `\n --local-border-radius: var(--wui-border-radius-${borderRadius});\n --local-size: var(--wui-wallet-image-size-${this.size});\n `;\n if (this.walletIcon) {\n this.dataset['walletIcon'] = this.walletIcon;\n }\n return html `\n ${this.templateVisual()} \n `;\n }\n templateVisual() {\n if (this.imageSrc) {\n return html ``;\n }\n else if (this.walletIcon) {\n return html ``;\n }\n return html ``;\n }\n};\nWuiWalletImage.styles = [elementStyles, resetStyles, styles];\n__decorate([\n property()\n], WuiWalletImage.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiWalletImage.prototype, \"name\", void 0);\n__decorate([\n property()\n], WuiWalletImage.prototype, \"imageSrc\", void 0);\n__decorate([\n property()\n], WuiWalletImage.prototype, \"walletIcon\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiWalletImage.prototype, \"installed\", void 0);\n__decorate([\n property()\n], WuiWalletImage.prototype, \"badgeSize\", void 0);\nWuiWalletImage = __decorate([\n customElement('wui-wallet-image')\n], WuiWalletImage);\nexport { WuiWalletImage };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n border-radius: var(--wui-border-radius-xxs);\n width: 40px;\n height: 40px;\n overflow: hidden;\n background: var(--wui-color-gray-glass-002);\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--wui-spacing-4xs);\n padding: 3.75px !important;\n }\n\n :host::after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: inherit;\n border: 1px solid var(--wui-color-gray-glass-010);\n pointer-events: none;\n }\n\n :host > wui-wallet-image {\n width: 14px;\n height: 14px;\n border-radius: var(--wui-border-radius-5xs);\n }\n\n :host > wui-flex {\n padding: 2px;\n position: fixed;\n overflow: hidden;\n left: 34px;\n bottom: 8px;\n background: var(--dark-background-150, #1e1f1f);\n border-radius: 50%;\n z-index: 2;\n display: flex;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport '../../layout/wui-flex/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-icon-box/index.js';\nimport '../wui-wallet-image/index.js';\nimport styles from './styles.js';\nconst TOTAL_IMAGES = 4;\nlet WuiAllWalletsImage = class WuiAllWalletsImage extends LitElement {\n constructor() {\n super(...arguments);\n this.walletImages = [];\n }\n render() {\n const isPlaceholders = this.walletImages.length < TOTAL_IMAGES;\n return html `${this.walletImages\n .slice(0, TOTAL_IMAGES)\n .map(({ src, walletName }) => html `\n \n `)}\n ${isPlaceholders\n ? [...Array(TOTAL_IMAGES - this.walletImages.length)].map(() => html ` `)\n : null}\n \n \n `;\n }\n};\nWuiAllWalletsImage.styles = [resetStyles, styles];\n__decorate([\n property({ type: Array })\n], WuiAllWalletsImage.prototype, \"walletImages\", void 0);\nWuiAllWalletsImage = __decorate([\n customElement('wui-all-wallets-image')\n], WuiAllWalletsImage);\nexport { WuiAllWalletsImage };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n column-gap: var(--wui-spacing-s);\n padding: 7px var(--wui-spacing-l) 7px var(--wui-spacing-xs);\n width: 100%;\n background-color: var(--wui-color-gray-glass-002);\n border-radius: var(--wui-border-radius-xs);\n color: var(--wui-color-fg-100);\n }\n\n button > wui-text:nth-child(2) {\n display: flex;\n flex: 1;\n }\n\n button:disabled {\n background-color: var(--wui-color-gray-glass-015);\n color: var(--wui-color-gray-glass-015);\n }\n\n button:disabled > wui-tag {\n background-color: var(--wui-color-gray-glass-010);\n color: var(--wui-color-fg-300);\n }\n\n wui-icon {\n color: var(--wui-color-fg-200) !important;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-text/index.js';\nimport '../../composites/wui-icon-box/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-all-wallets-image/index.js';\nimport '../wui-tag/index.js';\nimport '../wui-wallet-image/index.js';\nimport styles from './styles.js';\nlet WuiListWallet = class WuiListWallet extends LitElement {\n constructor() {\n super(...arguments);\n this.walletImages = [];\n this.imageSrc = '';\n this.name = '';\n this.tabIdx = undefined;\n this.installed = false;\n this.disabled = false;\n this.showAllWallets = false;\n this.loading = false;\n this.loadingSpinnerColor = 'accent-100';\n }\n render() {\n return html `\n \n `;\n }\n templateAllWallets() {\n if (this.showAllWallets && this.imageSrc) {\n return html ` `;\n }\n else if (this.showAllWallets && this.walletIcon) {\n return html ` `;\n }\n return null;\n }\n templateWalletImage() {\n if (!this.showAllWallets && this.imageSrc) {\n return html ``;\n }\n else if (!this.showAllWallets && !this.imageSrc) {\n return html ``;\n }\n return null;\n }\n templateStatus() {\n if (this.loading) {\n return html ``;\n }\n else if (this.tagLabel && this.tagVariant) {\n return html `${this.tagLabel}`;\n }\n else if (this.icon) {\n return html ``;\n }\n return null;\n }\n};\nWuiListWallet.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property({ type: Array })\n], WuiListWallet.prototype, \"walletImages\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"imageSrc\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"name\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"tagLabel\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"tagVariant\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"icon\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"walletIcon\", void 0);\n__decorate([\n property()\n], WuiListWallet.prototype, \"tabIdx\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListWallet.prototype, \"installed\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListWallet.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListWallet.prototype, \"showAllWallets\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListWallet.prototype, \"loading\", void 0);\n__decorate([\n property({ type: String })\n], WuiListWallet.prototype, \"loadingSpinnerColor\", void 0);\nWuiListWallet = __decorate([\n customElement('wui-list-wallet')\n], WuiListWallet);\nexport { WuiListWallet };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ApiController, ConnectionController, ConnectorController, CoreHelperUtil, EventsController, OptionsController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-list-wallet';\nlet W3mAllWalletsWidget = class W3mAllWalletsWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.count = ApiController.state.count;\n this.filteredCount = ApiController.state.filteredWallets.length;\n this.isFetchingRecommendedWallets = ApiController.state.isFetchingRecommendedWallets;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)), ApiController.subscribeKey('count', val => (this.count = val)), ApiController.subscribeKey('filteredWallets', val => (this.filteredCount = val.length)), ApiController.subscribeKey('isFetchingRecommendedWallets', val => (this.isFetchingRecommendedWallets = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const wcConnector = this.connectors.find(c => c.id === 'walletConnect');\n const { allWallets } = OptionsController.state;\n if (!wcConnector || allWallets === 'HIDE') {\n return null;\n }\n if (allWallets === 'ONLY_MOBILE' && !CoreHelperUtil.isMobile()) {\n return null;\n }\n const featuredCount = ApiController.state.featured.length;\n const rawCount = this.count + featuredCount;\n const roundedCount = rawCount < 10 ? rawCount : Math.floor(rawCount / 10) * 10;\n const count = this.filteredCount > 0 ? this.filteredCount : roundedCount;\n let tagLabel = `${count}`;\n if (this.filteredCount > 0) {\n tagLabel = `${this.filteredCount}`;\n }\n else if (count < rawCount) {\n tagLabel = `${count}+`;\n }\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n \n `;\n }\n onAllWallets() {\n EventsController.sendEvent({ type: 'track', event: 'CLICK_ALL_WALLETS' });\n RouterController.push('AllWallets');\n }\n};\n__decorate([\n property()\n], W3mAllWalletsWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mAllWalletsWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mAllWalletsWidget.prototype, \"count\", void 0);\n__decorate([\n state()\n], W3mAllWalletsWidget.prototype, \"filteredCount\", void 0);\n__decorate([\n state()\n], W3mAllWalletsWidget.prototype, \"isFetchingRecommendedWallets\", void 0);\nW3mAllWalletsWidget = __decorate([\n customElement('w3m-all-wallets-widget')\n], W3mAllWalletsWidget);\nexport { W3mAllWalletsWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, ConnectionController, ConnectorController, CoreHelperUtil, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nimport { HelpersUtil } from '@reown/appkit-utils';\nimport { ConnectorUtil } from '../../utils/ConnectorUtil.js';\nlet W3mConnectAnnouncedWidget = class W3mConnectAnnouncedWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.connections = ConnectionController.state.connections;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)), ConnectionController.subscribeKey('connections', val => (this.connections = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const announcedConnectors = this.connectors.filter(connector => connector.type === 'ANNOUNCED');\n if (!announcedConnectors?.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n return html `\n \n ${announcedConnectors.filter(ConnectorUtil.showConnector).map(connector => {\n const connectionsByNamespace = this.connections.get(connector.chain) ?? [];\n const isAlreadyConnected = connectionsByNamespace.some(c => HelpersUtil.isLowerCaseMatch(c.connectorId, connector.id));\n return html `\n this.onConnector(connector)}\n tagVariant=${isAlreadyConnected ? 'shade' : 'success'}\n tagLabel=${isAlreadyConnected ? 'connected' : 'installed'}\n data-testid=${`wallet-selector-${connector.id}`}\n .installed=${true}\n tabIdx=${ifDefined(this.tabIdx)}\n >\n \n `;\n })}\n \n `;\n }\n onConnector(connector) {\n if (connector.id === 'walletConnect') {\n if (CoreHelperUtil.isMobile()) {\n RouterController.push('AllWallets');\n }\n else {\n RouterController.push('ConnectingWalletConnect');\n }\n }\n else {\n RouterController.push('ConnectingExternal', { connector });\n }\n }\n};\n__decorate([\n property()\n], W3mConnectAnnouncedWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectAnnouncedWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectAnnouncedWidget.prototype, \"connections\", void 0);\nW3mConnectAnnouncedWidget = __decorate([\n customElement('w3m-connect-announced-widget')\n], W3mConnectAnnouncedWidget);\nexport { W3mConnectAnnouncedWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil, ConnectionController, ConnectorController, CoreHelperUtil, OptionsController, RouterController, StorageUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nlet W3mConnectCustomWidget = class W3mConnectCustomWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.loading = false;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)));\n if (CoreHelperUtil.isTelegram() && CoreHelperUtil.isIos()) {\n this.loading = !ConnectionController.state.wcUri;\n this.unsubscribe.push(ConnectionController.subscribeKey('wcUri', val => (this.loading = !val)));\n }\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const { customWallets } = OptionsController.state;\n if (!customWallets?.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const wallets = this.filterOutDuplicateWallets(customWallets);\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n ${wallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n data-testid=${`wallet-selector-${wallet.id}`}\n tabIdx=${ifDefined(this.tabIdx)}\n ?loading=${this.loading}\n ?disabled=${hasWcConnection}\n >\n \n `)}\n `;\n }\n filterOutDuplicateWallets(wallets) {\n const recent = StorageUtil.getRecentWallets();\n const connectorRDNSs = this.connectors\n .map(connector => connector.info?.rdns)\n .filter(Boolean);\n const recentRDNSs = recent.map(wallet => wallet.rdns).filter(Boolean);\n const allRDNSs = connectorRDNSs.concat(recentRDNSs);\n if (allRDNSs.includes('io.metamask.mobile') && CoreHelperUtil.isMobile()) {\n const index = allRDNSs.indexOf('io.metamask.mobile');\n allRDNSs[index] = 'io.metamask';\n }\n const filtered = wallets.filter(wallet => !allRDNSs.includes(String(wallet?.rdns)));\n return filtered;\n }\n onConnectWallet(wallet) {\n if (this.loading) {\n return;\n }\n RouterController.push('ConnectingWalletConnect', { wallet });\n }\n};\n__decorate([\n property()\n], W3mConnectCustomWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectCustomWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectCustomWidget.prototype, \"loading\", void 0);\nW3mConnectCustomWidget = __decorate([\n customElement('w3m-connect-custom-widget')\n], W3mConnectCustomWidget);\nexport { W3mConnectCustomWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil, ConnectionController, ConnectorController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nimport { ConnectorUtil } from '../../utils/ConnectorUtil.js';\nlet W3mConnectExternalWidget = class W3mConnectExternalWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const externalConnectors = this.connectors.filter(connector => connector.type === 'EXTERNAL');\n const filteredOutExcludedConnectors = externalConnectors.filter(ConnectorUtil.showConnector);\n const filteredOutCoinbaseConnectors = filteredOutExcludedConnectors.filter(connector => connector.id !== CommonConstantsUtil.CONNECTOR_ID.COINBASE_SDK);\n if (!filteredOutCoinbaseConnectors?.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n \n ${filteredOutCoinbaseConnectors.map(connector => html `\n this.onConnector(connector)}\n tabIdx=${ifDefined(this.tabIdx)}\n ?disabled=${hasWcConnection}\n >\n \n `)}\n \n `;\n }\n onConnector(connector) {\n RouterController.push('ConnectingExternal', { connector });\n }\n};\n__decorate([\n property()\n], W3mConnectExternalWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectExternalWidget.prototype, \"connectors\", void 0);\nW3mConnectExternalWidget = __decorate([\n customElement('w3m-connect-external-widget')\n], W3mConnectExternalWidget);\nexport { W3mConnectExternalWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil, ConnectionController, ConnectorController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nlet W3mConnectFeaturedWidget = class W3mConnectFeaturedWidget extends LitElement {\n constructor() {\n super(...arguments);\n this.tabIdx = undefined;\n this.wallets = [];\n }\n render() {\n if (!this.wallets.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n \n ${this.wallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n tabIdx=${ifDefined(this.tabIdx)}\n ?disabled=${hasWcConnection}\n >\n \n `)}\n \n `;\n }\n onConnectWallet(wallet) {\n ConnectorController.selectWalletConnector(wallet);\n }\n};\n__decorate([\n property()\n], W3mConnectFeaturedWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n property()\n], W3mConnectFeaturedWidget.prototype, \"wallets\", void 0);\nW3mConnectFeaturedWidget = __decorate([\n customElement('w3m-connect-featured-widget')\n], W3mConnectFeaturedWidget);\nexport { W3mConnectFeaturedWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, ConnectionController, ConnectorController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nimport { HelpersUtil } from '@reown/appkit-utils';\nimport { ConnectorUtil } from '../../utils/ConnectorUtil.js';\nlet W3mConnectInjectedWidget = class W3mConnectInjectedWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = [];\n this.connections = ConnectionController.state.connections;\n this.unsubscribe.push(ConnectionController.subscribeKey('connections', val => (this.connections = val)));\n }\n render() {\n const injectedConnectors = this.connectors.filter(ConnectorUtil.showConnector);\n if (injectedConnectors.length === 0) {\n this.style.cssText = `display: none`;\n return null;\n }\n return html `\n \n ${injectedConnectors.map(connector => {\n const connectionsByNamespace = this.connections.get(connector.chain) ?? [];\n const isAlreadyConnected = connectionsByNamespace.some(c => HelpersUtil.isLowerCaseMatch(c.connectorId, connector.id));\n return html `\n this.onConnector(connector)}\n tabIdx=${ifDefined(this.tabIdx)}\n >\n \n `;\n })}\n \n `;\n }\n onConnector(connector) {\n ConnectorController.setActiveConnector(connector);\n RouterController.push('ConnectingExternal', { connector });\n }\n};\n__decorate([\n property()\n], W3mConnectInjectedWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n property()\n], W3mConnectInjectedWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectInjectedWidget.prototype, \"connections\", void 0);\nW3mConnectInjectedWidget = __decorate([\n customElement('w3m-connect-injected-widget')\n], W3mConnectInjectedWidget);\nexport { W3mConnectInjectedWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, ConnectorController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nlet W3mConnectMultiChainWidget = class W3mConnectMultiChainWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const multiChainConnectors = this.connectors.filter(connector => connector.type === 'MULTI_CHAIN' && connector.name !== 'WalletConnect');\n if (!multiChainConnectors?.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n return html `\n \n ${multiChainConnectors.map(connector => html `\n this.onConnector(connector)}\n tabIdx=${ifDefined(this.tabIdx)}\n >\n \n `)}\n \n `;\n }\n onConnector(connector) {\n ConnectorController.setActiveConnector(connector);\n RouterController.push('ConnectingMultiChain');\n }\n};\n__decorate([\n property()\n], W3mConnectMultiChainWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectMultiChainWidget.prototype, \"connectors\", void 0);\nW3mConnectMultiChainWidget = __decorate([\n customElement('w3m-connect-multi-chain-widget')\n], W3mConnectMultiChainWidget);\nexport { W3mConnectMultiChainWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil, ChainController, ConnectionController, ConnectorController, CoreHelperUtil, StorageUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nimport { WalletUtil } from '../../utils/WalletUtil.js';\nlet W3mConnectRecentWidget = class W3mConnectRecentWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.loading = false;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)));\n if (CoreHelperUtil.isTelegram() && CoreHelperUtil.isIos()) {\n this.loading = !ConnectionController.state.wcUri;\n this.unsubscribe.push(ConnectionController.subscribeKey('wcUri', val => (this.loading = !val)));\n }\n }\n render() {\n const recentWallets = StorageUtil.getRecentWallets();\n const filteredRecentWallets = recentWallets\n .filter(wallet => !WalletUtil.isExcluded(wallet))\n .filter(wallet => !this.hasWalletConnector(wallet))\n .filter(wallet => this.isWalletCompatibleWithCurrentChain(wallet));\n if (!filteredRecentWallets.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n \n ${filteredRecentWallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n tagLabel=\"recent\"\n tagVariant=\"shade\"\n tabIdx=${ifDefined(this.tabIdx)}\n ?loading=${this.loading}\n ?disabled=${hasWcConnection}\n >\n \n `)}\n \n `;\n }\n onConnectWallet(wallet) {\n if (this.loading) {\n return;\n }\n ConnectorController.selectWalletConnector(wallet);\n }\n hasWalletConnector(wallet) {\n return this.connectors.some(connector => connector.id === wallet.id || connector.name === wallet.name);\n }\n isWalletCompatibleWithCurrentChain(wallet) {\n const currentNamespace = ChainController.state.activeChain;\n if (currentNamespace && wallet.chains) {\n return wallet.chains.some(c => {\n const chainNamespace = c.split(':')[0];\n return currentNamespace === chainNamespace;\n });\n }\n return true;\n }\n};\n__decorate([\n property()\n], W3mConnectRecentWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectRecentWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectRecentWidget.prototype, \"loading\", void 0);\nW3mConnectRecentWidget = __decorate([\n customElement('w3m-connect-recent-widget')\n], W3mConnectRecentWidget);\nexport { W3mConnectRecentWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil, ConnectionController, ConnectorController, CoreHelperUtil, OptionsController, RouterController, StorageUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-wallet';\nimport { WalletUtil } from '../../utils/WalletUtil.js';\nlet W3mConnectRecommendedWidget = class W3mConnectRecommendedWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.wallets = [];\n this.loading = false;\n if (CoreHelperUtil.isTelegram() && CoreHelperUtil.isIos()) {\n this.loading = !ConnectionController.state.wcUri;\n this.unsubscribe.push(ConnectionController.subscribeKey('wcUri', val => (this.loading = !val)));\n }\n }\n render() {\n const { connectors } = ConnectorController.state;\n const { customWallets, featuredWalletIds } = OptionsController.state;\n const recentWallets = StorageUtil.getRecentWallets();\n const wcConnector = connectors.find(c => c.id === 'walletConnect');\n const injectedConnectors = connectors.filter(c => c.type === 'INJECTED' || c.type === 'ANNOUNCED' || c.type === 'MULTI_CHAIN');\n const injectedWallets = injectedConnectors.filter(i => i.name !== 'Browser Wallet');\n if (!wcConnector) {\n return null;\n }\n if (featuredWalletIds || customWallets || !this.wallets.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const overrideLength = injectedWallets.length + recentWallets.length;\n const maxRecommended = Math.max(0, 2 - overrideLength);\n const wallets = WalletUtil.filterOutDuplicateWallets(this.wallets).slice(0, maxRecommended);\n if (!wallets.length) {\n this.style.cssText = `display: none`;\n return null;\n }\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n \n ${wallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n tabIdx=${ifDefined(this.tabIdx)}\n ?loading=${this.loading}\n ?disabled=${hasWcConnection}\n >\n \n `)}\n \n `;\n }\n onConnectWallet(wallet) {\n if (this.loading) {\n return;\n }\n const connector = ConnectorController.getConnector({\n id: wallet.id,\n rdns: wallet.rdns\n });\n if (connector) {\n RouterController.push('ConnectingExternal', { connector });\n }\n else {\n RouterController.push('ConnectingWalletConnect', { wallet });\n }\n }\n};\n__decorate([\n property()\n], W3mConnectRecommendedWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n property()\n], W3mConnectRecommendedWidget.prototype, \"wallets\", void 0);\n__decorate([\n state()\n], W3mConnectRecommendedWidget.prototype, \"loading\", void 0);\nW3mConnectRecommendedWidget = __decorate([\n customElement('w3m-connect-recommended-widget')\n], W3mConnectRecommendedWidget);\nexport { W3mConnectRecommendedWidget };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AssetController, ConnectionController, ConnectorController, CoreHelperUtil, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-list-wallet';\nlet W3mConnectWalletConnectWidget = class W3mConnectWalletConnectWidget extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.connectorImages = AssetController.state.connectorImages;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)), AssetController.subscribeKey('connectorImages', val => (this.connectorImages = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n if (CoreHelperUtil.isMobile()) {\n this.style.cssText = `display: none`;\n return null;\n }\n const connector = this.connectors.find(c => c.id === 'walletConnect');\n if (!connector) {\n this.style.cssText = `display: none`;\n return null;\n }\n const connectorImage = connector.imageUrl || this.connectorImages[connector?.imageId ?? ''];\n const hasWcConnection = ConnectionController.hasAnyConnection(CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT);\n return html `\n this.onConnector(connector)}\n tagLabel=\"qr code\"\n tagVariant=\"main\"\n tabIdx=${ifDefined(this.tabIdx)}\n data-testid=\"wallet-selector-walletconnect\"\n ?disabled=${hasWcConnection}\n >\n \n `;\n }\n onConnector(connector) {\n ConnectorController.setActiveConnector(connector);\n RouterController.push('ConnectingWalletConnect');\n }\n};\n__decorate([\n property()\n], W3mConnectWalletConnectWidget.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectWalletConnectWidget.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectWalletConnectWidget.prototype, \"connectorImages\", void 0);\nW3mConnectWalletConnectWidget = __decorate([\n customElement('w3m-connect-walletconnect-widget')\n], W3mConnectWalletConnectWidget);\nexport { W3mConnectWalletConnectWidget };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n margin-top: var(--wui-spacing-3xs);\n }\n wui-separator {\n margin: var(--wui-spacing-m) calc(var(--wui-spacing-m) * -1) var(--wui-spacing-xs)\n calc(var(--wui-spacing-m) * -1);\n width: calc(100% + var(--wui-spacing-s) * 2);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ApiController, ConnectorController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '../../partials/w3m-connect-announced-widget/index.js';\nimport '../../partials/w3m-connect-custom-widget/index.js';\nimport '../../partials/w3m-connect-external-widget/index.js';\nimport '../../partials/w3m-connect-featured-widget/index.js';\nimport '../../partials/w3m-connect-injected-widget/index.js';\nimport '../../partials/w3m-connect-multi-chain-widget/index.js';\nimport '../../partials/w3m-connect-recent-widget/index.js';\nimport '../../partials/w3m-connect-recommended-widget/index.js';\nimport '../../partials/w3m-connect-walletconnect-widget/index.js';\nimport { ConnectorUtil } from '../../utils/ConnectorUtil.js';\nimport styles from './styles.js';\nlet W3mConnectorList = class W3mConnectorList extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.tabIdx = undefined;\n this.connectors = ConnectorController.state.connectors;\n this.recommended = ApiController.state.recommended;\n this.featured = ApiController.state.featured;\n this.unsubscribe.push(ConnectorController.subscribeKey('connectors', val => (this.connectors = val)), ApiController.subscribeKey('recommended', val => (this.recommended = val)), ApiController.subscribeKey('featured', val => (this.featured = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n return html `\n ${this.connectorListTemplate()} \n `;\n }\n connectorListTemplate() {\n const { custom, recent, announced, injected, multiChain, recommended, featured, external } = ConnectorUtil.getConnectorsByType(this.connectors, this.recommended, this.featured);\n const connectorTypeOrder = ConnectorUtil.getConnectorTypeOrder({\n custom,\n recent,\n announced,\n injected,\n multiChain,\n recommended,\n featured,\n external\n });\n return connectorTypeOrder.map(type => {\n switch (type) {\n case 'injected':\n return html `\n ${multiChain.length\n ? html ``\n : null}\n ${announced.length\n ? html ``\n : null}\n ${injected.length\n ? html ``\n : null}\n `;\n case 'walletConnect':\n return html ``;\n case 'recent':\n return html ``;\n case 'featured':\n return html ``;\n case 'custom':\n return html ``;\n case 'external':\n return html ``;\n case 'recommended':\n return html ``;\n default:\n console.warn(`Unknown connector type: ${type}`);\n return null;\n }\n });\n }\n};\nW3mConnectorList.styles = styles;\n__decorate([\n property()\n], W3mConnectorList.prototype, \"tabIdx\", void 0);\n__decorate([\n state()\n], W3mConnectorList.prototype, \"connectors\", void 0);\n__decorate([\n state()\n], W3mConnectorList.prototype, \"recommended\", void 0);\n__decorate([\n state()\n], W3mConnectorList.prototype, \"featured\", void 0);\nW3mConnectorList = __decorate([\n customElement('w3m-connector-list')\n], W3mConnectorList);\nexport { W3mConnectorList };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: inline-flex;\n background-color: var(--wui-color-gray-glass-002);\n border-radius: var(--wui-border-radius-3xl);\n padding: var(--wui-spacing-3xs);\n position: relative;\n height: 36px;\n min-height: 36px;\n overflow: hidden;\n }\n\n :host::before {\n content: '';\n position: absolute;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: var(--local-tab-width);\n height: 28px;\n border-radius: var(--wui-border-radius-3xl);\n background-color: var(--wui-color-gray-glass-002);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002);\n transform: translateX(calc(var(--local-tab) * var(--local-tab-width)));\n transition: transform var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: background-color, opacity;\n }\n\n :host([data-type='flex'])::before {\n left: 3px;\n transform: translateX(calc((var(--local-tab) * 34px) + (var(--local-tab) * 4px)));\n }\n\n :host([data-type='flex']) {\n display: flex;\n padding: 0px 0px 0px 12px;\n gap: 4px;\n }\n\n :host([data-type='flex']) > button > wui-text {\n position: absolute;\n left: 18px;\n opacity: 0;\n }\n\n button[data-active='true'] > wui-icon,\n button[data-active='true'] > wui-text {\n color: var(--wui-color-fg-100);\n }\n\n button[data-active='false'] > wui-icon,\n button[data-active='false'] > wui-text {\n color: var(--wui-color-fg-200);\n }\n\n button[data-active='true']:disabled,\n button[data-active='false']:disabled {\n background-color: transparent;\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n button[data-active='true']:disabled > wui-text {\n color: var(--wui-color-fg-200);\n }\n\n button[data-active='false']:disabled > wui-text {\n color: var(--wui-color-fg-300);\n }\n\n button > wui-icon,\n button > wui-text {\n pointer-events: none;\n transition: color var(--wui-e ase-out-power-1) var(--wui-duration-md);\n will-change: color;\n }\n\n button {\n width: var(--local-tab-width);\n transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: background-color;\n }\n\n :host([data-type='flex']) > button {\n width: 34px;\n position: relative;\n display: flex;\n justify-content: flex-start;\n }\n\n button:hover:enabled,\n button:active:enabled {\n background-color: transparent !important;\n }\n\n button:hover:enabled > wui-icon,\n button:active:enabled > wui-icon {\n transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg);\n color: var(--wui-color-fg-125);\n }\n\n button:hover:enabled > wui-text,\n button:active:enabled > wui-text {\n transition: all var(--wui-ease-out-power-1) var(--wui-duration-lg);\n color: var(--wui-color-fg-125);\n }\n\n button {\n border-radius: var(--wui-border-radius-3xl);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-text/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiTabs = class WuiTabs extends LitElement {\n constructor() {\n super(...arguments);\n this.tabs = [];\n this.onTabChange = () => null;\n this.buttons = [];\n this.disabled = false;\n this.localTabWidth = '100px';\n this.activeTab = 0;\n this.isDense = false;\n }\n render() {\n this.isDense = this.tabs.length > 3;\n this.style.cssText = `\n --local-tab: ${this.activeTab};\n --local-tab-width: ${this.localTabWidth};\n `;\n this.dataset['type'] = this.isDense ? 'flex' : 'block';\n return this.tabs.map((tab, index) => {\n const isActive = index === this.activeTab;\n return html `\n this.onTabClick(index)}\n data-active=${isActive}\n data-testid=\"tab-${tab.label?.toLowerCase()}\"\n >\n ${this.iconTemplate(tab)}\n ${tab.label} \n \n `;\n });\n }\n firstUpdated() {\n if (this.shadowRoot && this.isDense) {\n this.buttons = [...this.shadowRoot.querySelectorAll('button')];\n setTimeout(() => {\n this.animateTabs(0, true);\n }, 0);\n }\n }\n iconTemplate(tab) {\n if (tab.icon) {\n return html ``;\n }\n return null;\n }\n onTabClick(index) {\n if (this.buttons) {\n this.animateTabs(index, false);\n }\n this.activeTab = index;\n this.onTabChange(index);\n }\n animateTabs(index, initialAnimation) {\n const passiveBtn = this.buttons[this.activeTab];\n const activeBtn = this.buttons[index];\n const passiveBtnText = passiveBtn?.querySelector('wui-text');\n const activeBtnText = activeBtn?.querySelector('wui-text');\n const activeBtnBounds = activeBtn?.getBoundingClientRect();\n const activeBtnTextBounds = activeBtnText?.getBoundingClientRect();\n if (passiveBtn && passiveBtnText && !initialAnimation && index !== this.activeTab) {\n passiveBtnText.animate([{ opacity: 0 }], {\n duration: 50,\n easing: 'ease',\n fill: 'forwards'\n });\n passiveBtn.animate([{ width: `34px` }], {\n duration: 500,\n easing: 'ease',\n fill: 'forwards'\n });\n }\n if (activeBtn && activeBtnBounds && activeBtnTextBounds && activeBtnText) {\n if (index !== this.activeTab || initialAnimation) {\n this.localTabWidth = `${Math.round(activeBtnBounds.width + activeBtnTextBounds.width) + 6}px`;\n activeBtn.animate([{ width: `${activeBtnBounds.width + activeBtnTextBounds.width}px` }], {\n duration: initialAnimation ? 0 : 500,\n fill: 'forwards',\n easing: 'ease'\n });\n activeBtnText.animate([{ opacity: 1 }], {\n duration: initialAnimation ? 0 : 125,\n delay: initialAnimation ? 0 : 200,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n }\n};\nWuiTabs.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property({ type: Array })\n], WuiTabs.prototype, \"tabs\", void 0);\n__decorate([\n property()\n], WuiTabs.prototype, \"onTabChange\", void 0);\n__decorate([\n property({ type: Array })\n], WuiTabs.prototype, \"buttons\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiTabs.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiTabs.prototype, \"localTabWidth\", void 0);\n__decorate([\n state()\n], WuiTabs.prototype, \"activeTab\", void 0);\n__decorate([\n state()\n], WuiTabs.prototype, \"isDense\", void 0);\nWuiTabs = __decorate([\n customElement('wui-tabs')\n], WuiTabs);\nexport { WuiTabs };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-tabs';\nlet W3mConnectingHeader = class W3mConnectingHeader extends LitElement {\n constructor() {\n super(...arguments);\n this.platformTabs = [];\n this.unsubscribe = [];\n this.platforms = [];\n this.onSelectPlatfrom = undefined;\n }\n disconnectCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const tabs = this.generateTabs();\n return html `\n \n \n \n `;\n }\n generateTabs() {\n const tabs = this.platforms.map(platform => {\n if (platform === 'browser') {\n return { label: 'Browser', icon: 'extension', platform: 'browser' };\n }\n else if (platform === 'mobile') {\n return { label: 'Mobile', icon: 'mobile', platform: 'mobile' };\n }\n else if (platform === 'qrcode') {\n return { label: 'Mobile', icon: 'mobile', platform: 'qrcode' };\n }\n else if (platform === 'web') {\n return { label: 'Webapp', icon: 'browser', platform: 'web' };\n }\n else if (platform === 'desktop') {\n return { label: 'Desktop', icon: 'desktop', platform: 'desktop' };\n }\n return { label: 'Browser', icon: 'extension', platform: 'unsupported' };\n });\n this.platformTabs = tabs.map(({ platform }) => platform);\n return tabs;\n }\n onTabChange(index) {\n const tab = this.platformTabs[index];\n if (tab) {\n this.onSelectPlatfrom?.(tab);\n }\n }\n};\n__decorate([\n property({ type: Array })\n], W3mConnectingHeader.prototype, \"platforms\", void 0);\n__decorate([\n property()\n], W3mConnectingHeader.prototype, \"onSelectPlatfrom\", void 0);\nW3mConnectingHeader = __decorate([\n customElement('w3m-connecting-header')\n], W3mConnectingHeader);\nexport { W3mConnectingHeader };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n width: var(--local-width);\n position: relative;\n }\n\n button {\n border: none;\n border-radius: var(--local-border-radius);\n width: var(--local-width);\n white-space: nowrap;\n }\n\n /* -- Sizes --------------------------------------------------- */\n button[data-size='xs'] {\n padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s);\n height: 24px;\n }\n\n button[data-size='xs'][data-icon-left='true'][data-icon-right='false'] {\n padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s);\n }\n\n button[data-size='xs'][data-icon-right='true'][data-icon-left='false'] {\n padding: var(--wui-spacing-3xs) var(--wui-spacing-s) var(--wui-spacing-3xs) var(--wui-spacing-s);\n }\n\n button[data-size='sm'] {\n padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s);\n height: 32px;\n }\n\n button[data-size='sm'][data-icon-left='true'][data-icon-right='false'] {\n padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s);\n }\n\n button[data-size='sm'][data-icon-right='true'][data-icon-left='false'] {\n padding: 7.2px var(--wui-spacing-s) 7.2px var(--wui-spacing-s);\n }\n\n button[data-size='md'] {\n padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-l);\n height: 36px;\n }\n\n button[data-size='md'][data-icon-left='true'][data-icon-right='false'] {\n padding: 8.2px var(--wui-spacing-l) 9px var(--wui-spacing-s);\n }\n\n button[data-size='md'][data-icon-right='true'][data-icon-left='false'] {\n padding: 8.2px var(--wui-spacing-s) 9px var(--wui-spacing-l);\n }\n\n button[data-size='lg'] {\n padding: var(--wui-spacing-m) var(--wui-spacing-2l);\n height: 48px;\n }\n\n /* -- Variants --------------------------------------------------------- */\n button[data-variant='main'] {\n background-color: var(--wui-color-accent-100);\n color: var(--wui-color-inverse-100);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n button[data-variant='inverse'] {\n background-color: var(--wui-color-inverse-100);\n color: var(--wui-color-inverse-000);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n button[data-variant='accent'] {\n background-color: var(--wui-color-accent-glass-010);\n color: var(--wui-color-accent-100);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005);\n }\n\n button[data-variant='accent-error'] {\n background: var(--wui-color-error-glass-015);\n color: var(--wui-color-error-100);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-error-glass-010);\n }\n\n button[data-variant='accent-success'] {\n background: var(--wui-color-success-glass-015);\n color: var(--wui-color-success-100);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-success-glass-010);\n }\n\n button[data-variant='neutral'] {\n background: transparent;\n color: var(--wui-color-fg-100);\n border: none;\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005);\n }\n\n /* -- Focus states --------------------------------------------------- */\n button[data-variant='main']:focus-visible:enabled {\n background-color: var(--wui-color-accent-090);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-accent-100),\n 0 0 0 4px var(--wui-color-accent-glass-020);\n }\n button[data-variant='inverse']:focus-visible:enabled {\n background-color: var(--wui-color-inverse-100);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-gray-glass-010),\n 0 0 0 4px var(--wui-color-accent-glass-020);\n }\n button[data-variant='accent']:focus-visible:enabled {\n background-color: var(--wui-color-accent-glass-010);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-accent-100),\n 0 0 0 4px var(--wui-color-accent-glass-020);\n }\n button[data-variant='accent-error']:focus-visible:enabled {\n background: var(--wui-color-error-glass-015);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-error-100),\n 0 0 0 4px var(--wui-color-error-glass-020);\n }\n button[data-variant='accent-success']:focus-visible:enabled {\n background: var(--wui-color-success-glass-015);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-success-100),\n 0 0 0 4px var(--wui-color-success-glass-020);\n }\n button[data-variant='neutral']:focus-visible:enabled {\n background: var(--wui-color-gray-glass-005);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-gray-glass-010),\n 0 0 0 4px var(--wui-color-gray-glass-002);\n }\n\n /* -- Hover & Active states ----------------------------------------------------------- */\n @media (hover: hover) and (pointer: fine) {\n button[data-variant='main']:hover:enabled {\n background-color: var(--wui-color-accent-090);\n }\n\n button[data-variant='main']:active:enabled {\n background-color: var(--wui-color-accent-080);\n }\n\n button[data-variant='accent']:hover:enabled {\n background-color: var(--wui-color-accent-glass-015);\n }\n\n button[data-variant='accent']:active:enabled {\n background-color: var(--wui-color-accent-glass-020);\n }\n\n button[data-variant='accent-error']:hover:enabled {\n background: var(--wui-color-error-glass-020);\n color: var(--wui-color-error-100);\n }\n\n button[data-variant='accent-error']:active:enabled {\n background: var(--wui-color-error-glass-030);\n color: var(--wui-color-error-100);\n }\n\n button[data-variant='accent-success']:hover:enabled {\n background: var(--wui-color-success-glass-020);\n color: var(--wui-color-success-100);\n }\n\n button[data-variant='accent-success']:active:enabled {\n background: var(--wui-color-success-glass-030);\n color: var(--wui-color-success-100);\n }\n\n button[data-variant='neutral']:hover:enabled {\n background: var(--wui-color-gray-glass-002);\n }\n\n button[data-variant='neutral']:active:enabled {\n background: var(--wui-color-gray-glass-005);\n }\n\n button[data-size='lg'][data-icon-left='true'][data-icon-right='false'] {\n padding-left: var(--wui-spacing-m);\n }\n\n button[data-size='lg'][data-icon-right='true'][data-icon-left='false'] {\n padding-right: var(--wui-spacing-m);\n }\n }\n\n /* -- Disabled state --------------------------------------------------- */\n button:disabled {\n background-color: var(--wui-color-gray-glass-002);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002);\n color: var(--wui-color-gray-glass-020);\n cursor: not-allowed;\n }\n\n button > wui-text {\n transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: opacity;\n opacity: var(--local-opacity-100);\n }\n\n ::slotted(*) {\n transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: opacity;\n opacity: var(--local-opacity-100);\n }\n\n wui-loading-spinner {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n opacity: var(--local-opacity-000);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-loading-spinner/index.js';\nimport '../../components/wui-text/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nconst SPINNER_COLOR_BY_VARIANT = {\n main: 'inverse-100',\n inverse: 'inverse-000',\n accent: 'accent-100',\n 'accent-error': 'error-100',\n 'accent-success': 'success-100',\n neutral: 'fg-100',\n disabled: 'gray-glass-020'\n};\nconst TEXT_VARIANT_BY_SIZE = {\n lg: 'paragraph-600',\n md: 'small-600',\n sm: 'small-600',\n xs: 'tiny-600'\n};\nconst SPINNER_SIZE_BY_SIZE = {\n lg: 'md',\n md: 'md',\n sm: 'sm',\n xs: 'sm'\n};\nlet WuiButton = class WuiButton extends LitElement {\n constructor() {\n super(...arguments);\n this.size = 'lg';\n this.disabled = false;\n this.fullWidth = false;\n this.loading = false;\n this.variant = 'main';\n this.hasIconLeft = false;\n this.hasIconRight = false;\n this.borderRadius = 'm';\n }\n render() {\n this.style.cssText = `\n --local-width: ${this.fullWidth ? '100%' : 'auto'};\n --local-opacity-100: ${this.loading ? 0 : 1};\n --local-opacity-000: ${this.loading ? 1 : 0};\n --local-border-radius: var(--wui-border-radius-${this.borderRadius});\n `;\n const textVariant = this.textVariant ?? TEXT_VARIANT_BY_SIZE[this.size];\n return html `\n \n ${this.loadingTemplate()}\n this.handleSlotLeftChange()}>\n \n \n \n this.handleSlotRightChange()}>\n \n `;\n }\n handleSlotLeftChange() {\n this.hasIconLeft = true;\n }\n handleSlotRightChange() {\n this.hasIconRight = true;\n }\n loadingTemplate() {\n if (this.loading) {\n const size = SPINNER_SIZE_BY_SIZE[this.size];\n const color = this.disabled\n ? SPINNER_COLOR_BY_VARIANT['disabled']\n : SPINNER_COLOR_BY_VARIANT[this.variant];\n return html ``;\n }\n return html ``;\n }\n};\nWuiButton.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiButton.prototype, \"size\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiButton.prototype, \"disabled\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiButton.prototype, \"fullWidth\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiButton.prototype, \"loading\", void 0);\n__decorate([\n property()\n], WuiButton.prototype, \"variant\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiButton.prototype, \"hasIconLeft\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiButton.prototype, \"hasIconRight\", void 0);\n__decorate([\n property()\n], WuiButton.prototype, \"borderRadius\", void 0);\n__decorate([\n property()\n], WuiButton.prototype, \"textVariant\", void 0);\nWuiButton = __decorate([\n customElement('wui-button')\n], WuiButton);\nexport { WuiButton };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n padding: var(--wui-spacing-4xs) var(--wui-spacing-xxs);\n border-radius: var(--wui-border-radius-3xs);\n background-color: transparent;\n color: var(--wui-color-accent-100);\n }\n\n button:disabled {\n background-color: transparent;\n color: var(--wui-color-gray-glass-015);\n }\n\n button:hover {\n background-color: var(--wui-color-gray-glass-005);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport '../../components/wui-text/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiLink = class WuiLink extends LitElement {\n constructor() {\n super(...arguments);\n this.tabIdx = undefined;\n this.disabled = false;\n this.color = 'inherit';\n }\n render() {\n return html `\n \n `;\n }\n};\nWuiLink.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiLink.prototype, \"tabIdx\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiLink.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiLink.prototype, \"color\", void 0);\nWuiLink = __decorate([\n customElement('wui-link')\n], WuiLink);\nexport { WuiLink };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n width: var(--wui-box-size-md);\n height: var(--wui-box-size-md);\n }\n\n svg {\n width: var(--wui-box-size-md);\n height: var(--wui-box-size-md);\n }\n\n rect {\n fill: none;\n stroke: var(--wui-color-accent-100);\n stroke-width: 4px;\n stroke-linecap: round;\n animation: dash 1s linear infinite;\n }\n\n @keyframes dash {\n to {\n stroke-dashoffset: 0px;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiLoadingThumbnail = class WuiLoadingThumbnail extends LitElement {\n constructor() {\n super(...arguments);\n this.radius = 36;\n }\n render() {\n return this.svgLoaderTemplate();\n }\n svgLoaderTemplate() {\n const radius = this.radius > 50 ? 50 : this.radius;\n const standardValue = 36;\n const radiusFactor = standardValue - radius;\n const dashArrayStart = 116 + radiusFactor;\n const dashArrayEnd = 245 + radiusFactor;\n const dashOffset = 360 + radiusFactor * 1.75;\n return html `\n \n \n \n `;\n }\n};\nWuiLoadingThumbnail.styles = [resetStyles, styles];\n__decorate([\n property({ type: Number })\n], WuiLoadingThumbnail.prototype, \"radius\", void 0);\nWuiLoadingThumbnail = __decorate([\n customElement('wui-loading-thumbnail')\n], WuiLoadingThumbnail);\nexport { WuiLoadingThumbnail };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n border: none;\n border-radius: var(--wui-border-radius-3xl);\n }\n\n button[data-variant='main'] {\n background-color: var(--wui-color-accent-100);\n color: var(--wui-color-inverse-100);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n button[data-variant='accent'] {\n background-color: var(--wui-color-accent-glass-010);\n color: var(--wui-color-accent-100);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005);\n }\n\n button[data-variant='gray'] {\n background-color: transparent;\n color: var(--wui-color-fg-200);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n button[data-variant='shade'] {\n background-color: transparent;\n color: var(--wui-color-accent-100);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n button[data-size='sm'] {\n height: 32px;\n padding: 0 var(--wui-spacing-s);\n }\n\n button[data-size='md'] {\n height: 40px;\n padding: 0 var(--wui-spacing-l);\n }\n\n button[data-size='sm'] > wui-image {\n width: 16px;\n height: 16px;\n }\n\n button[data-size='md'] > wui-image {\n width: 24px;\n height: 24px;\n }\n\n button[data-size='sm'] > wui-icon {\n width: 12px;\n height: 12px;\n }\n\n button[data-size='md'] > wui-icon {\n width: 14px;\n height: 14px;\n }\n\n wui-image {\n border-radius: var(--wui-border-radius-3xl);\n overflow: hidden;\n }\n\n button.disabled > wui-icon,\n button.disabled > wui-image {\n filter: grayscale(1);\n }\n\n button[data-variant='main'] > wui-image {\n box-shadow: inset 0 0 0 1px var(--wui-color-accent-090);\n }\n\n button[data-variant='shade'] > wui-image,\n button[data-variant='gray'] > wui-image {\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-010);\n }\n\n @media (hover: hover) and (pointer: fine) {\n button[data-variant='main']:focus-visible {\n background-color: var(--wui-color-accent-090);\n }\n\n button[data-variant='main']:hover:enabled {\n background-color: var(--wui-color-accent-090);\n }\n\n button[data-variant='main']:active:enabled {\n background-color: var(--wui-color-accent-080);\n }\n\n button[data-variant='accent']:hover:enabled {\n background-color: var(--wui-color-accent-glass-015);\n }\n\n button[data-variant='accent']:active:enabled {\n background-color: var(--wui-color-accent-glass-020);\n }\n\n button[data-variant='shade']:focus-visible,\n button[data-variant='gray']:focus-visible,\n button[data-variant='shade']:hover,\n button[data-variant='gray']:hover {\n background-color: var(--wui-color-gray-glass-002);\n }\n\n button[data-variant='gray']:active,\n button[data-variant='shade']:active {\n background-color: var(--wui-color-gray-glass-005);\n }\n }\n\n button.disabled {\n color: var(--wui-color-gray-glass-020);\n background-color: var(--wui-color-gray-glass-002);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002);\n pointer-events: none;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-image/index.js';\nimport '../../components/wui-text/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiChipButton = class WuiChipButton extends LitElement {\n constructor() {\n super(...arguments);\n this.variant = 'accent';\n this.imageSrc = '';\n this.disabled = false;\n this.icon = 'externalLink';\n this.size = 'md';\n this.text = '';\n }\n render() {\n const textVariant = this.size === 'sm' ? 'small-600' : 'paragraph-600';\n return html `\n \n ${this.imageSrc ? html `` : null}\n ${this.text} \n \n \n `;\n }\n};\nWuiChipButton.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiChipButton.prototype, \"variant\", void 0);\n__decorate([\n property()\n], WuiChipButton.prototype, \"imageSrc\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiChipButton.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiChipButton.prototype, \"icon\", void 0);\n__decorate([\n property()\n], WuiChipButton.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiChipButton.prototype, \"text\", void 0);\nWuiChipButton = __decorate([\n customElement('wui-chip-button')\n], WuiChipButton);\nexport { WuiChipButton };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-flex {\n width: 100%;\n background-color: var(--wui-color-gray-glass-002);\n border-radius: var(--wui-border-radius-xs);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-text/index.js';\nimport '../../composites/wui-chip-button/index.js';\nimport '../../layout/wui-flex/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiCtaButton = class WuiCtaButton extends LitElement {\n constructor() {\n super(...arguments);\n this.disabled = false;\n this.label = '';\n this.buttonLabel = '';\n }\n render() {\n return html `\n \n ${this.label}\n \n \n \n `;\n }\n};\nWuiCtaButton.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property({ type: Boolean })\n], WuiCtaButton.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiCtaButton.prototype, \"label\", void 0);\n__decorate([\n property()\n], WuiCtaButton.prototype, \"buttonLabel\", void 0);\nWuiCtaButton = __decorate([\n customElement('wui-cta-button')\n], WuiCtaButton);\nexport { WuiCtaButton };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n padding: 0 var(--wui-spacing-xl) var(--wui-spacing-xl);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { CoreHelperUtil, RouterController } from '@reown/appkit-controllers';\nimport { UiHelperUtil, customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-cta-button';\nimport styles from './styles.js';\nlet W3mMobileDownloadLinks = class W3mMobileDownloadLinks extends LitElement {\n constructor() {\n super(...arguments);\n this.wallet = undefined;\n }\n render() {\n if (!this.wallet) {\n this.style.display = 'none';\n return null;\n }\n const { name, app_store, play_store, chrome_store, homepage } = this.wallet;\n const isMobile = CoreHelperUtil.isMobile();\n const isIos = CoreHelperUtil.isIos();\n const isAndroid = CoreHelperUtil.isAndroid();\n const isMultiple = [app_store, play_store, homepage, chrome_store].filter(Boolean).length > 1;\n const shortName = UiHelperUtil.getTruncateString({\n string: name,\n charsStart: 12,\n charsEnd: 0,\n truncate: 'end'\n });\n if (isMultiple && !isMobile) {\n return html `\n RouterController.push('Downloads', { wallet: this.wallet })}\n >\n `;\n }\n if (!isMultiple && homepage) {\n return html `\n \n `;\n }\n if (app_store && isIos) {\n return html `\n \n `;\n }\n if (play_store && isAndroid) {\n return html `\n \n `;\n }\n this.style.display = 'none';\n return null;\n }\n onAppStore() {\n if (this.wallet?.app_store) {\n CoreHelperUtil.openHref(this.wallet.app_store, '_blank');\n }\n }\n onPlayStore() {\n if (this.wallet?.play_store) {\n CoreHelperUtil.openHref(this.wallet.play_store, '_blank');\n }\n }\n onHomePage() {\n if (this.wallet?.homepage) {\n CoreHelperUtil.openHref(this.wallet.homepage, '_blank');\n }\n }\n};\nW3mMobileDownloadLinks.styles = [styles];\n__decorate([\n property({ type: Object })\n], W3mMobileDownloadLinks.prototype, \"wallet\", void 0);\nW3mMobileDownloadLinks = __decorate([\n customElement('w3m-mobile-download-links')\n], W3mMobileDownloadLinks);\nexport { W3mMobileDownloadLinks };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n @keyframes shake {\n 0% {\n transform: translateX(0);\n }\n 25% {\n transform: translateX(3px);\n }\n 50% {\n transform: translateX(-3px);\n }\n 75% {\n transform: translateX(3px);\n }\n 100% {\n transform: translateX(0);\n }\n }\n\n wui-flex:first-child:not(:only-child) {\n position: relative;\n }\n\n wui-loading-thumbnail {\n position: absolute;\n }\n\n wui-icon-box {\n position: absolute;\n right: calc(var(--wui-spacing-3xs) * -1);\n bottom: calc(var(--wui-spacing-3xs) * -1);\n opacity: 0;\n transform: scale(0.5);\n transition-property: opacity, transform;\n transition-duration: var(--wui-duration-lg);\n transition-timing-function: var(--wui-ease-out-power-2);\n will-change: opacity, transform;\n }\n\n wui-text[align='center'] {\n width: 100%;\n padding: 0px var(--wui-spacing-l);\n }\n\n [data-error='true'] wui-icon-box {\n opacity: 1;\n transform: scale(1);\n }\n\n [data-error='true'] > wui-flex:first-child {\n animation: shake 250ms cubic-bezier(0.36, 0.07, 0.19, 0.97) both;\n }\n\n [data-retry='false'] wui-link {\n display: none;\n }\n\n [data-retry='true'] wui-link {\n display: block;\n opacity: 1;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, ConnectionController, CoreHelperUtil, RouterController, SnackController, ThemeController } from '@reown/appkit-controllers';\nimport '@reown/appkit-ui/wui-button';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon';\nimport '@reown/appkit-ui/wui-icon-box';\nimport '@reown/appkit-ui/wui-link';\nimport '@reown/appkit-ui/wui-loading-thumbnail';\nimport '@reown/appkit-ui/wui-text';\nimport '@reown/appkit-ui/wui-wallet-image';\nimport '../../partials/w3m-mobile-download-links/index.js';\nimport styles from './styles.js';\nexport class W3mConnectingWidget extends LitElement {\n constructor() {\n super();\n this.wallet = RouterController.state.data?.wallet;\n this.connector = RouterController.state.data?.connector;\n this.timeout = undefined;\n this.secondaryBtnIcon = 'refresh';\n this.onConnect = undefined;\n this.onRender = undefined;\n this.onAutoConnect = undefined;\n this.isWalletConnect = true;\n this.unsubscribe = [];\n this.imageSrc = AssetUtil.getWalletImage(this.wallet) ?? AssetUtil.getConnectorImage(this.connector);\n this.name = this.wallet?.name ?? this.connector?.name ?? 'Wallet';\n this.isRetrying = false;\n this.uri = ConnectionController.state.wcUri;\n this.error = ConnectionController.state.wcError;\n this.ready = false;\n this.showRetry = false;\n this.label = undefined;\n this.secondaryBtnLabel = 'Try again';\n this.secondaryLabel = 'Accept connection request in the wallet';\n this.isLoading = false;\n this.isMobile = false;\n this.onRetry = undefined;\n this.unsubscribe.push(...[\n ConnectionController.subscribeKey('wcUri', val => {\n this.uri = val;\n if (this.isRetrying && this.onRetry) {\n this.isRetrying = false;\n this.onConnect?.();\n }\n }),\n ConnectionController.subscribeKey('wcError', val => (this.error = val))\n ]);\n if ((CoreHelperUtil.isTelegram() || CoreHelperUtil.isSafari()) &&\n CoreHelperUtil.isIos() &&\n ConnectionController.state.wcUri) {\n this.onConnect?.();\n }\n }\n firstUpdated() {\n this.onAutoConnect?.();\n this.showRetry = !this.onAutoConnect;\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n ConnectionController.setWcError(false);\n clearTimeout(this.timeout);\n }\n render() {\n this.onRender?.();\n this.onShowRetry();\n const subLabel = this.error\n ? 'Connection can be declined if a previous request is still active'\n : this.secondaryLabel;\n let label = '';\n if (this.label) {\n label = this.label;\n }\n else {\n label = `Continue in ${this.name}`;\n if (this.error) {\n label = 'Connection declined';\n }\n }\n return html `\n \n \n \n\n ${this.error ? null : this.loaderTemplate()}\n\n \n \n\n \n \n ${label}\n \n ${subLabel}\n \n\n ${this.secondaryBtnLabel\n ? html `\n \n \n ${this.secondaryBtnLabel}\n \n `\n : null}\n \n\n ${this.isWalletConnect\n ? html `\n \n \n \n Copy link\n \n \n `\n : null}\n\n \n `;\n }\n onShowRetry() {\n if (this.error && !this.showRetry) {\n this.showRetry = true;\n const retryButton = this.shadowRoot?.querySelector('wui-button');\n retryButton?.animate([{ opacity: 0 }, { opacity: 1 }], {\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n onTryAgain() {\n ConnectionController.setWcError(false);\n if (this.onRetry) {\n this.isRetrying = true;\n this.onRetry?.();\n }\n else {\n this.onConnect?.();\n }\n }\n loaderTemplate() {\n const borderRadiusMaster = ThemeController.state.themeVariables['--w3m-border-radius-master'];\n const radius = borderRadiusMaster ? parseInt(borderRadiusMaster.replace('px', ''), 10) : 4;\n return html ``;\n }\n onCopyUri() {\n try {\n if (this.uri) {\n CoreHelperUtil.copyToClopboard(this.uri);\n SnackController.showSuccess('Link copied');\n }\n }\n catch {\n SnackController.showError('Failed to copy');\n }\n }\n}\nW3mConnectingWidget.styles = styles;\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"isRetrying\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"uri\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"error\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"ready\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"showRetry\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"label\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"secondaryBtnLabel\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"secondaryLabel\", void 0);\n__decorate([\n state()\n], W3mConnectingWidget.prototype, \"isLoading\", void 0);\n__decorate([\n property({ type: Boolean })\n], W3mConnectingWidget.prototype, \"isMobile\", void 0);\n__decorate([\n property()\n], W3mConnectingWidget.prototype, \"onRetry\", void 0);\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChainController, ConnectionController, ConnectorController, EventsController, ModalController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mConnectingWidget } from '../../utils/w3m-connecting-widget/index.js';\nlet W3mConnectingWcBrowser = class W3mConnectingWcBrowser extends W3mConnectingWidget {\n constructor() {\n super();\n if (!this.wallet) {\n throw new Error('w3m-connecting-wc-browser: No wallet provided');\n }\n this.onConnect = this.onConnectProxy.bind(this);\n this.onAutoConnect = this.onConnectProxy.bind(this);\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet.name,\n platform: 'browser',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n async onConnectProxy() {\n try {\n this.error = false;\n const { connectors } = ConnectorController.state;\n const connector = connectors.find(c => (c.type === 'ANNOUNCED' && c.info?.rdns === this.wallet?.rdns) ||\n c.type === 'INJECTED' ||\n c.name === this.wallet?.name);\n if (connector) {\n await ConnectionController.connectExternal(connector, connector.chain);\n }\n else {\n throw new Error('w3m-connecting-wc-browser: No connector found');\n }\n ModalController.close();\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_SUCCESS',\n properties: {\n method: 'browser',\n name: this.wallet?.name || 'Unknown',\n caipNetworkId: ChainController.getActiveCaipNetwork()?.caipNetworkId\n }\n });\n }\n catch (error) {\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_ERROR',\n properties: { message: error?.message ?? 'Unknown' }\n });\n this.error = true;\n }\n }\n};\nW3mConnectingWcBrowser = __decorate([\n customElement('w3m-connecting-wc-browser')\n], W3mConnectingWcBrowser);\nexport { W3mConnectingWcBrowser };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ConnectionController, CoreHelperUtil, EventsController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mConnectingWidget } from '../../utils/w3m-connecting-widget/index.js';\nlet W3mConnectingWcDesktop = class W3mConnectingWcDesktop extends W3mConnectingWidget {\n constructor() {\n super();\n if (!this.wallet) {\n throw new Error('w3m-connecting-wc-desktop: No wallet provided');\n }\n this.onConnect = this.onConnectProxy.bind(this);\n this.onRender = this.onRenderProxy.bind(this);\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet.name,\n platform: 'desktop',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n onRenderProxy() {\n if (!this.ready && this.uri) {\n this.ready = true;\n this.onConnect?.();\n }\n }\n onConnectProxy() {\n if (this.wallet?.desktop_link && this.uri) {\n try {\n this.error = false;\n const { desktop_link, name } = this.wallet;\n const { redirect, href } = CoreHelperUtil.formatNativeUrl(desktop_link, this.uri);\n ConnectionController.setWcLinking({ name, href });\n ConnectionController.setRecentWallet(this.wallet);\n CoreHelperUtil.openHref(redirect, '_blank');\n }\n catch {\n this.error = true;\n }\n }\n }\n};\nW3mConnectingWcDesktop = __decorate([\n customElement('w3m-connecting-wc-desktop')\n], W3mConnectingWcDesktop);\nexport { W3mConnectingWcDesktop };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { state } from 'lit/decorators.js';\nimport { ConnectionController, ConstantsUtil, CoreHelperUtil, EventsController, OptionsController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mConnectingWidget } from '../../utils/w3m-connecting-widget/index.js';\nlet W3mConnectingWcMobile = class W3mConnectingWcMobile extends W3mConnectingWidget {\n constructor() {\n super();\n this.btnLabelTimeout = undefined;\n this.redirectDeeplink = undefined;\n this.redirectUniversalLink = undefined;\n this.target = undefined;\n this.preferUniversalLinks = OptionsController.state.experimental_preferUniversalLinks;\n this.isLoading = true;\n this.onConnect = () => {\n if (this.wallet?.mobile_link && this.uri) {\n try {\n this.error = false;\n const { mobile_link, link_mode, name } = this.wallet;\n const { redirect, redirectUniversalLink, href } = CoreHelperUtil.formatNativeUrl(mobile_link, this.uri, link_mode);\n this.redirectDeeplink = redirect;\n this.redirectUniversalLink = redirectUniversalLink;\n this.target = CoreHelperUtil.isIframe() ? '_top' : '_self';\n ConnectionController.setWcLinking({ name, href });\n ConnectionController.setRecentWallet(this.wallet);\n if (this.preferUniversalLinks && this.redirectUniversalLink) {\n CoreHelperUtil.openHref(this.redirectUniversalLink, this.target);\n }\n else {\n CoreHelperUtil.openHref(this.redirectDeeplink, this.target);\n }\n }\n catch (e) {\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_PROXY_ERROR',\n properties: {\n message: e instanceof Error ? e.message : 'Error parsing the deeplink',\n uri: this.uri,\n mobile_link: this.wallet.mobile_link,\n name: this.wallet.name\n }\n });\n this.error = true;\n }\n }\n };\n if (!this.wallet) {\n throw new Error('w3m-connecting-wc-mobile: No wallet provided');\n }\n this.secondaryBtnLabel = 'Open';\n this.secondaryLabel = ConstantsUtil.CONNECT_LABELS.MOBILE;\n this.secondaryBtnIcon = 'externalLink';\n this.onHandleURI();\n this.unsubscribe.push(ConnectionController.subscribeKey('wcUri', () => {\n this.onHandleURI();\n }));\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet.name,\n platform: 'mobile',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n clearTimeout(this.btnLabelTimeout);\n }\n onHandleURI() {\n this.isLoading = !this.uri;\n if (!this.ready && this.uri) {\n this.ready = true;\n this.onConnect?.();\n }\n }\n onTryAgain() {\n ConnectionController.setWcError(false);\n this.onConnect?.();\n }\n};\n__decorate([\n state()\n], W3mConnectingWcMobile.prototype, \"redirectDeeplink\", void 0);\n__decorate([\n state()\n], W3mConnectingWcMobile.prototype, \"redirectUniversalLink\", void 0);\n__decorate([\n state()\n], W3mConnectingWcMobile.prototype, \"target\", void 0);\n__decorate([\n state()\n], W3mConnectingWcMobile.prototype, \"preferUniversalLinks\", void 0);\n__decorate([\n state()\n], W3mConnectingWcMobile.prototype, \"isLoading\", void 0);\nW3mConnectingWcMobile = __decorate([\n customElement('w3m-connecting-wc-mobile')\n], W3mConnectingWcMobile);\nexport { W3mConnectingWcMobile };\n//# sourceMappingURL=index.js.map","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n data = encodeUtf8(data)\n }\n this.data = new Uint8Array(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ''\n\n const path =\n ''\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + '\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","import QRCodeUtil from 'qrcode';\nimport { svg } from 'lit';\nconst CONNECTING_ERROR_MARGIN = 0.1;\nconst CIRCLE_SIZE_MODIFIER = 2.5;\nconst QRCODE_MATRIX_MARGIN = 7;\nfunction isAdjecentDots(cy, otherCy, cellSize) {\n if (cy === otherCy) {\n return false;\n }\n const diff = cy - otherCy < 0 ? otherCy - cy : cy - otherCy;\n return diff <= cellSize + CONNECTING_ERROR_MARGIN;\n}\nfunction getMatrix(value, errorCorrectionLevel) {\n const arr = Array.prototype.slice.call(QRCodeUtil.create(value, { errorCorrectionLevel }).modules.data, 0);\n const sqrt = Math.sqrt(arr.length);\n return arr.reduce((rows, key, index) => (index % sqrt === 0 ? rows.push([key]) : rows[rows.length - 1].push(key)) && rows, []);\n}\nexport const QrCodeUtil = {\n generate({ uri, size, logoSize, dotColor = '#141414' }) {\n const edgeColor = 'transparent';\n const strokeWidth = 5;\n const dots = [];\n const matrix = getMatrix(uri, 'Q');\n const cellSize = size / matrix.length;\n const qrList = [\n { x: 0, y: 0 },\n { x: 1, y: 0 },\n { x: 0, y: 1 }\n ];\n qrList.forEach(({ x, y }) => {\n const x1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * x;\n const y1 = (matrix.length - QRCODE_MATRIX_MARGIN) * cellSize * y;\n const borderRadius = 0.45;\n for (let i = 0; i < qrList.length; i += 1) {\n const dotSize = cellSize * (QRCODE_MATRIX_MARGIN - i * 2);\n dots.push(svg `\n \n `);\n }\n });\n const clearArenaSize = Math.floor((logoSize + 25) / cellSize);\n const matrixMiddleStart = matrix.length / 2 - clearArenaSize / 2;\n const matrixMiddleEnd = matrix.length / 2 + clearArenaSize / 2 - 1;\n const circles = [];\n matrix.forEach((row, i) => {\n row.forEach((_, j) => {\n if (matrix[i][j]) {\n if (!((i < QRCODE_MATRIX_MARGIN && j < QRCODE_MATRIX_MARGIN) ||\n (i > matrix.length - (QRCODE_MATRIX_MARGIN + 1) && j < QRCODE_MATRIX_MARGIN) ||\n (i < QRCODE_MATRIX_MARGIN && j > matrix.length - (QRCODE_MATRIX_MARGIN + 1)))) {\n if (!(i > matrixMiddleStart &&\n i < matrixMiddleEnd &&\n j > matrixMiddleStart &&\n j < matrixMiddleEnd)) {\n const cx = i * cellSize + cellSize / 2;\n const cy = j * cellSize + cellSize / 2;\n circles.push([cx, cy]);\n }\n }\n }\n });\n });\n const circlesToConnect = {};\n circles.forEach(([cx, cy]) => {\n if (circlesToConnect[cx]) {\n circlesToConnect[cx]?.push(cy);\n }\n else {\n circlesToConnect[cx] = [cy];\n }\n });\n Object.entries(circlesToConnect)\n .map(([cx, cys]) => {\n const newCys = cys.filter(cy => cys.every(otherCy => !isAdjecentDots(cy, otherCy, cellSize)));\n return [Number(cx), newCys];\n })\n .forEach(([cx, cys]) => {\n cys.forEach(cy => {\n dots.push(svg ``);\n });\n });\n Object.entries(circlesToConnect)\n .filter(([_, cys]) => cys.length > 1)\n .map(([cx, cys]) => {\n const newCys = cys.filter(cy => cys.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));\n return [Number(cx), newCys];\n })\n .map(([cx, cys]) => {\n cys.sort((a, b) => (a < b ? -1 : 1));\n const groups = [];\n for (const cy of cys) {\n const group = groups.find(item => item.some(otherCy => isAdjecentDots(cy, otherCy, cellSize)));\n if (group) {\n group.push(cy);\n }\n else {\n groups.push([cy]);\n }\n }\n return [cx, groups.map(item => [item[0], item[item.length - 1]])];\n })\n .forEach(([cx, groups]) => {\n groups.forEach(([y1, y2]) => {\n dots.push(svg `\n \n `);\n });\n });\n return dots;\n }\n};\n//# sourceMappingURL=QrCode.js.map","import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n user-select: none;\n display: block;\n overflow: hidden;\n aspect-ratio: 1 / 1;\n width: var(--local-size);\n }\n\n :host([data-theme='dark']) {\n border-radius: clamp(0px, var(--wui-border-radius-l), 40px);\n background-color: var(--wui-color-inverse-100);\n padding: var(--wui-spacing-l);\n }\n\n :host([data-theme='light']) {\n box-shadow: 0 0 0 1px var(--wui-color-bg-125);\n background-color: var(--wui-color-bg-125);\n }\n\n :host([data-clear='true']) > wui-icon {\n display: none;\n }\n\n svg:first-child,\n wui-image,\n wui-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n }\n\n wui-image {\n width: 25%;\n height: 25%;\n border-radius: var(--wui-border-radius-xs);\n }\n\n wui-icon {\n width: 100%;\n height: 100%;\n color: var(--local-icon-color) !important;\n transform: translateY(-50%) translateX(-50%) scale(0.25);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html, svg } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-image/index.js';\nimport { QrCodeUtil } from '../../utils/QrCode.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nconst DEFAULT_ICON_COLOR = '#3396ff';\nlet WuiQrCode = class WuiQrCode extends LitElement {\n constructor() {\n super(...arguments);\n this.uri = '';\n this.size = 0;\n this.theme = 'dark';\n this.imageSrc = undefined;\n this.alt = undefined;\n this.arenaClear = undefined;\n this.farcaster = undefined;\n }\n render() {\n this.dataset['theme'] = this.theme;\n this.dataset['clear'] = String(this.arenaClear);\n this.style.cssText = `\n --local-size: ${this.size}px;\n --local-icon-color: ${this.color ?? DEFAULT_ICON_COLOR}\n `;\n return html `${this.templateVisual()} ${this.templateSvg()}`;\n }\n templateSvg() {\n const size = this.theme === 'light' ? this.size : this.size - 16 * 2;\n return svg `\n \n ${QrCodeUtil.generate({\n uri: this.uri,\n size,\n logoSize: this.arenaClear ? 0 : size / 4,\n dotColor: this.color\n })}\n \n `;\n }\n templateVisual() {\n if (this.imageSrc) {\n return html ``;\n }\n if (this.farcaster) {\n return html ``;\n }\n return html ``;\n }\n};\nWuiQrCode.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiQrCode.prototype, \"uri\", void 0);\n__decorate([\n property({ type: Number })\n], WuiQrCode.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiQrCode.prototype, \"theme\", void 0);\n__decorate([\n property()\n], WuiQrCode.prototype, \"imageSrc\", void 0);\n__decorate([\n property()\n], WuiQrCode.prototype, \"alt\", void 0);\n__decorate([\n property()\n], WuiQrCode.prototype, \"color\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiQrCode.prototype, \"arenaClear\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiQrCode.prototype, \"farcaster\", void 0);\nWuiQrCode = __decorate([\n customElement('wui-qr-code')\n], WuiQrCode);\nexport { WuiQrCode };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-005);\n background: linear-gradient(\n 120deg,\n var(--wui-color-bg-200) 5%,\n var(--wui-color-bg-200) 48%,\n var(--wui-color-bg-300) 55%,\n var(--wui-color-bg-300) 60%,\n var(--wui-color-bg-300) calc(60% + 10px),\n var(--wui-color-bg-200) calc(60% + 12px),\n var(--wui-color-bg-200) 100%\n );\n background-size: 250%;\n animation: shimmer 3s linear infinite reverse;\n }\n\n :host([variant='light']) {\n background: linear-gradient(\n 120deg,\n var(--wui-color-bg-150) 5%,\n var(--wui-color-bg-150) 48%,\n var(--wui-color-bg-200) 55%,\n var(--wui-color-bg-200) 60%,\n var(--wui-color-bg-200) calc(60% + 10px),\n var(--wui-color-bg-150) calc(60% + 12px),\n var(--wui-color-bg-150) 100%\n );\n background-size: 250%;\n }\n\n @keyframes shimmer {\n from {\n background-position: -250% 0;\n }\n to {\n background-position: 250% 0;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiShimmer = class WuiShimmer extends LitElement {\n constructor() {\n super(...arguments);\n this.width = '';\n this.height = '';\n this.borderRadius = 'm';\n this.variant = 'default';\n }\n render() {\n this.style.cssText = `\n width: ${this.width};\n height: ${this.height};\n border-radius: ${`clamp(0px,var(--wui-border-radius-${this.borderRadius}), 40px)`};\n `;\n return html ``;\n }\n};\nWuiShimmer.styles = [styles];\n__decorate([\n property()\n], WuiShimmer.prototype, \"width\", void 0);\n__decorate([\n property()\n], WuiShimmer.prototype, \"height\", void 0);\n__decorate([\n property()\n], WuiShimmer.prototype, \"borderRadius\", void 0);\n__decorate([\n property()\n], WuiShimmer.prototype, \"variant\", void 0);\nWuiShimmer = __decorate([\n customElement('wui-shimmer')\n], WuiShimmer);\nexport { WuiShimmer };\n//# sourceMappingURL=index.js.map","export const specialCharactersRegex = /[.*+?^${}()|[\\]\\\\]/gu;\nexport const numbersRegex = /[0-9,.]/u;\nexport const REOWN_URL = 'https://reown.com';\n//# sourceMappingURL=ConstantsUtil.js.map","import { css } from 'lit';\nexport default css `\n .reown-logo {\n height: var(--wui-spacing-xxl);\n }\n\n a {\n text-decoration: none;\n cursor: pointer;\n }\n\n a:hover {\n opacity: 0.9;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-text/index.js';\nimport '../../layout/wui-flex/index.js';\nimport { REOWN_URL } from '../../utils/ConstantsUtil.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiUxByReown = class WuiUxByReown extends LitElement {\n render() {\n return html `\n \n \n UX by \n \n \n \n `;\n }\n};\nWuiUxByReown.styles = [resetStyles, elementStyles, styles];\nWuiUxByReown = __decorate([\n customElement('wui-ux-by-reown')\n], WuiUxByReown);\nexport { WuiUxByReown };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n @keyframes fadein {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n wui-shimmer {\n width: 100%;\n aspect-ratio: 1 / 1;\n border-radius: clamp(0px, var(--wui-border-radius-l), 40px) !important;\n }\n\n wui-qr-code {\n opacity: 0;\n animation-duration: 200ms;\n animation-timing-function: ease;\n animation-name: fadein;\n animation-fill-mode: forwards;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, ConnectionController, EventsController, ThemeController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon';\nimport '@reown/appkit-ui/wui-link';\nimport '@reown/appkit-ui/wui-qr-code';\nimport '@reown/appkit-ui/wui-shimmer';\nimport '@reown/appkit-ui/wui-text';\nimport '@reown/appkit-ui/wui-ux-by-reown';\nimport { W3mConnectingWidget } from '../../utils/w3m-connecting-widget/index.js';\nimport '../w3m-mobile-download-links/index.js';\nimport styles from './styles.js';\nlet W3mConnectingWcQrcode = class W3mConnectingWcQrcode extends W3mConnectingWidget {\n constructor() {\n super();\n this.forceUpdate = () => {\n this.requestUpdate();\n };\n window.addEventListener('resize', this.forceUpdate);\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet?.name ?? 'WalletConnect',\n platform: 'qrcode',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.unsubscribe?.forEach(unsub => unsub());\n window.removeEventListener('resize', this.forceUpdate);\n }\n render() {\n this.onRenderProxy();\n return html `\n \n ${this.qrCodeTemplate()} \n\n \n Scan this QR Code with your phone\n \n ${this.copyTemplate()}\n \n \n `;\n }\n onRenderProxy() {\n if (!this.ready && this.uri) {\n this.timeout = setTimeout(() => {\n this.ready = true;\n }, 200);\n }\n }\n qrCodeTemplate() {\n if (!this.uri || !this.ready) {\n return null;\n }\n const size = this.getBoundingClientRect().width - 40;\n const alt = this.wallet ? this.wallet.name : undefined;\n ConnectionController.setWcLinking(undefined);\n ConnectionController.setRecentWallet(this.wallet);\n return html ` `;\n }\n copyTemplate() {\n const inactive = !this.uri || !this.ready;\n return html `\n \n Copy link\n `;\n }\n};\nW3mConnectingWcQrcode.styles = styles;\nW3mConnectingWcQrcode = __decorate([\n customElement('w3m-connecting-wc-qrcode')\n], W3mConnectingWcQrcode);\nexport { W3mConnectingWcQrcode };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil, EventsController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-text';\nimport '@reown/appkit-ui/wui-wallet-image';\nimport '../w3m-mobile-download-links/index.js';\nlet W3mConnectingWcUnsupported = class W3mConnectingWcUnsupported extends LitElement {\n constructor() {\n super();\n this.wallet = RouterController.state.data?.wallet;\n if (!this.wallet) {\n throw new Error('w3m-connecting-wc-unsupported: No wallet provided');\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet.name,\n platform: 'browser',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n render() {\n return html `\n \n \n\n Not Detected\n \n\n \n `;\n }\n};\nW3mConnectingWcUnsupported = __decorate([\n customElement('w3m-connecting-wc-unsupported')\n], W3mConnectingWcUnsupported);\nexport { W3mConnectingWcUnsupported };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { state } from 'lit/decorators.js';\nimport { ConnectionController, ConstantsUtil, CoreHelperUtil, EventsController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { W3mConnectingWidget } from '../../utils/w3m-connecting-widget/index.js';\nlet W3mConnectingWcWeb = class W3mConnectingWcWeb extends W3mConnectingWidget {\n constructor() {\n super();\n this.isLoading = true;\n if (!this.wallet) {\n throw new Error('w3m-connecting-wc-web: No wallet provided');\n }\n this.onConnect = this.onConnectProxy.bind(this);\n this.secondaryBtnLabel = 'Open';\n this.secondaryLabel = ConstantsUtil.CONNECT_LABELS.MOBILE;\n this.secondaryBtnIcon = 'externalLink';\n this.updateLoadingState();\n this.unsubscribe.push(ConnectionController.subscribeKey('wcUri', () => {\n this.updateLoadingState();\n }));\n EventsController.sendEvent({\n type: 'track',\n event: 'SELECT_WALLET',\n properties: {\n name: this.wallet.name,\n platform: 'web',\n displayIndex: this.wallet?.display_index\n }\n });\n }\n updateLoadingState() {\n this.isLoading = !this.uri;\n }\n onConnectProxy() {\n if (this.wallet?.webapp_link && this.uri) {\n try {\n this.error = false;\n const { webapp_link, name } = this.wallet;\n const { redirect, href } = CoreHelperUtil.formatUniversalUrl(webapp_link, this.uri);\n ConnectionController.setWcLinking({ name, href });\n ConnectionController.setRecentWallet(this.wallet);\n CoreHelperUtil.openHref(redirect, '_blank');\n }\n catch {\n this.error = true;\n }\n }\n }\n};\n__decorate([\n state()\n], W3mConnectingWcWeb.prototype, \"isLoading\", void 0);\nW3mConnectingWcWeb = __decorate([\n customElement('w3m-connecting-wc-web')\n], W3mConnectingWcWeb);\nexport { W3mConnectingWcWeb };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ChainController, ConnectionController, CoreHelperUtil, EventsController, ModalController, OptionsController, RouterController, SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { CaipNetworksUtil } from '@reown/appkit-utils';\nimport '../../partials/w3m-connecting-header/index.js';\nimport '../../partials/w3m-connecting-wc-browser/index.js';\nimport '../../partials/w3m-connecting-wc-desktop/index.js';\nimport '../../partials/w3m-connecting-wc-mobile/index.js';\nimport '../../partials/w3m-connecting-wc-qrcode/index.js';\nimport '../../partials/w3m-connecting-wc-unsupported/index.js';\nimport '../../partials/w3m-connecting-wc-web/index.js';\nlet W3mConnectingWcView = class W3mConnectingWcView extends LitElement {\n constructor() {\n super();\n this.wallet = RouterController.state.data?.wallet;\n this.unsubscribe = [];\n this.platform = undefined;\n this.platforms = [];\n this.isSiwxEnabled = Boolean(OptionsController.state.siwx);\n this.remoteFeatures = OptionsController.state.remoteFeatures;\n this.determinePlatforms();\n this.initializeConnection();\n this.unsubscribe.push(OptionsController.subscribeKey('remoteFeatures', val => (this.remoteFeatures = val)));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n return html `\n ${this.headerTemplate()}\n
${this.platformTemplate()}
\n ${this.reownBrandingTemplate()}\n `;\n }\n reownBrandingTemplate() {\n if (!this.remoteFeatures?.reownBranding) {\n return null;\n }\n return html ``;\n }\n async initializeConnection(retry = false) {\n if (this.platform === 'browser' || (OptionsController.state.manualWCControl && !retry)) {\n return;\n }\n try {\n const { wcPairingExpiry, status } = ConnectionController.state;\n if (retry ||\n OptionsController.state.enableEmbedded ||\n CoreHelperUtil.isPairingExpired(wcPairingExpiry) ||\n status === 'connecting') {\n const connectionsByNamespace = ConnectionController.getConnections(ChainController.state.activeChain);\n const isMultiWalletEnabled = this.remoteFeatures?.multiWallet;\n const hasConnections = connectionsByNamespace.length > 0;\n await ConnectionController.connectWalletConnect();\n if (!this.isSiwxEnabled) {\n if (hasConnections && isMultiWalletEnabled) {\n RouterController.replace('ProfileWallets');\n SnackController.showSuccess('New Wallet Added');\n }\n else {\n ModalController.close();\n }\n }\n }\n }\n catch (error) {\n if (error instanceof Error &&\n error.message.includes('An error occurred when attempting to switch chain') &&\n !OptionsController.state.enableNetworkSwitch) {\n if (ChainController.state.activeChain) {\n ChainController.setActiveCaipNetwork(CaipNetworksUtil.getUnsupportedNetwork(`${ChainController.state.activeChain}:${ChainController.state.activeCaipNetwork?.id}`));\n ChainController.showUnsupportedChainUI();\n return;\n }\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_ERROR',\n properties: { message: error?.message ?? 'Unknown' }\n });\n ConnectionController.setWcError(true);\n SnackController.showError(error.message ?? 'Connection error');\n ConnectionController.resetWcConnection();\n RouterController.goBack();\n }\n }\n determinePlatforms() {\n if (!this.wallet) {\n this.platforms.push('qrcode');\n this.platform = 'qrcode';\n return;\n }\n if (this.platform) {\n return;\n }\n const { mobile_link, desktop_link, webapp_link, injected, rdns } = this.wallet;\n const injectedIds = injected?.map(({ injected_id }) => injected_id).filter(Boolean);\n const browserIds = [...(rdns ? [rdns] : (injectedIds ?? []))];\n const isBrowser = OptionsController.state.isUniversalProvider ? false : browserIds.length;\n const hasMobileWCLink = mobile_link;\n const isWebWc = webapp_link;\n const isBrowserInstalled = ConnectionController.checkInstalled(browserIds);\n const isBrowserWc = isBrowser && isBrowserInstalled;\n const isDesktopWc = desktop_link && !CoreHelperUtil.isMobile();\n if (isBrowserWc && !ChainController.state.noAdapters) {\n this.platforms.push('browser');\n }\n if (hasMobileWCLink) {\n this.platforms.push(CoreHelperUtil.isMobile() ? 'mobile' : 'qrcode');\n }\n if (isWebWc) {\n this.platforms.push('web');\n }\n if (isDesktopWc) {\n this.platforms.push('desktop');\n }\n if (!isBrowserWc && isBrowser && !ChainController.state.noAdapters) {\n this.platforms.push('unsupported');\n }\n this.platform = this.platforms[0];\n }\n platformTemplate() {\n switch (this.platform) {\n case 'browser':\n return html ``;\n case 'web':\n return html ``;\n case 'desktop':\n return html `\n this.initializeConnection(true)}>\n \n `;\n case 'mobile':\n return html `\n this.initializeConnection(true)}>\n \n `;\n case 'qrcode':\n return html ``;\n default:\n return html ``;\n }\n }\n headerTemplate() {\n const multiPlatform = this.platforms.length > 1;\n if (!multiPlatform) {\n return null;\n }\n return html `\n \n \n `;\n }\n async onSelectPlatform(platform) {\n const container = this.shadowRoot?.querySelector('div');\n if (container) {\n await container.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n }).finished;\n this.platform = platform;\n container.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n};\n__decorate([\n state()\n], W3mConnectingWcView.prototype, \"platform\", void 0);\n__decorate([\n state()\n], W3mConnectingWcView.prototype, \"platforms\", void 0);\n__decorate([\n state()\n], W3mConnectingWcView.prototype, \"isSiwxEnabled\", void 0);\n__decorate([\n state()\n], W3mConnectingWcView.prototype, \"remoteFeatures\", void 0);\nW3mConnectingWcView = __decorate([\n customElement('w3m-connecting-wc-view')\n], W3mConnectingWcView);\nexport { W3mConnectingWcView };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ApiController, CoreHelperUtil, OptionsController, StorageUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '../../partials/w3m-all-wallets-widget/index.js';\nimport '../../partials/w3m-connector-list/index.js';\nimport '../w3m-connecting-wc-view/index.js';\nlet W3mConnectingWcBasicView = class W3mConnectingWcBasicView extends LitElement {\n constructor() {\n super(...arguments);\n this.isMobile = CoreHelperUtil.isMobile();\n }\n render() {\n if (this.isMobile) {\n const { featured, recommended } = ApiController.state;\n const { customWallets } = OptionsController.state;\n const recent = StorageUtil.getRecentWallets();\n const showConnectors = featured.length || recommended.length || customWallets?.length || recent.length;\n return html `\n ${showConnectors ? html `` : null}\n \n `;\n }\n return html `\n \n \n `;\n }\n};\n__decorate([\n state()\n], W3mConnectingWcBasicView.prototype, \"isMobile\", void 0);\nW3mConnectingWcBasicView = __decorate([\n customElement('w3m-connecting-wc-basic-view')\n], W3mConnectingWcBasicView);\nexport { W3mConnectingWcBasicView };\n//# sourceMappingURL=index.js.map","import{nothing as t}from\"../lit-html.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{directive as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=()=>new h;class h{}const o=new WeakMap,n=s(class extends i{render(i){return t}update(i,[s]){const e=s!==this.G;return e&&void 0!==this.G&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=s,this.ht=i.options?.host,this.rt(this.ct=i.element)),t}rt(t){if(this.isConnected||(t=void 0),\"function\"==typeof this.G){const i=this.ht??globalThis;let s=o.get(i);void 0===s&&(s=new WeakMap,o.set(i,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return\"function\"==typeof this.G?o.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{e as createRef,n as ref};\n//# sourceMappingURL=ref.js.map\n","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n label {\n position: relative;\n display: inline-block;\n width: 32px;\n height: 22px;\n }\n\n input {\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n span {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--wui-color-blue-100);\n border-width: 1px;\n border-style: solid;\n border-color: var(--wui-color-gray-glass-002);\n border-radius: 999px;\n transition:\n background-color var(--wui-ease-inout-power-1) var(--wui-duration-md),\n border-color var(--wui-ease-inout-power-1) var(--wui-duration-md);\n will-change: background-color, border-color;\n }\n\n span:before {\n position: absolute;\n content: '';\n height: 16px;\n width: 16px;\n left: 3px;\n top: 2px;\n background-color: var(--wui-color-inverse-100);\n transition: transform var(--wui-ease-inout-power-1) var(--wui-duration-lg);\n will-change: transform;\n border-radius: 50%;\n }\n\n input:checked + span {\n border-color: var(--wui-color-gray-glass-005);\n background-color: var(--wui-color-blue-100);\n }\n\n input:not(:checked) + span {\n background-color: var(--wui-color-gray-glass-010);\n }\n\n input:checked + span:before {\n transform: translateX(calc(100% - 7px));\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { colorStyles, elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiSwitch = class WuiSwitch extends LitElement {\n constructor() {\n super(...arguments);\n this.inputElementRef = createRef();\n this.checked = undefined;\n }\n render() {\n return html `\n \n `;\n }\n dispatchChangeEvent() {\n this.dispatchEvent(new CustomEvent('switchChange', {\n detail: this.inputElementRef.value?.checked,\n bubbles: true,\n composed: true\n }));\n }\n};\nWuiSwitch.styles = [resetStyles, elementStyles, colorStyles, styles];\n__decorate([\n property({ type: Boolean })\n], WuiSwitch.prototype, \"checked\", void 0);\nWuiSwitch = __decorate([\n customElement('wui-switch')\n], WuiSwitch);\nexport { WuiSwitch };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n height: 100%;\n }\n\n button {\n display: flex;\n align-items: center;\n justify-content: center;\n column-gap: var(--wui-spacing-1xs);\n padding: var(--wui-spacing-xs) var(--wui-spacing-s);\n background-color: var(--wui-color-gray-glass-002);\n border-radius: var(--wui-border-radius-xs);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002);\n transition: background-color var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: background-color;\n cursor: pointer;\n }\n\n wui-switch {\n pointer-events: none;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport '../../components/wui-icon/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-switch/index.js';\nimport styles from './styles.js';\nlet WuiCertifiedSwitch = class WuiCertifiedSwitch extends LitElement {\n constructor() {\n super(...arguments);\n this.checked = undefined;\n }\n render() {\n return html `\n \n `;\n }\n};\nWuiCertifiedSwitch.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property({ type: Boolean })\n], WuiCertifiedSwitch.prototype, \"checked\", void 0);\nWuiCertifiedSwitch = __decorate([\n customElement('wui-certified-switch')\n], WuiCertifiedSwitch);\nexport { WuiCertifiedSwitch };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n background-color: var(--wui-color-fg-300);\n border-radius: var(--wui-border-radius-4xs);\n width: 16px;\n height: 16px;\n }\n\n button:disabled {\n background-color: var(--wui-color-bg-300);\n }\n\n wui-icon {\n color: var(--wui-color-bg-200) !important;\n }\n\n button:focus-visible {\n background-color: var(--wui-color-fg-250);\n border: 1px solid var(--wui-color-accent-100);\n }\n\n @media (hover: hover) and (pointer: fine) {\n button:hover:enabled {\n background-color: var(--wui-color-fg-250);\n }\n\n button:active:enabled {\n background-color: var(--wui-color-fg-225);\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiInputElement = class WuiInputElement extends LitElement {\n constructor() {\n super(...arguments);\n this.icon = 'copy';\n }\n render() {\n return html `\n \n `;\n }\n};\nWuiInputElement.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiInputElement.prototype, \"icon\", void 0);\nWuiInputElement = __decorate([\n customElement('wui-input-element')\n], WuiInputElement);\nexport { WuiInputElement };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n width: 100%;\n display: inline-block;\n color: var(--wui-color-fg-275);\n }\n\n input {\n width: 100%;\n border-radius: var(--wui-border-radius-xs);\n box-shadow: inset 0 0 0 1px var(--wui-color-gray-glass-002);\n background: var(--wui-color-gray-glass-002);\n font-size: var(--wui-font-size-paragraph);\n letter-spacing: var(--wui-letter-spacing-paragraph);\n color: var(--wui-color-fg-100);\n transition:\n background-color var(--wui-ease-inout-power-1) var(--wui-duration-md),\n border-color var(--wui-ease-inout-power-1) var(--wui-duration-md),\n box-shadow var(--wui-ease-inout-power-1) var(--wui-duration-md);\n will-change: background-color, border-color, box-shadow;\n caret-color: var(--wui-color-accent-100);\n }\n\n input:disabled {\n cursor: not-allowed;\n border: 1px solid var(--wui-color-gray-glass-010);\n }\n\n input:disabled::placeholder,\n input:disabled + wui-icon {\n color: var(--wui-color-fg-300);\n }\n\n input::placeholder {\n color: var(--wui-color-fg-275);\n }\n\n input:focus:enabled {\n background-color: var(--wui-color-gray-glass-005);\n -webkit-box-shadow:\n inset 0 0 0 1px var(--wui-color-accent-100),\n 0px 0px 0px 4px var(--wui-box-shadow-blue);\n -moz-box-shadow:\n inset 0 0 0 1px var(--wui-color-accent-100),\n 0px 0px 0px 4px var(--wui-box-shadow-blue);\n box-shadow:\n inset 0 0 0 1px var(--wui-color-accent-100),\n 0px 0px 0px 4px var(--wui-box-shadow-blue);\n }\n\n input:hover:enabled {\n background-color: var(--wui-color-gray-glass-005);\n }\n\n wui-icon {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n }\n\n .wui-size-sm {\n padding: 9px var(--wui-spacing-m) 10px var(--wui-spacing-s);\n }\n\n wui-icon + .wui-size-sm {\n padding: 9px var(--wui-spacing-m) 10px 36px;\n }\n\n wui-icon[data-input='sm'] {\n left: var(--wui-spacing-s);\n }\n\n .wui-size-md {\n padding: 15px var(--wui-spacing-m) var(--wui-spacing-l) var(--wui-spacing-m);\n }\n\n wui-icon + .wui-size-md,\n wui-loading-spinner + .wui-size-md {\n padding: 10.5px var(--wui-spacing-3xl) 10.5px var(--wui-spacing-3xl);\n }\n\n wui-icon[data-input='md'] {\n left: var(--wui-spacing-l);\n }\n\n .wui-size-lg {\n padding: var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-s) var(--wui-spacing-l);\n letter-spacing: var(--wui-letter-spacing-medium-title);\n font-size: var(--wui-font-size-medium-title);\n font-weight: var(--wui-font-weight-light);\n line-height: 130%;\n color: var(--wui-color-fg-100);\n height: 64px;\n }\n\n .wui-padding-right-xs {\n padding-right: var(--wui-spacing-xs);\n }\n\n .wui-padding-right-s {\n padding-right: var(--wui-spacing-s);\n }\n\n .wui-padding-right-m {\n padding-right: var(--wui-spacing-m);\n }\n\n .wui-padding-right-l {\n padding-right: var(--wui-spacing-l);\n }\n\n .wui-padding-right-xl {\n padding-right: var(--wui-spacing-xl);\n }\n\n .wui-padding-right-2xl {\n padding-right: var(--wui-spacing-2xl);\n }\n\n .wui-padding-right-3xl {\n padding-right: var(--wui-spacing-3xl);\n }\n\n .wui-padding-right-4xl {\n padding-right: var(--wui-spacing-4xl);\n }\n\n .wui-padding-right-5xl {\n padding-right: var(--wui-spacing-5xl);\n }\n\n wui-icon + .wui-size-lg,\n wui-loading-spinner + .wui-size-lg {\n padding-left: 50px;\n }\n\n wui-icon[data-input='lg'] {\n left: var(--wui-spacing-l);\n }\n\n .wui-size-mdl {\n padding: 17.25px var(--wui-spacing-m) 17.25px var(--wui-spacing-m);\n }\n wui-icon + .wui-size-mdl,\n wui-loading-spinner + .wui-size-mdl {\n padding: 17.25px var(--wui-spacing-3xl) 17.25px 40px;\n }\n wui-icon[data-input='mdl'] {\n left: var(--wui-spacing-m);\n }\n\n input:placeholder-shown ~ ::slotted(wui-input-element),\n input:placeholder-shown ~ ::slotted(wui-icon) {\n opacity: 0;\n pointer-events: none;\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input[type='number'] {\n -moz-appearance: textfield;\n }\n\n ::slotted(wui-input-element),\n ::slotted(wui-icon) {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n }\n\n ::slotted(wui-input-element) {\n right: var(--wui-spacing-m);\n }\n\n ::slotted(wui-icon) {\n right: 0px;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport '../../components/wui-icon/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiInputText = class WuiInputText extends LitElement {\n constructor() {\n super(...arguments);\n this.inputElementRef = createRef();\n this.size = 'md';\n this.disabled = false;\n this.placeholder = '';\n this.type = 'text';\n this.value = '';\n }\n render() {\n const inputClass = `wui-padding-right-${this.inputRightPadding}`;\n const sizeClass = `wui-size-${this.size}`;\n const classes = {\n [sizeClass]: true,\n [inputClass]: Boolean(this.inputRightPadding)\n };\n return html `${this.templateIcon()}\n \n `;\n }\n templateIcon() {\n if (this.icon) {\n return html ``;\n }\n return null;\n }\n dispatchInputChangeEvent() {\n this.dispatchEvent(new CustomEvent('inputChange', {\n detail: this.inputElementRef.value?.value,\n bubbles: true,\n composed: true\n }));\n }\n};\nWuiInputText.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiInputText.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"icon\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiInputText.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"placeholder\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"type\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"keyHint\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"value\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"inputRightPadding\", void 0);\n__decorate([\n property()\n], WuiInputText.prototype, \"tabIdx\", void 0);\nWuiInputText = __decorate([\n customElement('wui-input-text')\n], WuiInputText);\nexport { WuiInputText };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n position: relative;\n display: inline-block;\n width: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport '../../composites/wui-input-element/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-input-text/index.js';\nimport styles from './styles.js';\nlet WuiSearchBar = class WuiSearchBar extends LitElement {\n constructor() {\n super(...arguments);\n this.inputComponentRef = createRef();\n }\n render() {\n return html `\n \n \n \n `;\n }\n clearValue() {\n const inputComponent = this.inputComponentRef.value;\n const inputElement = inputComponent?.inputElementRef.value;\n if (inputElement) {\n inputElement.value = '';\n inputElement.focus();\n inputElement.dispatchEvent(new Event('input'));\n }\n }\n};\nWuiSearchBar.styles = [resetStyles, styles];\nWuiSearchBar = __decorate([\n customElement('wui-search-bar')\n], WuiSearchBar);\nexport { WuiSearchBar };\n//# sourceMappingURL=index.js.map","import { svg } from 'lit';\nexport const networkSvgMd = svg `\n \n`;\n//# sourceMappingURL=networkMd.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 104px;\n row-gap: var(--wui-spacing-xs);\n padding: var(--wui-spacing-xs) 10px;\n background-color: var(--wui-color-gray-glass-002);\n border-radius: clamp(0px, var(--wui-border-radius-xs), 20px);\n position: relative;\n }\n\n wui-shimmer[data-type='network'] {\n border: none;\n -webkit-clip-path: var(--wui-path-network);\n clip-path: var(--wui-path-network);\n }\n\n svg {\n position: absolute;\n width: 48px;\n height: 54px;\n z-index: 1;\n }\n\n svg > path {\n stroke: var(--wui-color-gray-glass-010);\n stroke-width: 1px;\n }\n\n @media (max-width: 350px) {\n :host {\n width: 100%;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { networkSvgMd } from '../../assets/svg/networkMd.js';\nimport '../../components/wui-shimmer/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiCardSelectLoader = class WuiCardSelectLoader extends LitElement {\n constructor() {\n super(...arguments);\n this.type = 'wallet';\n }\n render() {\n return html `\n ${this.shimmerTemplate()}\n \n `;\n }\n shimmerTemplate() {\n if (this.type === 'network') {\n return html ` \n ${networkSvgMd}`;\n }\n return html ``;\n }\n};\nWuiCardSelectLoader.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiCardSelectLoader.prototype, \"type\", void 0);\nWuiCardSelectLoader = __decorate([\n customElement('wui-card-select-loader')\n], WuiCardSelectLoader);\nexport { WuiCardSelectLoader };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: grid;\n width: inherit;\n height: inherit;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { UiHelperUtil } from '../../utils/UiHelperUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiGrid = class WuiGrid extends LitElement {\n render() {\n this.style.cssText = `\n grid-template-rows: ${this.gridTemplateRows};\n grid-template-columns: ${this.gridTemplateColumns};\n justify-items: ${this.justifyItems};\n align-items: ${this.alignItems};\n justify-content: ${this.justifyContent};\n align-content: ${this.alignContent};\n column-gap: ${this.columnGap && `var(--wui-spacing-${this.columnGap})`};\n row-gap: ${this.rowGap && `var(--wui-spacing-${this.rowGap})`};\n gap: ${this.gap && `var(--wui-spacing-${this.gap})`};\n padding-top: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 0)};\n padding-right: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 1)};\n padding-bottom: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 2)};\n padding-left: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 3)};\n margin-top: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 0)};\n margin-right: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 1)};\n margin-bottom: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 2)};\n margin-left: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 3)};\n `;\n return html ``;\n }\n};\nWuiGrid.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiGrid.prototype, \"gridTemplateRows\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"gridTemplateColumns\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"justifyItems\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"alignItems\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"justifyContent\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"alignContent\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"columnGap\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"rowGap\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"gap\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"padding\", void 0);\n__decorate([\n property()\n], WuiGrid.prototype, \"margin\", void 0);\nWuiGrid = __decorate([\n customElement('wui-grid')\n], WuiGrid);\nexport { WuiGrid };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n width: 104px;\n row-gap: var(--wui-spacing-xs);\n padding: var(--wui-spacing-s) var(--wui-spacing-0);\n background-color: var(--wui-color-gray-glass-002);\n border-radius: clamp(0px, var(--wui-border-radius-xs), 20px);\n transition:\n color var(--wui-duration-lg) var(--wui-ease-out-power-1),\n background-color var(--wui-duration-lg) var(--wui-ease-out-power-1),\n border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1);\n will-change: background-color, color, border-radius;\n outline: none;\n border: none;\n }\n\n button > wui-flex > wui-text {\n color: var(--wui-color-fg-100);\n max-width: 86px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n justify-content: center;\n }\n\n button > wui-flex > wui-text.certified {\n max-width: 66px;\n }\n\n button:hover:enabled {\n background-color: var(--wui-color-gray-glass-005);\n }\n\n button:disabled > wui-flex > wui-text {\n color: var(--wui-color-gray-glass-015);\n }\n\n [data-selected='true'] {\n background-color: var(--wui-color-accent-glass-020);\n }\n\n @media (hover: hover) and (pointer: fine) {\n [data-selected='true']:hover:enabled {\n background-color: var(--wui-color-accent-glass-015);\n }\n }\n\n [data-selected='true']:active:enabled {\n background-color: var(--wui-color-accent-glass-010);\n }\n\n @media (max-width: 350px) {\n button {\n width: 100%;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AssetUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon';\nimport '@reown/appkit-ui/wui-shimmer';\nimport '@reown/appkit-ui/wui-text';\nimport '@reown/appkit-ui/wui-wallet-image';\nimport styles from './styles.js';\nlet W3mAllWalletsListItem = class W3mAllWalletsListItem extends LitElement {\n constructor() {\n super();\n this.observer = new IntersectionObserver(() => undefined);\n this.visible = false;\n this.imageSrc = undefined;\n this.imageLoading = false;\n this.wallet = undefined;\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.visible = true;\n this.fetchImageSrc();\n }\n else {\n this.visible = false;\n }\n });\n }, { threshold: 0.01 });\n }\n firstUpdated() {\n this.observer.observe(this);\n }\n disconnectedCallback() {\n this.observer.disconnect();\n }\n render() {\n const certified = this.wallet?.badge_type === 'certified';\n return html `\n \n `;\n }\n imageTemplate() {\n if ((!this.visible && !this.imageSrc) || this.imageLoading) {\n return this.shimmerTemplate();\n }\n return html `\n \n \n `;\n }\n shimmerTemplate() {\n return html ``;\n }\n async fetchImageSrc() {\n if (!this.wallet) {\n return;\n }\n this.imageSrc = AssetUtil.getWalletImage(this.wallet);\n if (this.imageSrc) {\n return;\n }\n this.imageLoading = true;\n this.imageSrc = await AssetUtil.fetchWalletImage(this.wallet.image_id);\n this.imageLoading = false;\n }\n};\nW3mAllWalletsListItem.styles = styles;\n__decorate([\n state()\n], W3mAllWalletsListItem.prototype, \"visible\", void 0);\n__decorate([\n state()\n], W3mAllWalletsListItem.prototype, \"imageSrc\", void 0);\n__decorate([\n state()\n], W3mAllWalletsListItem.prototype, \"imageLoading\", void 0);\n__decorate([\n property()\n], W3mAllWalletsListItem.prototype, \"wallet\", void 0);\nW3mAllWalletsListItem = __decorate([\n customElement('w3m-all-wallets-list-item')\n], W3mAllWalletsListItem);\nexport { W3mAllWalletsListItem };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-grid {\n max-height: clamp(360px, 400px, 80vh);\n overflow: scroll;\n scrollbar-width: none;\n grid-auto-rows: min-content;\n grid-template-columns: repeat(auto-fill, 104px);\n }\n\n @media (max-width: 350px) {\n wui-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n wui-grid[data-scroll='false'] {\n overflow: hidden;\n }\n\n wui-grid::-webkit-scrollbar {\n display: none;\n }\n\n wui-loading-spinner {\n padding-top: var(--wui-spacing-l);\n padding-bottom: var(--wui-spacing-l);\n justify-content: center;\n grid-column: 1 / span 4;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ApiController, ConnectorController, CoreHelperUtil } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-card-select-loader';\nimport '@reown/appkit-ui/wui-grid';\nimport { WalletUtil } from '../../utils/WalletUtil.js';\nimport '../w3m-all-wallets-list-item/index.js';\nimport styles from './styles.js';\nconst PAGINATOR_ID = 'local-paginator';\nlet W3mAllWalletsList = class W3mAllWalletsList extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.paginationObserver = undefined;\n this.loading = !ApiController.state.wallets.length;\n this.wallets = ApiController.state.wallets;\n this.recommended = ApiController.state.recommended;\n this.featured = ApiController.state.featured;\n this.filteredWallets = ApiController.state.filteredWallets;\n this.unsubscribe.push(...[\n ApiController.subscribeKey('wallets', val => (this.wallets = val)),\n ApiController.subscribeKey('recommended', val => (this.recommended = val)),\n ApiController.subscribeKey('featured', val => (this.featured = val)),\n ApiController.subscribeKey('filteredWallets', val => (this.filteredWallets = val))\n ]);\n }\n firstUpdated() {\n this.initialFetch();\n this.createPaginationObserver();\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n this.paginationObserver?.disconnect();\n }\n render() {\n return html `\n \n ${this.loading ? this.shimmerTemplate(16) : this.walletsTemplate()}\n ${this.paginationLoaderTemplate()}\n \n `;\n }\n async initialFetch() {\n this.loading = true;\n const gridEl = this.shadowRoot?.querySelector('wui-grid');\n if (gridEl) {\n await ApiController.fetchWalletsByPage({ page: 1 });\n await gridEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n }).finished;\n this.loading = false;\n gridEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n shimmerTemplate(items, id) {\n return [...Array(items)].map(() => html `\n \n `);\n }\n getWallets() {\n const wallets = [...this.featured, ...this.recommended];\n if (this.filteredWallets?.length > 0) {\n wallets.push(...this.filteredWallets);\n }\n else {\n wallets.push(...this.wallets);\n }\n const uniqueWallets = CoreHelperUtil.uniqueBy(wallets, 'id');\n const walletsWithInstalled = WalletUtil.markWalletsAsInstalled(uniqueWallets);\n return WalletUtil.markWalletsWithDisplayIndex(walletsWithInstalled);\n }\n walletsTemplate() {\n const wallets = this.getWallets();\n return wallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n .wallet=${wallet}\n >\n `);\n }\n paginationLoaderTemplate() {\n const { wallets, recommended, featured, count } = ApiController.state;\n const columns = window.innerWidth < 352 ? 3 : 4;\n const currentWallets = wallets.length + recommended.length;\n const minimumRows = Math.ceil(currentWallets / columns);\n let shimmerCount = minimumRows * columns - currentWallets + columns;\n shimmerCount -= wallets.length ? featured.length % columns : 0;\n if (count === 0 && featured.length > 0) {\n return null;\n }\n if (count === 0 || [...featured, ...wallets, ...recommended].length < count) {\n return this.shimmerTemplate(shimmerCount, PAGINATOR_ID);\n }\n return null;\n }\n createPaginationObserver() {\n const loaderEl = this.shadowRoot?.querySelector(`#${PAGINATOR_ID}`);\n if (loaderEl) {\n this.paginationObserver = new IntersectionObserver(([element]) => {\n if (element?.isIntersecting && !this.loading) {\n const { page, count, wallets } = ApiController.state;\n if (wallets.length < count) {\n ApiController.fetchWalletsByPage({ page: page + 1 });\n }\n }\n });\n this.paginationObserver.observe(loaderEl);\n }\n }\n onConnectWallet(wallet) {\n ConnectorController.selectWalletConnector(wallet);\n }\n};\nW3mAllWalletsList.styles = styles;\n__decorate([\n state()\n], W3mAllWalletsList.prototype, \"loading\", void 0);\n__decorate([\n state()\n], W3mAllWalletsList.prototype, \"wallets\", void 0);\n__decorate([\n state()\n], W3mAllWalletsList.prototype, \"recommended\", void 0);\n__decorate([\n state()\n], W3mAllWalletsList.prototype, \"featured\", void 0);\n__decorate([\n state()\n], W3mAllWalletsList.prototype, \"filteredWallets\", void 0);\nW3mAllWalletsList = __decorate([\n customElement('w3m-all-wallets-list')\n], W3mAllWalletsList);\nexport { W3mAllWalletsList };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n wui-grid,\n wui-loading-spinner,\n wui-flex {\n height: 360px;\n }\n\n wui-grid {\n overflow: scroll;\n scrollbar-width: none;\n grid-auto-rows: min-content;\n grid-template-columns: repeat(auto-fill, 104px);\n }\n\n wui-grid[data-scroll='false'] {\n overflow: hidden;\n }\n\n wui-grid::-webkit-scrollbar {\n display: none;\n }\n\n wui-loading-spinner {\n justify-content: center;\n align-items: center;\n }\n\n @media (max-width: 350px) {\n wui-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ApiController, ConnectorController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-grid';\nimport '@reown/appkit-ui/wui-icon-box';\nimport '@reown/appkit-ui/wui-loading-spinner';\nimport '@reown/appkit-ui/wui-text';\nimport { WalletUtil } from '../../utils/WalletUtil.js';\nimport '../w3m-all-wallets-list-item/index.js';\nimport styles from './styles.js';\nlet W3mAllWalletsSearch = class W3mAllWalletsSearch extends LitElement {\n constructor() {\n super(...arguments);\n this.prevQuery = '';\n this.prevBadge = undefined;\n this.loading = true;\n this.query = '';\n }\n render() {\n this.onSearch();\n return this.loading\n ? html ``\n : this.walletsTemplate();\n }\n async onSearch() {\n if (this.query.trim() !== this.prevQuery.trim() || this.badge !== this.prevBadge) {\n this.prevQuery = this.query;\n this.prevBadge = this.badge;\n this.loading = true;\n await ApiController.searchWallet({ search: this.query, badge: this.badge });\n this.loading = false;\n }\n }\n walletsTemplate() {\n const { search } = ApiController.state;\n const wallets = WalletUtil.markWalletsAsInstalled(search);\n if (!search.length) {\n return html `\n \n \n \n No Wallet found\n \n \n `;\n }\n return html `\n \n ${wallets.map(wallet => html `\n this.onConnectWallet(wallet)}\n .wallet=${wallet}\n data-testid=\"wallet-search-item-${wallet.id}\"\n >\n `)}\n \n `;\n }\n onConnectWallet(wallet) {\n ConnectorController.selectWalletConnector(wallet);\n }\n};\nW3mAllWalletsSearch.styles = styles;\n__decorate([\n state()\n], W3mAllWalletsSearch.prototype, \"loading\", void 0);\n__decorate([\n property()\n], W3mAllWalletsSearch.prototype, \"query\", void 0);\n__decorate([\n property()\n], W3mAllWalletsSearch.prototype, \"badge\", void 0);\nW3mAllWalletsSearch = __decorate([\n customElement('w3m-all-wallets-search')\n], W3mAllWalletsSearch);\nexport { W3mAllWalletsSearch };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { CoreHelperUtil, RouterController, SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-certified-switch';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon-box';\nimport '@reown/appkit-ui/wui-search-bar';\nimport '../../partials/w3m-all-wallets-list/index.js';\nimport '../../partials/w3m-all-wallets-search/index.js';\nlet W3mAllWalletsView = class W3mAllWalletsView extends LitElement {\n constructor() {\n super(...arguments);\n this.search = '';\n this.onDebouncedSearch = CoreHelperUtil.debounce((value) => {\n this.search = value;\n });\n }\n render() {\n const isSearch = this.search.length >= 2;\n return html `\n \n \n \n ${this.qrButtonTemplate()}\n \n ${isSearch || this.badge\n ? html ``\n : html ``}\n `;\n }\n onInputChange(event) {\n this.onDebouncedSearch(event.detail);\n }\n onClick() {\n if (this.badge === 'certified') {\n this.badge = undefined;\n return;\n }\n this.badge = 'certified';\n SnackController.showSvg('Only WalletConnect certified', {\n icon: 'walletConnectBrown',\n iconColor: 'accent-100'\n });\n }\n qrButtonTemplate() {\n if (CoreHelperUtil.isMobile()) {\n return html `\n \n `;\n }\n return null;\n }\n onWalletConnectQr() {\n RouterController.push('ConnectingWalletConnect');\n }\n};\n__decorate([\n state()\n], W3mAllWalletsView.prototype, \"search\", void 0);\n__decorate([\n state()\n], W3mAllWalletsView.prototype, \"badge\", void 0);\nW3mAllWalletsView = __decorate([\n customElement('w3m-all-wallets-view')\n], W3mAllWalletsView);\nexport { W3mAllWalletsView };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n column-gap: var(--wui-spacing-s);\n padding: 11px 18px 11px var(--wui-spacing-s);\n width: 100%;\n background-color: var(--wui-color-gray-glass-002);\n border-radius: var(--wui-border-radius-xs);\n color: var(--wui-color-fg-250);\n transition:\n color var(--wui-ease-out-power-1) var(--wui-duration-md),\n background-color var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: color, background-color;\n }\n\n button[data-iconvariant='square'],\n button[data-iconvariant='square-blue'] {\n padding: 6px 18px 6px 9px;\n }\n\n button > wui-flex {\n flex: 1;\n }\n\n button > wui-image {\n width: 32px;\n height: 32px;\n box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005);\n border-radius: var(--wui-border-radius-3xl);\n }\n\n button > wui-icon {\n width: 36px;\n height: 36px;\n transition: opacity var(--wui-ease-out-power-1) var(--wui-duration-md);\n will-change: opacity;\n }\n\n button > wui-icon-box[data-variant='blue'] {\n box-shadow: 0 0 0 2px var(--wui-color-accent-glass-005);\n }\n\n button > wui-icon-box[data-variant='overlay'] {\n box-shadow: 0 0 0 2px var(--wui-color-gray-glass-005);\n }\n\n button > wui-icon-box[data-variant='square-blue'] {\n border-radius: var(--wui-border-radius-3xs);\n position: relative;\n border: none;\n width: 36px;\n height: 36px;\n }\n\n button > wui-icon-box[data-variant='square-blue']::after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n border-radius: inherit;\n border: 1px solid var(--wui-color-accent-glass-010);\n pointer-events: none;\n }\n\n button > wui-icon:last-child {\n width: 14px;\n height: 14px;\n }\n\n button:disabled {\n color: var(--wui-color-gray-glass-020);\n }\n\n button[data-loading='true'] > wui-icon {\n opacity: 0;\n }\n\n wui-loading-spinner {\n position: absolute;\n right: 18px;\n top: 50%;\n transform: translateY(-50%);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-image/index.js';\nimport '../../components/wui-loading-spinner/index.js';\nimport '../../components/wui-text/index.js';\nimport '../../layout/wui-flex/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-icon-box/index.js';\nimport styles from './styles.js';\nlet WuiListItem = class WuiListItem extends LitElement {\n constructor() {\n super(...arguments);\n this.tabIdx = undefined;\n this.variant = 'icon';\n this.disabled = false;\n this.imageSrc = undefined;\n this.alt = undefined;\n this.chevron = false;\n this.loading = false;\n }\n render() {\n return html `\n \n ${this.loadingTemplate()} ${this.visualTemplate()}\n \n \n \n ${this.chevronTemplate()}\n \n `;\n }\n visualTemplate() {\n if (this.variant === 'image' && this.imageSrc) {\n return html ``;\n }\n if (this.iconVariant === 'square' && this.icon && this.variant === 'icon') {\n return html ``;\n }\n if (this.variant === 'icon' && this.icon && this.iconVariant) {\n const color = ['blue', 'square-blue'].includes(this.iconVariant) ? 'accent-100' : 'fg-200';\n const size = this.iconVariant === 'square-blue' ? 'mdl' : 'md';\n const iconSize = this.iconSize ? this.iconSize : size;\n return html `\n \n `;\n }\n return null;\n }\n loadingTemplate() {\n if (this.loading) {\n return html ``;\n }\n return html ``;\n }\n chevronTemplate() {\n if (this.chevron) {\n return html ``;\n }\n return null;\n }\n};\nWuiListItem.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiListItem.prototype, \"icon\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"iconSize\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"tabIdx\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"variant\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"iconVariant\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListItem.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"imageSrc\", void 0);\n__decorate([\n property()\n], WuiListItem.prototype, \"alt\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListItem.prototype, \"chevron\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiListItem.prototype, \"loading\", void 0);\nWuiListItem = __decorate([\n customElement('wui-list-item')\n], WuiListItem);\nexport { WuiListItem };\n//# sourceMappingURL=index.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { CoreHelperUtil, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-list-item';\nimport '@reown/appkit-ui/wui-text';\nlet W3mDownloadsView = class W3mDownloadsView extends LitElement {\n constructor() {\n super(...arguments);\n this.wallet = RouterController.state.data?.wallet;\n }\n render() {\n if (!this.wallet) {\n throw new Error('w3m-downloads-view');\n }\n return html `\n \n ${this.chromeTemplate()} ${this.iosTemplate()} ${this.androidTemplate()}\n ${this.homepageTemplate()}\n \n `;\n }\n chromeTemplate() {\n if (!this.wallet?.chrome_store) {\n return null;\n }\n return html `\n Chrome Extension\n `;\n }\n iosTemplate() {\n if (!this.wallet?.app_store) {\n return null;\n }\n return html `\n iOS App\n `;\n }\n androidTemplate() {\n if (!this.wallet?.play_store) {\n return null;\n }\n return html `\n Android App\n `;\n }\n homepageTemplate() {\n if (!this.wallet?.homepage) {\n return null;\n }\n return html `\n \n Website\n \n `;\n }\n onChromeStore() {\n if (this.wallet?.chrome_store) {\n CoreHelperUtil.openHref(this.wallet.chrome_store, '_blank');\n }\n }\n onAppStore() {\n if (this.wallet?.app_store) {\n CoreHelperUtil.openHref(this.wallet.app_store, '_blank');\n }\n }\n onPlayStore() {\n if (this.wallet?.play_store) {\n CoreHelperUtil.openHref(this.wallet.play_store, '_blank');\n }\n }\n onHomePage() {\n if (this.wallet?.homepage) {\n CoreHelperUtil.openHref(this.wallet.homepage, '_blank');\n }\n }\n};\nW3mDownloadsView = __decorate([\n customElement('w3m-downloads-view')\n], W3mDownloadsView);\nexport { W3mDownloadsView };\n//# sourceMappingURL=index.js.map"],"names":["styles$q","css","__decorate","decorators","target","key","desc","c","r","d","i","WuiWalletImage","LitElement","borderRadius","html","elementStyles","resetStyles","styles","property","customElement","styles$p","TOTAL_IMAGES","WuiAllWalletsImage","isPlaceholders","src","walletName","ifDefined","styles$o","WuiListWallet","W3mAllWalletsWidget","ConnectorController","ApiController","val","unsubscribe","wcConnector","allWallets","OptionsController","CoreHelperUtil","featuredCount","rawCount","roundedCount","count","tagLabel","hasWcConnection","ConnectionController","CommonConstantsUtil","EventsController","RouterController","state","W3mConnectAnnouncedWidget","announcedConnectors","connector","ConnectorUtil","isAlreadyConnected","HelpersUtil","AssetUtil","W3mConnectCustomWidget","customWallets","wallets","wallet","recent","StorageUtil","connectorRDNSs","_a","recentRDNSs","allRDNSs","index","W3mConnectExternalWidget","filteredOutCoinbaseConnectors","W3mConnectFeaturedWidget","W3mConnectInjectedWidget","injectedConnectors","W3mConnectMultiChainWidget","multiChainConnectors","W3mConnectRecentWidget","filteredRecentWallets","WalletUtil","currentNamespace","ChainController","chainNamespace","W3mConnectRecommendedWidget","connectors","featuredWalletIds","recentWallets","injectedWallets","overrideLength","maxRecommended","W3mConnectWalletConnectWidget","AssetController","connectorImage","styles$n","W3mConnectorList","custom","announced","injected","multiChain","recommended","featured","external","type","styles$m","WuiTabs","tab","isActive","initialAnimation","passiveBtn","activeBtn","passiveBtnText","activeBtnText","activeBtnBounds","activeBtnTextBounds","W3mConnectingHeader","tabs","platform","styles$l","SPINNER_COLOR_BY_VARIANT","TEXT_VARIANT_BY_SIZE","SPINNER_SIZE_BY_SIZE","WuiButton","textVariant","size","color","styles$k","WuiLink","styles$j","WuiLoadingThumbnail","radius","radiusFactor","dashArrayStart","dashArrayEnd","dashOffset","styles$i","WuiChipButton","styles$h","WuiCtaButton","styles$g","W3mMobileDownloadLinks","name","app_store","play_store","chrome_store","homepage","isMobile","isIos","isAndroid","isMultiple","shortName","UiHelperUtil","styles$f","W3mConnectingWidget","_b","_c","_d","_e","subLabel","label","retryButton","borderRadiusMaster","ThemeController","SnackController","W3mConnectingWcBrowser","ModalController","error","W3mConnectingWcDesktop","desktop_link","redirect","href","W3mConnectingWcMobile","mobile_link","link_mode","redirectUniversalLink","e","ConstantsUtil","canPromise","toSJISFunction","CODEWORDS_COUNT","utils","version","data","digit","f","kanji","exports","fromString","string","level","value","defaultValue","BitBuffer","bufIndex","num","length","bit","bitBuffer","BitMatrix","row","col","reserved","bitMatrix","getSymbolSize","require$$0","posCount","intervals","positions","coords","pos","posLength","j","FINDER_PATTERN_SIZE","finderPattern","PenaltyScores","mask","points","sameCountCol","sameCountRow","lastCol","lastRow","module","last","bitsCol","bitsRow","darkCount","modulesCount","getMaskAt","maskPattern","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","p","penalty","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","errorCorrectionCode","errorCorrectionLevel","EXP_TABLE","LOG_TABLE","x","galoisField","n","y","GF","p1","p2","coeff","divident","divisor","result","offset","degree","poly","Polynomial","ReedSolomonEncoder","paddedData","remainder","start","buff","reedSolomonEncoder","versionCheck","numeric","alphanumeric","byte","regex","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","VersionCheck","Regex","require$$1","mode","dataStr","Utils","ECCode","require$$2","Mode","require$$3","require$$4","G18","G18_BCH","getBestVersionForDataLength","currentVersion","getReservedBitsCount","getTotalBitsFromDataArray","segments","totalBits","reservedBits","getBestVersionForMixedData","totalCodewords","ecTotalCodewords","dataTotalCodewordsBits","usableBits","seg","ecl","G15","G15_MASK","G15_BCH","formatInfo","NumericData","group","remainingNum","numericData","ALPHA_NUM_CHARS","AlphanumericData","alphanumericData","encodeUtf8","input","point","second","ByteData","l","byteData","KanjiData","kanjiData","dijkstra","graph","s","predecessors","costs","open","closest","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_e","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","first_visit","msg","nodes","opts","T","t","a","b","cost","item","require$$5","require$$6","require$$7","getStringByteLength","getSegments","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","s1","s2","obj","getSegmentBitsLength","mergeSegments","segs","acc","curr","prevSeg","buildNodes","buildGraph","table","prevNodeIds","nodeGroup","currentNodeIds","node","prevNodeId","buildSingleSegment","modesHint","bestMode","array","path","optimizedSegs","AlignmentPattern","FinderPattern","MaskPattern","require$$8","Version","require$$9","FormatInfo","require$$10","require$$11","Segments","require$$12","setupFinderPattern","matrix","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","bits","mod","setupFormatInfo","setupData","inc","bitIndex","byteIndex","dark","createData","buffer","remainingByte","createCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup2","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createSymbol","estimatedVersion","rawSegments","bestVersion","dataBits","moduleCount","modules","qrcode","options","hex2rgba","hex","hexCode","hexValue","margin","width","scale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","iSrc","jSrc","clearCanvas","ctx","canvas","getCanvasElement","qrData","canvasEl","image","rendererOpts","getColorAttrib","attrib","alpha","svgCmd","cmd","qrToPath","moveBy","newRow","lineLength","svgTag","cb","qrcodesize","bg","viewBox","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","text","args","argsNum","isLastArgCb","resolve","reject","browser","_","CONNECTING_ERROR_MARGIN","CIRCLE_SIZE_MODIFIER","QRCODE_MATRIX_MARGIN","isAdjecentDots","cy","otherCy","cellSize","getMatrix","arr","QRCodeUtil","sqrt","rows","QrCodeUtil","uri","logoSize","dotColor","edgeColor","dots","qrList","x1","y1","dotSize","svg","clearArenaSize","matrixMiddleStart","matrixMiddleEnd","circles","cx","circlesToConnect","cys","newCys","groups","y2","styles$e","DEFAULT_ICON_COLOR","WuiQrCode","styles$d","WuiShimmer","REOWN_URL","styles$c","WuiUxByReown","styles$b","W3mConnectingWcQrcode","unsub","alt","inactive","W3mConnectingWcUnsupported","W3mConnectingWcWeb","webapp_link","W3mConnectingWcView","retry","wcPairingExpiry","status","connectionsByNamespace","isMultiWalletEnabled","hasConnections","CaipNetworksUtil","rdns","injectedIds","injected_id","browserIds","isBrowser","hasMobileWCLink","isWebWc","isBrowserInstalled","isBrowserWc","isDesktopWc","container","W3mConnectingWcBasicView","showConnectors","h","o","styles$a","WuiSwitch","createRef","ref","colorStyles","styles$9","WuiCertifiedSwitch","styles$8","WuiInputElement","styles$7","WuiInputText","inputClass","classes","classMap","styles$6","WuiSearchBar","inputComponent","inputElement","networkSvgMd","styles$5","WuiCardSelectLoader","styles$4","WuiGrid","styles$3","W3mAllWalletsListItem","entries","entry","certified","styles$2","PAGINATOR_ID","W3mAllWalletsList","gridEl","items","id","uniqueWallets","walletsWithInstalled","columns","currentWallets","shimmerCount","loaderEl","element","page","styles$1","W3mAllWalletsSearch","search","W3mAllWalletsView","isSearch","event","WuiListItem","iconSize","W3mDownloadsView"],"mappings":"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","x_google_ignoreList":[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,96,97,98,99,100,101,102,103,104,105,106]} \ No newline at end of file diff --git a/dist/assets/bin-CM4MGgVN.js b/dist/assets/bin-CM4MGgVN.js new file mode 100644 index 0000000..dd9d260 --- /dev/null +++ b/dist/assets/bin-CM4MGgVN.js @@ -0,0 +1,5 @@ +import{p as C}from"./index-B95lHF7v.js";const o=C` + + +`;export{o as binSvg}; +//# sourceMappingURL=bin-CM4MGgVN.js.map diff --git a/dist/assets/bin-CM4MGgVN.js.map b/dist/assets/bin-CM4MGgVN.js.map new file mode 100644 index 0000000..77a1c5b --- /dev/null +++ b/dist/assets/bin-CM4MGgVN.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bin-CM4MGgVN.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/bin.js"],"sourcesContent":["import { svg } from 'lit';\nexport const binSvg = svg `\n\n\n`;\n//# sourceMappingURL=bin.js.map"],"names":["binSvg","svg"],"mappings":"wCACY,MAACA,EAASC;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/bitcoin-C6adn8HY.js b/dist/assets/bitcoin-C6adn8HY.js new file mode 100644 index 0000000..a7ad330 --- /dev/null +++ b/dist/assets/bitcoin-C6adn8HY.js @@ -0,0 +1,14 @@ +import{p as L}from"./index-B95lHF7v.js";const i=L` + + + + + + + + + + + +`;export{i as bitcoinSvg}; +//# sourceMappingURL=bitcoin-C6adn8HY.js.map diff --git a/dist/assets/bitcoin-C6adn8HY.js.map b/dist/assets/bitcoin-C6adn8HY.js.map new file mode 100644 index 0000000..888f93e --- /dev/null +++ b/dist/assets/bitcoin-C6adn8HY.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bitcoin-C6adn8HY.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/bitcoin.js"],"sourcesContent":["import { svg } from 'lit';\nexport const bitcoinSvg = svg `\n\n\n\n\n\n\n\n\n\n\n\n`;\n//# sourceMappingURL=bitcoin.js.map"],"names":["bitcoinSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/browser-HaGUaOW7.js b/dist/assets/browser-HaGUaOW7.js new file mode 100644 index 0000000..04c5b04 --- /dev/null +++ b/dist/assets/browser-HaGUaOW7.js @@ -0,0 +1,15 @@ +import{p as l}from"./index-B95lHF7v.js";const a=l` + + +`;export{a as browserSvg}; +//# sourceMappingURL=browser-HaGUaOW7.js.map diff --git a/dist/assets/browser-HaGUaOW7.js.map b/dist/assets/browser-HaGUaOW7.js.map new file mode 100644 index 0000000..d632b6a --- /dev/null +++ b/dist/assets/browser-HaGUaOW7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"browser-HaGUaOW7.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/browser.js"],"sourcesContent":["import { svg } from 'lit';\nexport const browserSvg = svg `\n \n \n`;\n//# sourceMappingURL=browser.js.map"],"names":["browserSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/card-CQm6T2bo.js b/dist/assets/card-CQm6T2bo.js new file mode 100644 index 0000000..24c2931 --- /dev/null +++ b/dist/assets/card-CQm6T2bo.js @@ -0,0 +1,15 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + `;export{l as cardSvg}; +//# sourceMappingURL=card-CQm6T2bo.js.map diff --git a/dist/assets/card-CQm6T2bo.js.map b/dist/assets/card-CQm6T2bo.js.map new file mode 100644 index 0000000..6c0c996 --- /dev/null +++ b/dist/assets/card-CQm6T2bo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"card-CQm6T2bo.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/card.js"],"sourcesContent":["import { svg } from 'lit';\nexport const cardSvg = svg `\n `;\n//# sourceMappingURL=card.js.map"],"names":["cardSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/checkmark-D4Rxyj7t.js b/dist/assets/checkmark-D4Rxyj7t.js new file mode 100644 index 0000000..6c009fd --- /dev/null +++ b/dist/assets/checkmark-D4Rxyj7t.js @@ -0,0 +1,12 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + + +`;export{o as checkmarkSvg}; +//# sourceMappingURL=checkmark-D4Rxyj7t.js.map diff --git a/dist/assets/checkmark-D4Rxyj7t.js.map b/dist/assets/checkmark-D4Rxyj7t.js.map new file mode 100644 index 0000000..9ebe024 --- /dev/null +++ b/dist/assets/checkmark-D4Rxyj7t.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkmark-D4Rxyj7t.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/checkmark.js"],"sourcesContent":["import { svg } from 'lit';\nexport const checkmarkSvg = svg `\n \n\n`;\n//# sourceMappingURL=checkmark.js.map"],"names":["checkmarkSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/checkmark-bold-DqbdrecY.js b/dist/assets/checkmark-bold-DqbdrecY.js new file mode 100644 index 0000000..63a26e9 --- /dev/null +++ b/dist/assets/checkmark-bold-DqbdrecY.js @@ -0,0 +1,9 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + +`;export{o as checkmarkBoldSvg}; +//# sourceMappingURL=checkmark-bold-DqbdrecY.js.map diff --git a/dist/assets/checkmark-bold-DqbdrecY.js.map b/dist/assets/checkmark-bold-DqbdrecY.js.map new file mode 100644 index 0000000..6acad35 --- /dev/null +++ b/dist/assets/checkmark-bold-DqbdrecY.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkmark-bold-DqbdrecY.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/checkmark-bold.js"],"sourcesContent":["import { svg } from 'lit';\nexport const checkmarkBoldSvg = svg `\n \n`;\n//# sourceMappingURL=checkmark-bold.js.map"],"names":["checkmarkBoldSvg","svg"],"mappings":"wCACY,MAACA,EAAmBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/chevron-bottom-HRPdrf9c.js b/dist/assets/chevron-bottom-HRPdrf9c.js new file mode 100644 index 0000000..f00cd84 --- /dev/null +++ b/dist/assets/chevron-bottom-HRPdrf9c.js @@ -0,0 +1,9 @@ +import{p as o}from"./index-B95lHF7v.js";const e=o` + +`;export{e as chevronBottomSvg}; +//# sourceMappingURL=chevron-bottom-HRPdrf9c.js.map diff --git a/dist/assets/chevron-bottom-HRPdrf9c.js.map b/dist/assets/chevron-bottom-HRPdrf9c.js.map new file mode 100644 index 0000000..0620b93 --- /dev/null +++ b/dist/assets/chevron-bottom-HRPdrf9c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chevron-bottom-HRPdrf9c.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/chevron-bottom.js"],"sourcesContent":["import { svg } from 'lit';\nexport const chevronBottomSvg = svg `\n \n`;\n//# sourceMappingURL=chevron-bottom.js.map"],"names":["chevronBottomSvg","svg"],"mappings":"wCACY,MAACA,EAAmBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/chevron-left-r4IVzOTZ.js b/dist/assets/chevron-left-r4IVzOTZ.js new file mode 100644 index 0000000..8276aab --- /dev/null +++ b/dist/assets/chevron-left-r4IVzOTZ.js @@ -0,0 +1,9 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + +`;export{o as chevronLeftSvg}; +//# sourceMappingURL=chevron-left-r4IVzOTZ.js.map diff --git a/dist/assets/chevron-left-r4IVzOTZ.js.map b/dist/assets/chevron-left-r4IVzOTZ.js.map new file mode 100644 index 0000000..4ecb55e --- /dev/null +++ b/dist/assets/chevron-left-r4IVzOTZ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chevron-left-r4IVzOTZ.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/chevron-left.js"],"sourcesContent":["import { svg } from 'lit';\nexport const chevronLeftSvg = svg `\n \n`;\n//# sourceMappingURL=chevron-left.js.map"],"names":["chevronLeftSvg","svg"],"mappings":"wCACY,MAACA,EAAiBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/chevron-right-D9cidlJO.js b/dist/assets/chevron-right-D9cidlJO.js new file mode 100644 index 0000000..d112c6e --- /dev/null +++ b/dist/assets/chevron-right-D9cidlJO.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as chevronRightSvg}; +//# sourceMappingURL=chevron-right-D9cidlJO.js.map diff --git a/dist/assets/chevron-right-D9cidlJO.js.map b/dist/assets/chevron-right-D9cidlJO.js.map new file mode 100644 index 0000000..e05225d --- /dev/null +++ b/dist/assets/chevron-right-D9cidlJO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chevron-right-D9cidlJO.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/chevron-right.js"],"sourcesContent":["import { svg } from 'lit';\nexport const chevronRightSvg = svg `\n \n`;\n//# sourceMappingURL=chevron-right.js.map"],"names":["chevronRightSvg","svg"],"mappings":"wCACY,MAACA,EAAkBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/chevron-top-C2vKYOU3.js b/dist/assets/chevron-top-C2vKYOU3.js new file mode 100644 index 0000000..89c2168 --- /dev/null +++ b/dist/assets/chevron-top-C2vKYOU3.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + +`;export{e as chevronTopSvg}; +//# sourceMappingURL=chevron-top-C2vKYOU3.js.map diff --git a/dist/assets/chevron-top-C2vKYOU3.js.map b/dist/assets/chevron-top-C2vKYOU3.js.map new file mode 100644 index 0000000..ccc6016 --- /dev/null +++ b/dist/assets/chevron-top-C2vKYOU3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chevron-top-C2vKYOU3.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/chevron-top.js"],"sourcesContent":["import { svg } from 'lit';\nexport const chevronTopSvg = svg `\n \n`;\n//# sourceMappingURL=chevron-top.js.map"],"names":["chevronTopSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/chrome-store-BpxGy4N9.js b/dist/assets/chrome-store-BpxGy4N9.js new file mode 100644 index 0000000..5aa4d19 --- /dev/null +++ b/dist/assets/chrome-store-BpxGy4N9.js @@ -0,0 +1,62 @@ +import{p as t}from"./index-B95lHF7v.js";const o=t` + + + + + + + + + + + + + + + + + + + + + +`;export{o as chromeStoreSvg}; +//# sourceMappingURL=chrome-store-BpxGy4N9.js.map diff --git a/dist/assets/chrome-store-BpxGy4N9.js.map b/dist/assets/chrome-store-BpxGy4N9.js.map new file mode 100644 index 0000000..3c720d2 --- /dev/null +++ b/dist/assets/chrome-store-BpxGy4N9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"chrome-store-BpxGy4N9.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/chrome-store.js"],"sourcesContent":["import { svg } from 'lit';\nexport const chromeStoreSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=chrome-store.js.map"],"names":["chromeStoreSvg","svg"],"mappings":"wCACY,MAACA,EAAiBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/circle-DAnWkiOu.js b/dist/assets/circle-DAnWkiOu.js new file mode 100644 index 0000000..39e8cfb --- /dev/null +++ b/dist/assets/circle-DAnWkiOu.js @@ -0,0 +1,5 @@ +import{p as i}from"./index-B95lHF7v.js";const t=i` + + +`;export{t as circleSvg}; +//# sourceMappingURL=circle-DAnWkiOu.js.map diff --git a/dist/assets/circle-DAnWkiOu.js.map b/dist/assets/circle-DAnWkiOu.js.map new file mode 100644 index 0000000..07bd9bf --- /dev/null +++ b/dist/assets/circle-DAnWkiOu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"circle-DAnWkiOu.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/circle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const circleSvg = svg `\n\n\n`;\n//# sourceMappingURL=circle.js.map"],"names":["circleSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/clock-B4qzF4OO.js b/dist/assets/clock-B4qzF4OO.js new file mode 100644 index 0000000..c4562da --- /dev/null +++ b/dist/assets/clock-B4qzF4OO.js @@ -0,0 +1,9 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + +`;export{l as clockSvg}; +//# sourceMappingURL=clock-B4qzF4OO.js.map diff --git a/dist/assets/clock-B4qzF4OO.js.map b/dist/assets/clock-B4qzF4OO.js.map new file mode 100644 index 0000000..603cad1 --- /dev/null +++ b/dist/assets/clock-B4qzF4OO.js.map @@ -0,0 +1 @@ +{"version":3,"file":"clock-B4qzF4OO.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/clock.js"],"sourcesContent":["import { svg } from 'lit';\nexport const clockSvg = svg `\n \n`;\n//# sourceMappingURL=clock.js.map"],"names":["clockSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/close-D2ew3bPI.js b/dist/assets/close-D2ew3bPI.js new file mode 100644 index 0000000..cba16b8 --- /dev/null +++ b/dist/assets/close-D2ew3bPI.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as closeSvg}; +//# sourceMappingURL=close-D2ew3bPI.js.map diff --git a/dist/assets/close-D2ew3bPI.js.map b/dist/assets/close-D2ew3bPI.js.map new file mode 100644 index 0000000..e512aae --- /dev/null +++ b/dist/assets/close-D2ew3bPI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"close-D2ew3bPI.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/close.js"],"sourcesContent":["import { svg } from 'lit';\nexport const closeSvg = svg `\n \n`;\n//# sourceMappingURL=close.js.map"],"names":["closeSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/coinPlaceholder-Cr0uYO00.js b/dist/assets/coinPlaceholder-Cr0uYO00.js new file mode 100644 index 0000000..2045891 --- /dev/null +++ b/dist/assets/coinPlaceholder-Cr0uYO00.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as coinPlaceholderSvg}; +//# sourceMappingURL=coinPlaceholder-Cr0uYO00.js.map diff --git a/dist/assets/coinPlaceholder-Cr0uYO00.js.map b/dist/assets/coinPlaceholder-Cr0uYO00.js.map new file mode 100644 index 0000000..49ab647 --- /dev/null +++ b/dist/assets/coinPlaceholder-Cr0uYO00.js.map @@ -0,0 +1 @@ +{"version":3,"file":"coinPlaceholder-Cr0uYO00.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/coinPlaceholder.js"],"sourcesContent":["import { svg } from 'lit';\nexport const coinPlaceholderSvg = svg `\n \n`;\n//# sourceMappingURL=coinPlaceholder.js.map"],"names":["coinPlaceholderSvg","svg"],"mappings":"wCACY,MAACA,EAAqBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/compass-C7Pr5Y4F.js b/dist/assets/compass-C7Pr5Y4F.js new file mode 100644 index 0000000..6876eae --- /dev/null +++ b/dist/assets/compass-C7Pr5Y4F.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + +`;export{e as compassSvg}; +//# sourceMappingURL=compass-C7Pr5Y4F.js.map diff --git a/dist/assets/compass-C7Pr5Y4F.js.map b/dist/assets/compass-C7Pr5Y4F.js.map new file mode 100644 index 0000000..7c06cfe --- /dev/null +++ b/dist/assets/compass-C7Pr5Y4F.js.map @@ -0,0 +1 @@ +{"version":3,"file":"compass-C7Pr5Y4F.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/compass.js"],"sourcesContent":["import { svg } from 'lit';\nexport const compassSvg = svg `\n \n`;\n//# sourceMappingURL=compass.js.map"],"names":["compassSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/connect-modal.entry-iJHoBPe2.js b/dist/assets/connect-modal.entry-iJHoBPe2.js new file mode 100644 index 0000000..c34b690 --- /dev/null +++ b/dist/assets/connect-modal.entry-iJHoBPe2.js @@ -0,0 +1,2 @@ +import{r as f,h as e,g as u}from"./index-B95lHF7v.js";const x="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTcgNyAxMCAxME0xNyA3IDcgMTciIHN0cm9rZT0iIzI0MjYyOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",g=()=>{const t=!!window.chrome,o=window.navigator,s=o.vendor,n=typeof window.opr<"u",l=o.userAgent.includes("Edge"),i=/CriOS/.exec(o.userAgent),a=o.userAgent.includes("Mobile");return i?!1:t!==null&&typeof t<"u"&&s==="Google Inc."&&n===!1&&l===!1&&a===!1},m=()=>g()?"Chrome":window.navigator.userAgent.includes("Firefox")?"Firefox":null,b=()=>window.navigator.userAgent.includes("Mobile")?window.navigator.userAgent.includes("iPhone")?"IOS":"Android":null,v='/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-100:oklch(96.7% .003 264.542);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-xl:1.25rem;--text-xl--line-height:1.4;--font-weight-medium:500;--leading-snug:1.375;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fixed{position:fixed}.inset-0{inset:calc(var(--spacing)*0)}.z-\\[8999\\]{z-index:8999}.z-\\[9000\\]{z-index:9000}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.box-border{box-sizing:border-box}.flex{display:flex}.aspect-square{aspect-ratio:1}.h-full{height:100%}.max-h-\\[calc\\(100\\%-24px\\)\\]{max-height:calc(100% - 24px)}.w-full{width:100%}.max-w-full{max-width:100%}.flex-1{flex:1}.basis-9{flex-basis:calc(var(--spacing)*9)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-3{gap:calc(var(--spacing)*3)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-\\[10px\\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(10px*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(10px*var(--tw-space-y-reverse))}:where(.space-x-\\[5px\\]>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(5px*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(5px*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[10px\\]{border-radius:10px}.rounded-full{border-radius:3.40282e+38px}.rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-\\[\\#333\\]{border-color:#333}.border-\\[\\#EFEFF2\\]{border-color:#efeff2}.bg-\\[\\#00000040\\]{background-color:#00000040}.bg-\\[\\#323232\\]{background-color:#323232}.bg-gray-700{background-color:var(--color-gray-700)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing)*1)}.p-6{padding:calc(var(--spacing)*6)}.p-\\[14px\\]{padding:14px}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.align-text-bottom{vertical-align:text-bottom}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-\\[\\#242629\\]{color:#242629}.text-\\[\\#EFEFEF\\]{color:#efefef}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\\[0_1px_2px_0_\\#0000000A\\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_1px_2px_0_\\#0000000A\\]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000a)}.shadow-\\[0_4px_5px_0_\\#00000005\\,0_16px_40px_0_\\#00000014\\]{--tw-shadow:0 4px 5px 0 var(--tw-shadow-color,#00000005),0 16px 40px 0 var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-\\[\\#FFBD7A\\]{outline-color:#ffbd7a}.transition-all{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.focus\\:underline:focus{text-decoration-line:underline}.focus\\:outline:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-\\[3px\\]:focus{outline-style:var(--tw-outline-style);outline-width:3px}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.fade-in{--tw-enter-opacity:0}.slide-in-from-bottom{--tw-enter-translate-y:100%}} /*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;@layer utilities{}:host{all:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-border-style:solid;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-shadow:0 0 #0000;--tw-inset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}.modal-container{color:#74777d;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}.modal-body{-ms-overflow-style:none;scrollbar-width:none}.modal-body::-webkit-scrollbar{display:none}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@media (hover:hover){.hover\\:bg-\\[\\#0C0C0D\\]:hover{background-color:#0c0c0d}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:text-\\[\\#242629\\]:hover{color:#242629}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-\\[0_1px_2px_0_\\#00000010\\]:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#00000010)}.hover\\:shadow-\\[0_1px_2px_0_\\#00000010\\]:hover,.hover\\:shadow-\\[0_8px_16px_0_\\#00000020\\]:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-\\[0_8px_16px_0_\\#00000020\\]:hover{--tw-shadow:0 8px 16px 0 var(--tw-shadow-color,#00000020)}}@media (min-width:48rem){.md\\:max-h-\\[calc\\(100\\%-48px\\)\\]{max-height:calc(100% - 48px)}.md\\:w-\\[400px\\]{width:400px}.md\\:items-center{align-items:center}.md\\:justify-center{justify-content:center}.md\\:rounded-b-2xl{border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.md\\:slide-in-from-bottom-0{--tw-enter-translate-y:0px}.md\\:zoom-in-50{--tw-enter-scale:.5}}',y=class{constructor(t){f(this,t)}handleSelectProvider(t){this.callback(t)}handleCloseModal(){this.cancelCallback()}getBrowserUrl(t){var o;return(o=t.chromeWebStoreUrl)!==null&&o!==void 0?o:t.mozillaAddOnsUrl}getMobileUrl(t){var o;return(o=t.iOSAppStoreUrl)!==null&&o!==void 0?o:t.googlePlayStoreUrl}getInstallUrl(t,o,s){var n,l,i,a,r,d,c,w,h,p;return s==="IOS"?(l=(n=t.iOSAppStoreUrl)!==null&&n!==void 0?n:this.getBrowserUrl(t))!==null&&l!==void 0?l:t.webUrl:o==="Chrome"?(a=(i=t.chromeWebStoreUrl)!==null&&i!==void 0?i:this.getMobileUrl(t))!==null&&a!==void 0?a:t.webUrl:o==="Firefox"?(d=(r=t.mozillaAddOnsUrl)!==null&&r!==void 0?r:this.getMobileUrl(t))!==null&&d!==void 0?d:t.webUrl:s==="Android"?(w=(c=t.googlePlayStoreUrl)!==null&&c!==void 0?c:this.getBrowserUrl(t))!==null&&w!==void 0?w:t.webUrl:(p=(h=this.getBrowserUrl(t))!==null&&h!==void 0?h:t.webUrl)!==null&&p!==void 0?p:this.getMobileUrl(t)}render(){const t=m(),o=b(),s=this.defaultProviders.filter(i=>this.installedProviders.findIndex(a=>a.id===i.id)===-1),n=this.installedProviders.length>0,l=s.length>0;return e("div",{key:"486a8b0d4c08fb0f38d26584880b40975ce74939",class:"modal-container animate-in fade-in fixed inset-0 z-[8999] box-border flex h-full w-full items-end bg-[#00000040] md:items-center md:justify-center"},e("div",{key:"54488652b87fb84e0bfc37e0dce83bdc252b2eee",class:"fixed inset-0 z-[8999]",onClick:()=>this.handleCloseModal()}),e("div",{key:"21c5463a21e285951dee580db2b2e097fb071ece",class:"modal-body animate-in md:zoom-in-50 slide-in-from-bottom md:slide-in-from-bottom-0 z-[9000] box-border flex max-h-[calc(100%-24px)] w-full max-w-full cursor-default flex-col overflow-y-scroll rounded-2xl rounded-b-none bg-white p-6 text-sm leading-snug shadow-[0_4px_5px_0_#00000005,0_16px_40px_0_#00000014] md:max-h-[calc(100%-48px)] md:w-[400px] md:rounded-b-2xl"},e("div",{key:"33064b362a40aafb47fa497bcfe12c7c0b9862e7",class:"flex flex-col space-y-[10px]"},e("div",{key:"788b6280717355a38938750f5157eade7118ef7f",class:"flex items-center"},e("div",{key:"327d62d08c8acc81692930cfb99a23e7b45cbae5",class:"flex-1 text-xl font-medium text-[#242629]"},"Connect a wallet"),e("button",{key:"61e2400cc41284e4f6df15718578558dd1667efd",class:"rounded-full bg-transparent p-1 transition-colors hover:bg-gray-100 active:scale-95",onClick:()=>this.handleCloseModal()},e("span",{key:"5bda5e860b382e9aaf47b66c2e91759cfd02d736",class:"sr-only"},"Close popup"),e("img",{key:"450a865711c1c31693d90f2cbcfe9763bae553db",src:x}))),n?e("p",null,"Select the wallet you want to connect to."):e("p",null,"You don't have any wallets in your browser that support this app. You need to install a wallet to proceed.")),n&&e("div",{key:"2ee090d1eab36f553d6ed7565e2e2588eabcecd7",class:"mt-6"},e("p",{key:"1bad5b095f034f12c0cfb88f76f0d7a02d23cc13",class:"mb-4 text-sm font-medium"},"Available wallets"),e("ul",{key:"06140f18abb2ae4334d2c9bfd603246898eac7ef",class:"space-y-3"},this.installedProviders.map((i,a)=>{var r;return e("li",{class:"flex items-center gap-3 rounded-[10px] border border-[#EFEFF2] p-[14px]",key:(r=i==null?void 0:i.id)!==null&&r!==void 0?r:a},e("div",{class:"aspect-square basis-9 overflow-hidden"},e("img",{src:i.icon,class:"h-full w-full rounded-[10px] bg-gray-700"})),e("div",{class:"flex-1"},e("div",{class:"text-sm font-medium text-[#242629]"},i.name),i.webUrl&&e("a",{href:i.webUrl,class:"text-sm",rel:"noopener noreferrer"},new URL(i.webUrl).hostname)),e("button",{class:"rounded-[10px] border border-[#333] bg-[#323232] px-4 py-2 text-sm font-medium text-[#EFEFEF] shadow-[0_1px_2px_0_#0000000A] outline-[#FFBD7A] transition-all hover:bg-[#0C0C0D] hover:text-white hover:shadow-[0_8px_16px_0_#00000020] focus:outline focus:outline-[3px] active:scale-95",onClick:()=>this.handleSelectProvider(i.id)},"Connect"))}))),l&&e("div",{key:"e6869330825d48b2bb7a8bfc7f292dcd1c0cdf9b",class:"mt-6"},n?e("p",{class:"mb-4 text-sm font-medium"},"Other wallets"):e("div",{class:"mb-5 flex justify-between"},e("p",{class:"text-sm font-medium"},"Recommended wallets"),e("a",{class:"flex cursor-pointer items-center space-x-[5px] text-xs transition-colors hover:text-[#242629] hover:underline focus:underline",href:"https://docs.hiro.so/what-is-a-wallet",rel:"noopener noreferrer",target:"_blank"},e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 16 16",fill:"none"},e("path",{stroke:"#74777D","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.2",d:"M8.006 15a7 7 0 1 0 0-14 7 7 0 0 0 0 14Z"}),e("path",{stroke:"#74777D","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.2",d:"M5.97 5.9a2.1 2.1 0 0 1 4.08.7c0 1.4-2.1 2.1-2.1 2.1M8.006 11.5h.01"})),e("p",null,"What is a wallet? ",e("span",{class:"align-text-bottom text-[9px]"},"↗")))),e("ul",{key:"e8ede6e513ebe32e8aee0385a727f9c454b5f9f2",class:"space-y-3"},s.map((i,a)=>{var r;return e("li",{class:"flex items-center gap-3 rounded-[10px] border border-[#EFEFF2] p-[14px]",key:(r=i==null?void 0:i.id)!==null&&r!==void 0?r:a},e("div",{class:"aspect-square basis-9 overflow-hidden"},e("img",{src:i.icon,class:"h-full w-full rounded-[10px] bg-gray-700"})),e("div",{class:"flex-1"},e("div",{class:"text-sm font-medium text-[#242629]"},i.name),i.webUrl&&e("a",{href:i.webUrl,class:"text-sm",rel:"noopener noreferrer"},new URL(i.webUrl).hostname)),this.getInstallUrl(i,t,o)&&e("a",{class:"rounded-[10px] border border-[#EFEFF2] px-4 py-2 text-sm font-medium shadow-[0_1px_2px_0_#0000000A] outline-[#FFBD7A] transition-colors hover:text-[#242629] hover:shadow-[0_1px_2px_0_#00000010] focus:outline focus:outline-[3px] active:scale-95",href:this.getInstallUrl(i,t,o),rel:"noopener noreferrer",target:"_blank"},i.id==="AsignaProvider"?"Open":"Install"," →"))})))))}static get assetsDirs(){return["assets"]}get modalEl(){return u(this)}};y.style=v;export{y as connect_modal}; +//# sourceMappingURL=connect-modal.entry-iJHoBPe2.js.map diff --git a/dist/assets/connect-modal.entry-iJHoBPe2.js.map b/dist/assets/connect-modal.entry-iJHoBPe2.js.map new file mode 100644 index 0000000..1c8a68b --- /dev/null +++ b/dist/assets/connect-modal.entry-iJHoBPe2.js.map @@ -0,0 +1 @@ +{"version":3,"file":"connect-modal.entry-iJHoBPe2.js","sources":["../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/dist/esm/connect-modal.entry.js"],"sourcesContent":["import { r as registerInstance, h, g as getElement } from './index-BnFj5nlp.js';\n\nconst closeIconSvg = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTcgNyAxMCAxME0xNyA3IDcgMTciIHN0cm9rZT0iIzI0MjYyOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==';\n\nconst isChrome = () => {\n const isChromium = !!window['chrome'];\n const winNav = window.navigator;\n const vendorName = winNav.vendor;\n const isOpera = typeof window.opr !== 'undefined';\n const isIEedge = winNav.userAgent.includes('Edge');\n const isIOSChrome = /CriOS/.exec(winNav.userAgent);\n const isMobile = winNav.userAgent.includes('Mobile');\n if (isIOSChrome) {\n return false;\n }\n else if (isChromium !== null &&\n typeof isChromium !== 'undefined' &&\n vendorName === 'Google Inc.' &&\n isOpera === false &&\n isIEedge === false &&\n isMobile === false) {\n return true;\n }\n else {\n return false;\n }\n};\nconst getBrowser = () => {\n if (isChrome()) {\n return 'Chrome';\n }\n else if (window.navigator.userAgent.includes('Firefox')) {\n return 'Firefox';\n }\n return null;\n};\nconst getPlatform = () => {\n if (!window.navigator.userAgent.includes('Mobile'))\n return null;\n if (window.navigator.userAgent.includes('iPhone')) {\n return 'IOS';\n }\n else\n return 'Android';\n};\n\nconst modalCss = \"/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace;--color-gray-100:oklch(96.7% .003 264.542);--color-gray-700:oklch(37.3% .034 259.733);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-xl:1.25rem;--text-xl--line-height:1.4;--font-weight-medium:500;--leading-snug:1.375;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.fixed{position:fixed}.inset-0{inset:calc(var(--spacing)*0)}.z-\\\\[8999\\\\]{z-index:8999}.z-\\\\[9000\\\\]{z-index:9000}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.box-border{box-sizing:border-box}.flex{display:flex}.aspect-square{aspect-ratio:1}.h-full{height:100%}.max-h-\\\\[calc\\\\(100\\\\%-24px\\\\)\\\\]{max-height:calc(100% - 24px)}.w-full{width:100%}.max-w-full{max-width:100%}.flex-1{flex:1}.basis-9{flex-basis:calc(var(--spacing)*9)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-3{gap:calc(var(--spacing)*3)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-\\\\[10px\\\\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(10px*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(10px*var(--tw-space-y-reverse))}:where(.space-x-\\\\[5px\\\\]>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(5px*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(5px*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\\\[10px\\\\]{border-radius:10px}.rounded-full{border-radius:3.40282e+38px}.rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-\\\\[\\\\#333\\\\]{border-color:#333}.border-\\\\[\\\\#EFEFF2\\\\]{border-color:#efeff2}.bg-\\\\[\\\\#00000040\\\\]{background-color:#00000040}.bg-\\\\[\\\\#323232\\\\]{background-color:#323232}.bg-gray-700{background-color:var(--color-gray-700)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing)*1)}.p-6{padding:calc(var(--spacing)*6)}.p-\\\\[14px\\\\]{padding:14px}.px-4{padding-inline:calc(var(--spacing)*4)}.py-2{padding-block:calc(var(--spacing)*2)}.align-text-bottom{vertical-align:text-bottom}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\\\[9px\\\\]{font-size:9px}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-\\\\[\\\\#242629\\\\]{color:#242629}.text-\\\\[\\\\#EFEFEF\\\\]{color:#efefef}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\\\\[0_1px_2px_0_\\\\#0000000A\\\\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\\\[0_1px_2px_0_\\\\#0000000A\\\\]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000a)}.shadow-\\\\[0_4px_5px_0_\\\\#00000005\\\\,0_16px_40px_0_\\\\#00000014\\\\]{--tw-shadow:0 4px 5px 0 var(--tw-shadow-color,#00000005),0 16px 40px 0 var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-\\\\[\\\\#FFBD7A\\\\]{outline-color:#ffbd7a}.transition-all{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.focus\\\\:underline:focus{text-decoration-line:underline}.focus\\\\:outline:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\\\:outline-\\\\[3px\\\\]:focus{outline-style:var(--tw-outline-style);outline-width:3px}.active\\\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.fade-in{--tw-enter-opacity:0}.slide-in-from-bottom{--tw-enter-translate-y:100%}} /*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components;@layer utilities{}:host{all:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-border-style:solid;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-shadow:0 0 #0000;--tw-inset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}.modal-container{color:#74777d;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}.modal-body{-ms-overflow-style:none;scrollbar-width:none}.modal-body::-webkit-scrollbar{display:none}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-space-y-reverse{syntax:\\\"*\\\";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:\\\"*\\\";inherits:false;initial-value:0}@property --tw-border-style{syntax:\\\"*\\\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\\\"*\\\";inherits:false}@property --tw-font-weight{syntax:\\\"*\\\";inherits:false}@property --tw-shadow{syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\\\"*\\\";inherits:false}@property --tw-shadow-alpha{syntax:\\\"\\\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\\\"*\\\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\\\"\\\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\\\"*\\\";inherits:false}@property --tw-ring-shadow{syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\\\"*\\\";inherits:false}@property --tw-inset-ring-shadow{syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\\\"*\\\";inherits:false}@property --tw-ring-offset-width{syntax:\\\"\\\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\\\"*\\\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\\\"*\\\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\\\"*\\\";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:\\\"*\\\";inherits:false;initial-value:1}@property --tw-scale-y{syntax:\\\"*\\\";inherits:false;initial-value:1}@property --tw-scale-z{syntax:\\\"*\\\";inherits:false;initial-value:1}@media (hover:hover){.hover\\\\:bg-\\\\[\\\\#0C0C0D\\\\]:hover{background-color:#0c0c0d}.hover\\\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\\\:text-\\\\[\\\\#242629\\\\]:hover{color:#242629}.hover\\\\:text-white:hover{color:var(--color-white)}.hover\\\\:underline:hover{text-decoration-line:underline}.hover\\\\:shadow-\\\\[0_1px_2px_0_\\\\#00000010\\\\]:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#00000010)}.hover\\\\:shadow-\\\\[0_1px_2px_0_\\\\#00000010\\\\]:hover,.hover\\\\:shadow-\\\\[0_8px_16px_0_\\\\#00000020\\\\]:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\\\:shadow-\\\\[0_8px_16px_0_\\\\#00000020\\\\]:hover{--tw-shadow:0 8px 16px 0 var(--tw-shadow-color,#00000020)}}@media (min-width:48rem){.md\\\\:max-h-\\\\[calc\\\\(100\\\\%-48px\\\\)\\\\]{max-height:calc(100% - 48px)}.md\\\\:w-\\\\[400px\\\\]{width:400px}.md\\\\:items-center{align-items:center}.md\\\\:justify-center{justify-content:center}.md\\\\:rounded-b-2xl{border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.md\\\\:slide-in-from-bottom-0{--tw-enter-translate-y:0px}.md\\\\:zoom-in-50{--tw-enter-scale:.5}}\";\n\nconst Modal = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n }\n handleSelectProvider(providerId) {\n this.callback(providerId);\n }\n handleCloseModal() {\n this.cancelCallback();\n }\n // todo: nice to have:\n // getComment(provider: WebBTCProvider, browser: string, isMobile?: string) {\n // if (!provider) return null;\n // const hasExtension = this.getBrowserUrl(provider);\n // const hasMobile = this.getMobileUrl(provider);\n // if (isMobile && hasExtension && !hasMobile) return 'Extension Only';\n // if (!isMobile && !hasExtension && hasMobile) return 'Mobile Only';\n // if (!isMobile && !browser) return 'Current browser not supported';\n // return null;\n // }\n getBrowserUrl(provider) {\n var _a;\n return (_a = provider.chromeWebStoreUrl) !== null && _a !== void 0 ? _a : provider.mozillaAddOnsUrl;\n }\n getMobileUrl(provider) {\n var _a;\n return (_a = provider.iOSAppStoreUrl) !== null && _a !== void 0 ? _a : provider.googlePlayStoreUrl;\n }\n getInstallUrl(provider, browser, platform) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (platform === 'IOS') {\n return (_b = (_a = provider.iOSAppStoreUrl) !== null && _a !== void 0 ? _a : this.getBrowserUrl(provider)) !== null && _b !== void 0 ? _b : provider.webUrl;\n }\n else if (browser === 'Chrome') {\n return (_d = (_c = provider.chromeWebStoreUrl) !== null && _c !== void 0 ? _c : this.getMobileUrl(provider)) !== null && _d !== void 0 ? _d : provider.webUrl;\n }\n else if (browser === 'Firefox') {\n return (_f = (_e = provider.mozillaAddOnsUrl) !== null && _e !== void 0 ? _e : this.getMobileUrl(provider)) !== null && _f !== void 0 ? _f : provider.webUrl;\n }\n else if (platform === 'Android') {\n return (_h = (_g = provider.googlePlayStoreUrl) !== null && _g !== void 0 ? _g : this.getBrowserUrl(provider)) !== null && _h !== void 0 ? _h : provider.webUrl;\n }\n else {\n return (_k = (_j = this.getBrowserUrl(provider)) !== null && _j !== void 0 ? _j : provider.webUrl) !== null && _k !== void 0 ? _k : this.getMobileUrl(provider);\n }\n }\n render() {\n const browser = getBrowser();\n const mobile = getPlatform();\n const notInstalledProviders = this.defaultProviders.filter(p => this.installedProviders.findIndex(i => i.id === p.id) === -1 // keep providers NOT already in installed list\n );\n const hasInstalled = this.installedProviders.length > 0;\n const hasMore = notInstalledProviders.length > 0;\n return (h(\"div\", { key: '486a8b0d4c08fb0f38d26584880b40975ce74939', class: \"modal-container animate-in fade-in fixed inset-0 z-[8999] box-border flex h-full w-full items-end bg-[#00000040] md:items-center md:justify-center\" }, h(\"div\", { key: '54488652b87fb84e0bfc37e0dce83bdc252b2eee', class: \"fixed inset-0 z-[8999]\", onClick: () => this.handleCloseModal() }), h(\"div\", { key: '21c5463a21e285951dee580db2b2e097fb071ece', class: \"modal-body animate-in md:zoom-in-50 slide-in-from-bottom md:slide-in-from-bottom-0 z-[9000] box-border flex max-h-[calc(100%-24px)] w-full max-w-full cursor-default flex-col overflow-y-scroll rounded-2xl rounded-b-none bg-white p-6 text-sm leading-snug shadow-[0_4px_5px_0_#00000005,0_16px_40px_0_#00000014] md:max-h-[calc(100%-48px)] md:w-[400px] md:rounded-b-2xl\" }, h(\"div\", { key: '33064b362a40aafb47fa497bcfe12c7c0b9862e7', class: \"flex flex-col space-y-[10px]\" }, h(\"div\", { key: '788b6280717355a38938750f5157eade7118ef7f', class: \"flex items-center\" }, h(\"div\", { key: '327d62d08c8acc81692930cfb99a23e7b45cbae5', class: \"flex-1 text-xl font-medium text-[#242629]\" }, \"Connect a wallet\"), h(\"button\", { key: '61e2400cc41284e4f6df15718578558dd1667efd', class: \"rounded-full bg-transparent p-1 transition-colors hover:bg-gray-100 active:scale-95\", onClick: () => this.handleCloseModal() }, h(\"span\", { key: '5bda5e860b382e9aaf47b66c2e91759cfd02d736', class: \"sr-only\" }, \"Close popup\"), h(\"img\", { key: '450a865711c1c31693d90f2cbcfe9763bae553db', src: closeIconSvg }))), hasInstalled ? (h(\"p\", null, \"Select the wallet you want to connect to.\")) : (h(\"p\", null, \"You don't have any wallets in your browser that support this app. You need to install a wallet to proceed.\"))), hasInstalled && (h(\"div\", { key: '2ee090d1eab36f553d6ed7565e2e2588eabcecd7', class: \"mt-6\" }, h(\"p\", { key: '1bad5b095f034f12c0cfb88f76f0d7a02d23cc13', class: \"mb-4 text-sm font-medium\" }, \"Available wallets\"), h(\"ul\", { key: '06140f18abb2ae4334d2c9bfd603246898eac7ef', class: \"space-y-3\" }, this.installedProviders.map((provider, i) => {\n var _a;\n return (h(\"li\", { class: \"flex items-center gap-3 rounded-[10px] border border-[#EFEFF2] p-[14px]\", key: (_a = provider === null || provider === void 0 ? void 0 : provider.id) !== null && _a !== void 0 ? _a : i }, h(\"div\", { class: \"aspect-square basis-9 overflow-hidden\" }, h(\"img\", { src: provider.icon, class: \"h-full w-full rounded-[10px] bg-gray-700\" })), h(\"div\", { class: \"flex-1\" }, h(\"div\", { class: \"text-sm font-medium text-[#242629]\" }, provider.name), provider.webUrl && (h(\"a\", { href: provider.webUrl, class: \"text-sm\", rel: \"noopener noreferrer\" }, new URL(provider.webUrl).hostname))), h(\"button\", { class: \"rounded-[10px] border border-[#333] bg-[#323232] px-4 py-2 text-sm font-medium text-[#EFEFEF] shadow-[0_1px_2px_0_#0000000A] outline-[#FFBD7A] transition-all hover:bg-[#0C0C0D] hover:text-white hover:shadow-[0_8px_16px_0_#00000020] focus:outline focus:outline-[3px] active:scale-95\", onClick: () => this.handleSelectProvider(provider.id) }, \"Connect\")));\n })))), hasMore && (h(\"div\", { key: 'e6869330825d48b2bb7a8bfc7f292dcd1c0cdf9b', class: \"mt-6\" }, hasInstalled ? (h(\"p\", { class: \"mb-4 text-sm font-medium\" }, \"Other wallets\")) : (h(\"div\", { class: \"mb-5 flex justify-between\" }, h(\"p\", { class: \"text-sm font-medium\" }, \"Recommended wallets\"), h(\"a\", { class: \"flex cursor-pointer items-center space-x-[5px] text-xs transition-colors hover:text-[#242629] hover:underline focus:underline\", href: \"https://docs.hiro.so/what-is-a-wallet\", rel: \"noopener noreferrer\", target: \"_blank\" }, h(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"14\", height: \"14\", viewBox: \"0 0 16 16\", fill: \"none\" }, h(\"path\", { stroke: \"#74777D\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", \"stroke-width\": \"1.2\", d: \"M8.006 15a7 7 0 1 0 0-14 7 7 0 0 0 0 14Z\" }), h(\"path\", { stroke: \"#74777D\", \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", \"stroke-width\": \"1.2\", d: \"M5.97 5.9a2.1 2.1 0 0 1 4.08.7c0 1.4-2.1 2.1-2.1 2.1M8.006 11.5h.01\" })), h(\"p\", null, \"What is a wallet?\\u2009\", h(\"span\", { class: \"align-text-bottom text-[9px]\" }, \"\\u2197\"))))), h(\"ul\", { key: 'e8ede6e513ebe32e8aee0385a727f9c454b5f9f2', class: \"space-y-3\" }, notInstalledProviders.map((provider, i) => {\n var _a;\n return (h(\"li\", { class: \"flex items-center gap-3 rounded-[10px] border border-[#EFEFF2] p-[14px]\", key: (_a = provider === null || provider === void 0 ? void 0 : provider.id) !== null && _a !== void 0 ? _a : i }, h(\"div\", { class: \"aspect-square basis-9 overflow-hidden\" }, h(\"img\", { src: provider.icon, class: \"h-full w-full rounded-[10px] bg-gray-700\" })), h(\"div\", { class: \"flex-1\" }, h(\"div\", { class: \"text-sm font-medium text-[#242629]\" }, provider.name), provider.webUrl && (h(\"a\", { href: provider.webUrl, class: \"text-sm\", rel: \"noopener noreferrer\" }, new URL(provider.webUrl).hostname))), this.getInstallUrl(provider, browser, mobile) && (h(\"a\", { class: \"rounded-[10px] border border-[#EFEFF2] px-4 py-2 text-sm font-medium shadow-[0_1px_2px_0_#0000000A] outline-[#FFBD7A] transition-colors hover:text-[#242629] hover:shadow-[0_1px_2px_0_#00000010] focus:outline focus:outline-[3px] active:scale-95\", href: this.getInstallUrl(provider, browser, mobile), rel: \"noopener noreferrer\", target: \"_blank\" }, provider.id === 'AsignaProvider' ? 'Open' : 'Install', \" \\u2192\"))));\n })))))));\n }\n static get assetsDirs() { return [\"assets\"]; }\n get modalEl() { return getElement(this); }\n};\nModal.style = modalCss;\n\nexport { Modal as connect_modal };\n//# sourceMappingURL=connect-modal.entry.js.map\n\n//# sourceMappingURL=connect-modal.entry.js.map"],"names":["closeIconSvg","isChrome","isChromium","winNav","vendorName","isOpera","isIEedge","isIOSChrome","isMobile","getBrowser","getPlatform","modalCss","Modal","hostRef","registerInstance","providerId","provider","_a","browser","platform","_b","_c","_d","_e","_f","_g","_h","_j","_k","mobile","notInstalledProviders","p","i","hasInstalled","hasMore","h","getElement"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/copy-DZoqZLWu.js b/dist/assets/copy-DZoqZLWu.js new file mode 100644 index 0000000..8892cf8 --- /dev/null +++ b/dist/assets/copy-DZoqZLWu.js @@ -0,0 +1,16 @@ +import{p as C}from"./index-B95lHF7v.js";const o=C` + `;export{o as copySvg}; +//# sourceMappingURL=copy-DZoqZLWu.js.map diff --git a/dist/assets/copy-DZoqZLWu.js.map b/dist/assets/copy-DZoqZLWu.js.map new file mode 100644 index 0000000..abe2f17 --- /dev/null +++ b/dist/assets/copy-DZoqZLWu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"copy-DZoqZLWu.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/copy.js"],"sourcesContent":["import { svg } from 'lit';\nexport const copySvg = svg `\n `;\n//# sourceMappingURL=copy.js.map"],"names":["copySvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/cursor-gjnXjnZ-.js b/dist/assets/cursor-gjnXjnZ-.js new file mode 100644 index 0000000..1501edf --- /dev/null +++ b/dist/assets/cursor-gjnXjnZ-.js @@ -0,0 +1,4 @@ +import{p as o}from"./index-B95lHF7v.js";const l=o` + +`;export{l as cursorSvg}; +//# sourceMappingURL=cursor-gjnXjnZ-.js.map diff --git a/dist/assets/cursor-gjnXjnZ-.js.map b/dist/assets/cursor-gjnXjnZ-.js.map new file mode 100644 index 0000000..4d74a64 --- /dev/null +++ b/dist/assets/cursor-gjnXjnZ-.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cursor-gjnXjnZ-.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/cursor.js"],"sourcesContent":["import { svg } from 'lit';\nexport const cursorSvg = svg ` \n \n`;\n//# sourceMappingURL=cursor.js.map"],"names":["cursorSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/cursor-transparent-Clbk7pnh.js b/dist/assets/cursor-transparent-Clbk7pnh.js new file mode 100644 index 0000000..29977e4 --- /dev/null +++ b/dist/assets/cursor-transparent-Clbk7pnh.js @@ -0,0 +1,13 @@ +import{p as o}from"./index-B95lHF7v.js";const l=o` + + + + `;export{l as cursorTransparentSvg}; +//# sourceMappingURL=cursor-transparent-Clbk7pnh.js.map diff --git a/dist/assets/cursor-transparent-Clbk7pnh.js.map b/dist/assets/cursor-transparent-Clbk7pnh.js.map new file mode 100644 index 0000000..75bdfd4 --- /dev/null +++ b/dist/assets/cursor-transparent-Clbk7pnh.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cursor-transparent-Clbk7pnh.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/cursor-transparent.js"],"sourcesContent":["import { svg } from 'lit';\nexport const cursorTransparentSvg = svg `\n \n \n \n `;\n//# sourceMappingURL=cursor-transparent.js.map"],"names":["cursorTransparentSvg","svg"],"mappings":"wCACY,MAACA,EAAuBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/desktop-C3EuWlvb.js b/dist/assets/desktop-C3EuWlvb.js new file mode 100644 index 0000000..92447bc --- /dev/null +++ b/dist/assets/desktop-C3EuWlvb.js @@ -0,0 +1,10 @@ +import{p as c}from"./index-B95lHF7v.js";const l=c` + + +`;export{l as desktopSvg}; +//# sourceMappingURL=desktop-C3EuWlvb.js.map diff --git a/dist/assets/desktop-C3EuWlvb.js.map b/dist/assets/desktop-C3EuWlvb.js.map new file mode 100644 index 0000000..f18e55d --- /dev/null +++ b/dist/assets/desktop-C3EuWlvb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"desktop-C3EuWlvb.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/desktop.js"],"sourcesContent":["import { svg } from 'lit';\nexport const desktopSvg = svg `\n \n \n`;\n//# sourceMappingURL=desktop.js.map"],"names":["desktopSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/disconnect-DKfUEOkX.js b/dist/assets/disconnect-DKfUEOkX.js new file mode 100644 index 0000000..7367528 --- /dev/null +++ b/dist/assets/disconnect-DKfUEOkX.js @@ -0,0 +1,9 @@ +import{p as a}from"./index-B95lHF7v.js";const e=a` + +`;export{e as disconnectSvg}; +//# sourceMappingURL=disconnect-DKfUEOkX.js.map diff --git a/dist/assets/disconnect-DKfUEOkX.js.map b/dist/assets/disconnect-DKfUEOkX.js.map new file mode 100644 index 0000000..1f68b4a --- /dev/null +++ b/dist/assets/disconnect-DKfUEOkX.js.map @@ -0,0 +1 @@ +{"version":3,"file":"disconnect-DKfUEOkX.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/disconnect.js"],"sourcesContent":["import { svg } from 'lit';\nexport const disconnectSvg = svg `\n \n`;\n//# sourceMappingURL=disconnect.js.map"],"names":["disconnectSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/discord-BHtA6JaL.js b/dist/assets/discord-BHtA6JaL.js new file mode 100644 index 0000000..6d50f24 --- /dev/null +++ b/dist/assets/discord-BHtA6JaL.js @@ -0,0 +1,18 @@ +import{p as l}from"./index-B95lHF7v.js";const i=l` + + + + + + + + + + +`;export{i as discordSvg}; +//# sourceMappingURL=discord-BHtA6JaL.js.map diff --git a/dist/assets/discord-BHtA6JaL.js.map b/dist/assets/discord-BHtA6JaL.js.map new file mode 100644 index 0000000..38c23cc --- /dev/null +++ b/dist/assets/discord-BHtA6JaL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"discord-BHtA6JaL.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/discord.js"],"sourcesContent":["import { svg } from 'lit';\nexport const discordSvg = svg `\n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=discord.js.map"],"names":["discordSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/ethereum-CSuiO0TE.js b/dist/assets/ethereum-CSuiO0TE.js new file mode 100644 index 0000000..66f78bd --- /dev/null +++ b/dist/assets/ethereum-CSuiO0TE.js @@ -0,0 +1,11 @@ +import{p as l}from"./index-B95lHF7v.js";const r=l` + + + + + + + + +`;export{r as ethereumSvg}; +//# sourceMappingURL=ethereum-CSuiO0TE.js.map diff --git a/dist/assets/ethereum-CSuiO0TE.js.map b/dist/assets/ethereum-CSuiO0TE.js.map new file mode 100644 index 0000000..38adf07 --- /dev/null +++ b/dist/assets/ethereum-CSuiO0TE.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ethereum-CSuiO0TE.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/ethereum.js"],"sourcesContent":["import { svg } from 'lit';\nexport const ethereumSvg = svg `\n\n\n\n\n\n\n\n\n`;\n//# sourceMappingURL=ethereum.js.map"],"names":["ethereumSvg","svg"],"mappings":"wCACY,MAACA,EAAcC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/etherscan-C1uGdqPh.js b/dist/assets/etherscan-C1uGdqPh.js new file mode 100644 index 0000000..8f9c760 --- /dev/null +++ b/dist/assets/etherscan-C1uGdqPh.js @@ -0,0 +1,7 @@ +import{p as c}from"./index-B95lHF7v.js";const v=c` + +`;export{v as etherscanSvg}; +//# sourceMappingURL=etherscan-C1uGdqPh.js.map diff --git a/dist/assets/etherscan-C1uGdqPh.js.map b/dist/assets/etherscan-C1uGdqPh.js.map new file mode 100644 index 0000000..a455362 --- /dev/null +++ b/dist/assets/etherscan-C1uGdqPh.js.map @@ -0,0 +1 @@ +{"version":3,"file":"etherscan-C1uGdqPh.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/etherscan.js"],"sourcesContent":["import { svg } from 'lit';\nexport const etherscanSvg = svg `\n \n`;\n//# sourceMappingURL=etherscan.js.map"],"names":["etherscanSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/exclamation-triangle-DWmdZdig.js b/dist/assets/exclamation-triangle-DWmdZdig.js new file mode 100644 index 0000000..d0435f9 --- /dev/null +++ b/dist/assets/exclamation-triangle-DWmdZdig.js @@ -0,0 +1,5 @@ +import{p as C}from"./index-B95lHF7v.js";const t=C` + + +`;export{t as exclamationTriangleSvg}; +//# sourceMappingURL=exclamation-triangle-DWmdZdig.js.map diff --git a/dist/assets/exclamation-triangle-DWmdZdig.js.map b/dist/assets/exclamation-triangle-DWmdZdig.js.map new file mode 100644 index 0000000..e5f3ae5 --- /dev/null +++ b/dist/assets/exclamation-triangle-DWmdZdig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exclamation-triangle-DWmdZdig.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/exclamation-triangle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const exclamationTriangleSvg = svg `\n\n\n`;\n//# sourceMappingURL=exclamation-triangle.js.map"],"names":["exclamationTriangleSvg","svg"],"mappings":"wCACY,MAACA,EAAyBC;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/extension-XsSwuPvL.js b/dist/assets/extension-XsSwuPvL.js new file mode 100644 index 0000000..d43b393 --- /dev/null +++ b/dist/assets/extension-XsSwuPvL.js @@ -0,0 +1,9 @@ +import{p as a}from"./index-B95lHF7v.js";const e=a` + +`;export{e as extensionSvg}; +//# sourceMappingURL=extension-XsSwuPvL.js.map diff --git a/dist/assets/extension-XsSwuPvL.js.map b/dist/assets/extension-XsSwuPvL.js.map new file mode 100644 index 0000000..4af10fa --- /dev/null +++ b/dist/assets/extension-XsSwuPvL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension-XsSwuPvL.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/extension.js"],"sourcesContent":["import { svg } from 'lit';\nexport const extensionSvg = svg `\n \n`;\n//# sourceMappingURL=extension.js.map"],"names":["extensionSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/external-link-NBTLuiLl.js b/dist/assets/external-link-NBTLuiLl.js new file mode 100644 index 0000000..5460529 --- /dev/null +++ b/dist/assets/external-link-NBTLuiLl.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as externalLinkSvg}; +//# sourceMappingURL=external-link-NBTLuiLl.js.map diff --git a/dist/assets/external-link-NBTLuiLl.js.map b/dist/assets/external-link-NBTLuiLl.js.map new file mode 100644 index 0000000..c68ba2e --- /dev/null +++ b/dist/assets/external-link-NBTLuiLl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"external-link-NBTLuiLl.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/external-link.js"],"sourcesContent":["import { svg } from 'lit';\nexport const externalLinkSvg = svg `\n \n`;\n//# sourceMappingURL=external-link.js.map"],"names":["externalLinkSvg","svg"],"mappings":"wCACY,MAACA,EAAkBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/facebook-CcI-Xf34.js b/dist/assets/facebook-CcI-Xf34.js new file mode 100644 index 0000000..3187460 --- /dev/null +++ b/dist/assets/facebook-CcI-Xf34.js @@ -0,0 +1,27 @@ +import{p as l}from"./index-B95lHF7v.js";const f=l` + + + + + + + + + + + + + + + +`;export{f as facebookSvg}; +//# sourceMappingURL=facebook-CcI-Xf34.js.map diff --git a/dist/assets/facebook-CcI-Xf34.js.map b/dist/assets/facebook-CcI-Xf34.js.map new file mode 100644 index 0000000..7401671 --- /dev/null +++ b/dist/assets/facebook-CcI-Xf34.js.map @@ -0,0 +1 @@ +{"version":3,"file":"facebook-CcI-Xf34.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/facebook.js"],"sourcesContent":["import { svg } from 'lit';\nexport const facebookSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=facebook.js.map"],"names":["facebookSvg","svg"],"mappings":"wCACY,MAACA,EAAcC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/farcaster-TIQScwGT.js b/dist/assets/farcaster-TIQScwGT.js new file mode 100644 index 0000000..677f242 --- /dev/null +++ b/dist/assets/farcaster-TIQScwGT.js @@ -0,0 +1,13 @@ +import{p as h}from"./index-B95lHF7v.js";const a=h` + + + + +`;export{a as farcasterSvg}; +//# sourceMappingURL=farcaster-TIQScwGT.js.map diff --git a/dist/assets/farcaster-TIQScwGT.js.map b/dist/assets/farcaster-TIQScwGT.js.map new file mode 100644 index 0000000..1ee0e5d --- /dev/null +++ b/dist/assets/farcaster-TIQScwGT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"farcaster-TIQScwGT.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/farcaster.js"],"sourcesContent":["import { svg } from 'lit';\nexport const farcasterSvg = svg `\n \n \n \n \n`;\n//# sourceMappingURL=farcaster.js.map"],"names":["farcasterSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/filters-Dq3_H3EC.js b/dist/assets/filters-Dq3_H3EC.js new file mode 100644 index 0000000..d48666a --- /dev/null +++ b/dist/assets/filters-Dq3_H3EC.js @@ -0,0 +1,9 @@ +import{p as a}from"./index-B95lHF7v.js";const l=a` + +`;export{l as filtersSvg}; +//# sourceMappingURL=filters-Dq3_H3EC.js.map diff --git a/dist/assets/filters-Dq3_H3EC.js.map b/dist/assets/filters-Dq3_H3EC.js.map new file mode 100644 index 0000000..e0a74df --- /dev/null +++ b/dist/assets/filters-Dq3_H3EC.js.map @@ -0,0 +1 @@ +{"version":3,"file":"filters-Dq3_H3EC.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/filters.js"],"sourcesContent":["import { svg } from 'lit';\nexport const filtersSvg = svg `\n \n`;\n//# sourceMappingURL=filters.js.map"],"names":["filtersSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/github-DRotKhle.js b/dist/assets/github-DRotKhle.js new file mode 100644 index 0000000..29ecfd9 --- /dev/null +++ b/dist/assets/github-DRotKhle.js @@ -0,0 +1,19 @@ +import{p as l}from"./index-B95lHF7v.js";const c=l` + + + + + + + + + + + + + +`;export{c as githubSvg}; +//# sourceMappingURL=github-DRotKhle.js.map diff --git a/dist/assets/github-DRotKhle.js.map b/dist/assets/github-DRotKhle.js.map new file mode 100644 index 0000000..f4d6693 --- /dev/null +++ b/dist/assets/github-DRotKhle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"github-DRotKhle.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/github.js"],"sourcesContent":["import { svg } from 'lit';\nexport const githubSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=github.js.map"],"names":["githubSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/google-CZjrVi7f.js b/dist/assets/google-CZjrVi7f.js new file mode 100644 index 0000000..3000ddb --- /dev/null +++ b/dist/assets/google-CZjrVi7f.js @@ -0,0 +1,19 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + + + + +`;export{o as googleSvg}; +//# sourceMappingURL=google-CZjrVi7f.js.map diff --git a/dist/assets/google-CZjrVi7f.js.map b/dist/assets/google-CZjrVi7f.js.map new file mode 100644 index 0000000..2908287 --- /dev/null +++ b/dist/assets/google-CZjrVi7f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"google-CZjrVi7f.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/google.js"],"sourcesContent":["import { svg } from 'lit';\nexport const googleSvg = svg `\n \n \n \n \n`;\n//# sourceMappingURL=google.js.map"],"names":["googleSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/help-circle-CqM4md3e.js b/dist/assets/help-circle-CqM4md3e.js new file mode 100644 index 0000000..fbc57ca --- /dev/null +++ b/dist/assets/help-circle-CqM4md3e.js @@ -0,0 +1,13 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + + +`;export{o as helpCircleSvg}; +//# sourceMappingURL=help-circle-CqM4md3e.js.map diff --git a/dist/assets/help-circle-CqM4md3e.js.map b/dist/assets/help-circle-CqM4md3e.js.map new file mode 100644 index 0000000..2d08ff0 --- /dev/null +++ b/dist/assets/help-circle-CqM4md3e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"help-circle-CqM4md3e.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/help-circle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const helpCircleSvg = svg `\n \n \n`;\n//# sourceMappingURL=help-circle.js.map"],"names":["helpCircleSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/id-DVVCrLBa.js b/dist/assets/id-DVVCrLBa.js new file mode 100644 index 0000000..4a4ab92 --- /dev/null +++ b/dist/assets/id-DVVCrLBa.js @@ -0,0 +1,13 @@ +import{p as c}from"./index-B95lHF7v.js";const e=c` + +`;export{e as idSvg}; +//# sourceMappingURL=id-DVVCrLBa.js.map diff --git a/dist/assets/id-DVVCrLBa.js.map b/dist/assets/id-DVVCrLBa.js.map new file mode 100644 index 0000000..2285ea8 --- /dev/null +++ b/dist/assets/id-DVVCrLBa.js.map @@ -0,0 +1 @@ +{"version":3,"file":"id-DVVCrLBa.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/id.js"],"sourcesContent":["import { svg } from 'lit';\nexport const idSvg = svg `\n \n`;\n//# sourceMappingURL=id.js.map"],"names":["idSvg","svg"],"mappings":"wCACY,MAACA,EAAQC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/image-B20kWEHy.js b/dist/assets/image-B20kWEHy.js new file mode 100644 index 0000000..d024f08 --- /dev/null +++ b/dist/assets/image-B20kWEHy.js @@ -0,0 +1,5 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + + +`;export{l as imageSvg}; +//# sourceMappingURL=image-B20kWEHy.js.map diff --git a/dist/assets/image-B20kWEHy.js.map b/dist/assets/image-B20kWEHy.js.map new file mode 100644 index 0000000..029bffe --- /dev/null +++ b/dist/assets/image-B20kWEHy.js.map @@ -0,0 +1 @@ +{"version":3,"file":"image-B20kWEHy.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/image.js"],"sourcesContent":["import { svg } from 'lit';\nexport const imageSvg = svg `\n \n \n`;\n//# sourceMappingURL=image.js.map"],"names":["imageSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/index-B95lHF7v.js b/dist/assets/index-B95lHF7v.js new file mode 100644 index 0000000..01a3046 --- /dev/null +++ b/dist/assets/index-B95lHF7v.js @@ -0,0 +1,4802 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/basic-BikkqjP4.js","assets/index-BRPyA7QR.js","assets/w3m-modal-DlnuRkWU.js"])))=>i.map(i=>d[i]); +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var Ln=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Wf(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function XO(t){if(t.__esModule)return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}),n}var YO={exports:{}},wb={},ZO={exports:{}},Ot={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Qm=Symbol.for("react.element"),R6=Symbol.for("react.portal"),O6=Symbol.for("react.fragment"),U6=Symbol.for("react.strict_mode"),L6=Symbol.for("react.profiler"),k6=Symbol.for("react.provider"),$6=Symbol.for("react.context"),B6=Symbol.for("react.forward_ref"),F6=Symbol.for("react.suspense"),z6=Symbol.for("react.memo"),H6=Symbol.for("react.lazy"),pI=Symbol.iterator;function j6(t){return t===null||typeof t!="object"?null:(t=pI&&t[pI]||t["@@iterator"],typeof t=="function"?t:null)}var JO={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},QO=Object.assign,eU={};function Gf(t,e,n){this.props=t,this.context=e,this.refs=eU,this.updater=n||JO}Gf.prototype.isReactComponent={};Gf.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,e,"setState")};Gf.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function tU(){}tU.prototype=Gf.prototype;function yC(t,e,n){this.props=t,this.context=e,this.refs=eU,this.updater=n||JO}var wC=yC.prototype=new tU;wC.constructor=yC;QO(wC,Gf.prototype);wC.isPureReactComponent=!0;var gI=Array.isArray,nU=Object.prototype.hasOwnProperty,vC={current:null},rU={key:!0,ref:!0,__self:!0,__source:!0};function iU(t,e,n){var r,i={},s=null,o=null;if(e!=null)for(r in e.ref!==void 0&&(o=e.ref),e.key!==void 0&&(s=""+e.key),e)nU.call(e,r)&&!rU.hasOwnProperty(r)&&(i[r]=e[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,ne=D[q];if(0>>1;qi(te,R))lei(ge,te)?(D[q]=ge,D[le]=R,q=le):(D[q]=te,D[G]=R,q=G);else if(lei(ge,R))D[q]=ge,D[le]=R,q=le;else break e}}return k}function i(D,k){var R=D.sortIndex-k.sortIndex;return R!==0?R:D.id-k.id}if(typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,a=o.now();t.unstable_now=function(){return o.now()-a}}var c=[],l=[],u=1,d=null,h=3,f=!1,g=!1,m=!1,y=typeof setTimeout=="function"?setTimeout:null,p=typeof clearTimeout=="function"?clearTimeout:null,v=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(D){for(var k=n(l);k!==null;){if(k.callback===null)r(l);else if(k.startTime<=D)r(l),k.sortIndex=k.expirationTime,e(c,k);else break;k=n(l)}}function b(D){if(m=!1,w(D),!g)if(n(c)!==null)g=!0,I(S);else{var k=n(l);k!==null&&F(b,k.startTime-D)}}function S(D,k){g=!1,m&&(m=!1,p(N),N=-1),f=!0;var R=h;try{for(w(k),d=n(c);d!==null&&(!(d.expirationTime>k)||D&&!A());){var q=d.callback;if(typeof q=="function"){d.callback=null,h=d.priorityLevel;var ne=q(d.expirationTime<=k);k=t.unstable_now(),typeof ne=="function"?d.callback=ne:d===n(c)&&r(c),w(k)}else r(c);d=n(c)}if(d!==null)var X=!0;else{var G=n(l);G!==null&&F(b,G.startTime-k),X=!1}return X}finally{d=null,h=R,f=!1}}var x=!1,T=null,N=-1,_=5,E=-1;function A(){return!(t.unstable_now()-E<_)}function L(){if(T!==null){var D=t.unstable_now();E=D;var k=!0;try{k=T(!0,D)}finally{k?$():(x=!1,T=null)}}else x=!1}var $;if(typeof v=="function")$=function(){v(L)};else if(typeof MessageChannel<"u"){var W=new MessageChannel,C=W.port2;W.port1.onmessage=L,$=function(){C.postMessage(null)}}else $=function(){y(L,0)};function I(D){T=D,x||(x=!0,$())}function F(D,k){N=y(function(){D(t.unstable_now())},k)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(D){D.callback=null},t.unstable_continueExecution=function(){g||f||(g=!0,I(S))},t.unstable_forceFrameRate=function(D){0>D||125q?(D.sortIndex=R,e(l,D),n(c)===null&&D===n(l)&&(m?(p(N),N=-1):m=!0,F(b,R-q))):(D.sortIndex=ne,e(c,D),g||f||(g=!0,I(S))),D},t.unstable_shouldYield=A,t.unstable_wrapCallback=function(D){var k=h;return function(){var R=h;h=k;try{return D.apply(this,arguments)}finally{h=R}}}})(lU);cU.exports=lU;var ez=cU.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var tz=Pt,As=ez;function Ee(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),X_=Object.prototype.hasOwnProperty,nz=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,yI={},wI={};function rz(t){return X_.call(wI,t)?!0:X_.call(yI,t)?!1:nz.test(t)?wI[t]=!0:(yI[t]=!0,!1)}function iz(t,e,n,r){if(n!==null&&n.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(t=t.toLowerCase().slice(0,5),t!=="data-"&&t!=="aria-");default:return!1}}function sz(t,e,n,r){if(e===null||typeof e>"u"||iz(t,e,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function Ci(t,e,n,r,i,s,o){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=t,this.type=e,this.sanitizeURL=s,this.removeEmptyString=o}var jr={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(t){jr[t]=new Ci(t,0,!1,t,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(t){var e=t[0];jr[e]=new Ci(e,1,!1,t[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(t){jr[t]=new Ci(t,2,!1,t.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(t){jr[t]=new Ci(t,2,!1,t,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(t){jr[t]=new Ci(t,3,!1,t.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(t){jr[t]=new Ci(t,3,!0,t,null,!1,!1)});["capture","download"].forEach(function(t){jr[t]=new Ci(t,4,!1,t,null,!1,!1)});["cols","rows","size","span"].forEach(function(t){jr[t]=new Ci(t,6,!1,t,null,!1,!1)});["rowSpan","start"].forEach(function(t){jr[t]=new Ci(t,5,!1,t.toLowerCase(),null,!1,!1)});var EC=/[\-:]([a-z])/g;function _C(t){return t[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(t){var e=t.replace(EC,_C);jr[e]=new Ci(e,1,!1,t,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(t){var e=t.replace(EC,_C);jr[e]=new Ci(e,1,!1,t,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(t){var e=t.replace(EC,_C);jr[e]=new Ci(e,1,!1,t,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(t){jr[t]=new Ci(t,1,!1,t.toLowerCase(),null,!1,!1)});jr.xlinkHref=new Ci("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(t){jr[t]=new Ci(t,1,!1,t.toLowerCase(),null,!0,!0)});function SC(t,e,n,r){var i=jr.hasOwnProperty(e)?jr[e]:null;(i!==null?i.type!==0:r||!(2a||i[o]!==s[a]){var c=` +`+i[o].replace(" at new "," at ");return t.displayName&&c.includes("")&&(c=c.replace("",t.displayName)),c}while(1<=o&&0<=a);break}}}finally{N1=!1,Error.prepareStackTrace=n}return(t=t?t.displayName||t.name:"")?Jp(t):""}function oz(t){switch(t.tag){case 5:return Jp(t.type);case 16:return Jp("Lazy");case 13:return Jp("Suspense");case 19:return Jp("SuspenseList");case 0:case 2:case 15:return t=P1(t.type,!1),t;case 11:return t=P1(t.type.render,!1),t;case 1:return t=P1(t.type,!0),t;default:return""}}function Q_(t){if(t==null)return null;if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;switch(t){case Th:return"Fragment";case Ch:return"Portal";case Y_:return"Profiler";case xC:return"StrictMode";case Z_:return"Suspense";case J_:return"SuspenseList"}if(typeof t=="object")switch(t.$$typeof){case hU:return(t.displayName||"Context")+".Consumer";case dU:return(t._context.displayName||"Context")+".Provider";case AC:var e=t.render;return t=t.displayName,t||(t=e.displayName||e.name||"",t=t!==""?"ForwardRef("+t+")":"ForwardRef"),t;case CC:return e=t.displayName||null,e!==null?e:Q_(t.type)||"Memo";case Yc:e=t._payload,t=t._init;try{return Q_(t(e))}catch{}}return null}function az(t){var e=t.type;switch(t.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return t=e.render,t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Q_(e);case 8:return e===xC?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Rl(t){switch(typeof t){case"boolean":case"number":case"string":case"undefined":return t;case"object":return t;default:return""}}function pU(t){var e=t.type;return(t=t.nodeName)&&t.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function cz(t){var e=pU(t)?"checked":"value",n=Object.getOwnPropertyDescriptor(t.constructor.prototype,e),r=""+t[e];if(!t.hasOwnProperty(e)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,s=n.set;return Object.defineProperty(t,e,{configurable:!0,get:function(){return i.call(this)},set:function(o){r=""+o,s.call(this,o)}}),Object.defineProperty(t,e,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){t._valueTracker=null,delete t[e]}}}}function H0(t){t._valueTracker||(t._valueTracker=cz(t))}function gU(t){if(!t)return!1;var e=t._valueTracker;if(!e)return!0;var n=e.getValue(),r="";return t&&(r=pU(t)?t.checked?"true":"false":t.value),t=r,t!==n?(e.setValue(t),!0):!1}function sv(t){if(t=t||(typeof document<"u"?document:void 0),typeof t>"u")return null;try{return t.activeElement||t.body}catch{return t.body}}function eS(t,e){var n=e.checked;return Xn({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??t._wrapperState.initialChecked})}function bI(t,e){var n=e.defaultValue==null?"":e.defaultValue,r=e.checked!=null?e.checked:e.defaultChecked;n=Rl(e.value!=null?e.value:n),t._wrapperState={initialChecked:r,initialValue:n,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function mU(t,e){e=e.checked,e!=null&&SC(t,"checked",e,!1)}function tS(t,e){mU(t,e);var n=Rl(e.value),r=e.type;if(n!=null)r==="number"?(n===0&&t.value===""||t.value!=n)&&(t.value=""+n):t.value!==""+n&&(t.value=""+n);else if(r==="submit"||r==="reset"){t.removeAttribute("value");return}e.hasOwnProperty("value")?nS(t,e.type,n):e.hasOwnProperty("defaultValue")&&nS(t,e.type,Rl(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(t.defaultChecked=!!e.defaultChecked)}function EI(t,e,n){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var r=e.type;if(!(r!=="submit"&&r!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+t._wrapperState.initialValue,n||e===t.value||(t.value=e),t.defaultValue=e}n=t.name,n!==""&&(t.name=""),t.defaultChecked=!!t._wrapperState.initialChecked,n!==""&&(t.name=n)}function nS(t,e,n){(e!=="number"||sv(t.ownerDocument)!==t)&&(n==null?t.defaultValue=""+t._wrapperState.initialValue:t.defaultValue!==""+n&&(t.defaultValue=""+n))}var Qp=Array.isArray;function Kh(t,e,n,r){if(t=t.options,e){e={};for(var i=0;i"+e.valueOf().toString()+"",e=j0.firstChild;t.firstChild;)t.removeChild(t.firstChild);for(;e.firstChild;)t.appendChild(e.firstChild)}});function Vg(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&n.nodeType===3){n.nodeValue=e;return}}t.textContent=e}var mg={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},lz=["Webkit","ms","Moz","O"];Object.keys(mg).forEach(function(t){lz.forEach(function(e){e=e+t.charAt(0).toUpperCase()+t.substring(1),mg[e]=mg[t]})});function bU(t,e,n){return e==null||typeof e=="boolean"||e===""?"":n||typeof e!="number"||e===0||mg.hasOwnProperty(t)&&mg[t]?(""+e).trim():e+"px"}function EU(t,e){t=t.style;for(var n in e)if(e.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=bU(n,e[n],r);n==="float"&&(n="cssFloat"),r?t.setProperty(n,i):t[n]=i}}var uz=Xn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function sS(t,e){if(e){if(uz[t]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(Ee(137,t));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(Ee(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(Ee(61))}if(e.style!=null&&typeof e.style!="object")throw Error(Ee(62))}}function oS(t,e){if(t.indexOf("-")===-1)return typeof e.is=="string";switch(t){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var aS=null;function TC(t){return t=t.target||t.srcElement||window,t.correspondingUseElement&&(t=t.correspondingUseElement),t.nodeType===3?t.parentNode:t}var cS=null,Xh=null,Yh=null;function xI(t){if(t=n0(t)){if(typeof cS!="function")throw Error(Ee(280));var e=t.stateNode;e&&(e=Sb(e),cS(t.stateNode,t.type,e))}}function _U(t){Xh?Yh?Yh.push(t):Yh=[t]:Xh=t}function SU(){if(Xh){var t=Xh,e=Yh;if(Yh=Xh=null,xI(t),e)for(t=0;t>>=0,t===0?32:31-(Ez(t)/_z|0)|0}var V0=64,W0=4194304;function eg(t){switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return t&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return t}}function lv(t,e){var n=t.pendingLanes;if(n===0)return 0;var r=0,i=t.suspendedLanes,s=t.pingedLanes,o=n&268435455;if(o!==0){var a=o&~i;a!==0?r=eg(a):(s&=o,s!==0&&(r=eg(s)))}else o=n&~i,o!==0?r=eg(o):s!==0&&(r=eg(s));if(r===0)return 0;if(e!==0&&e!==r&&!(e&i)&&(i=r&-r,s=e&-e,i>=s||i===16&&(s&4194240)!==0))return e;if(r&4&&(r|=n&16),e=t.entangledLanes,e!==0)for(t=t.entanglements,e&=r;0n;n++)e.push(t);return e}function e0(t,e,n){t.pendingLanes|=e,e!==536870912&&(t.suspendedLanes=0,t.pingedLanes=0),t=t.eventTimes,e=31-ko(e),t[e]=n}function Cz(t,e){var n=t.pendingLanes&~e;t.pendingLanes=e,t.suspendedLanes=0,t.pingedLanes=0,t.expiredLanes&=e,t.mutableReadLanes&=e,t.entangledLanes&=e,e=t.entanglements;var r=t.eventTimes;for(t=t.expirationTimes;0=wg),RI=" ",OI=!1;function jU(t,e){switch(t){case"keyup":return eH.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function VU(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Ih=!1;function nH(t,e){switch(t){case"compositionend":return VU(e);case"keypress":return e.which!==32?null:(OI=!0,RI);case"textInput":return t=e.data,t===RI&&OI?null:t;default:return null}}function rH(t,e){if(Ih)return t==="compositionend"||!UC&&jU(t,e)?(t=zU(),Sw=DC=ll=null,Ih=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:n,offset:e-t};t=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=$I(n)}}function KU(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?KU(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function XU(){for(var t=window,e=sv();e instanceof t.HTMLIFrameElement;){try{var n=typeof e.contentWindow.location.href=="string"}catch{n=!1}if(n)t=e.contentWindow;else break;e=sv(t.document)}return e}function LC(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}function hH(t){var e=XU(),n=t.focusedElem,r=t.selectionRange;if(e!==n&&n&&n.ownerDocument&&KU(n.ownerDocument.documentElement,n)){if(r!==null&&LC(n)){if(e=r.start,t=r.end,t===void 0&&(t=e),"selectionStart"in n)n.selectionStart=e,n.selectionEnd=Math.min(t,n.value.length);else if(t=(e=n.ownerDocument||document)&&e.defaultView||window,t.getSelection){t=t.getSelection();var i=n.textContent.length,s=Math.min(r.start,i);r=r.end===void 0?s:Math.min(r.end,i),!t.extend&&s>r&&(i=r,r=s,s=i),i=BI(n,s);var o=BI(n,r);i&&o&&(t.rangeCount!==1||t.anchorNode!==i.node||t.anchorOffset!==i.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&(e=e.createRange(),e.setStart(i.node,i.offset),t.removeAllRanges(),s>r?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)t.nodeType===1&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Mh=null,pS=null,bg=null,gS=!1;function FI(t,e,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;gS||Mh==null||Mh!==sv(r)||(r=Mh,"selectionStart"in r&&LC(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),bg&&Yg(bg,r)||(bg=r,r=hv(pS,"onSelect"),0Dh||(t.current=ES[Dh],ES[Dh]=null,Dh--)}function Nn(t,e){Dh++,ES[Dh]=t.current,t.current=e}var Ol={},di=Vl(Ol),Ki=Vl(!1),Zu=Ol;function df(t,e){var n=t.type.contextTypes;if(!n)return Ol;var r=t.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===e)return r.__reactInternalMemoizedMaskedChildContext;var i={},s;for(s in n)i[s]=e[s];return r&&(t=t.stateNode,t.__reactInternalMemoizedUnmaskedChildContext=e,t.__reactInternalMemoizedMaskedChildContext=i),i}function Xi(t){return t=t.childContextTypes,t!=null}function pv(){kn(Ki),kn(di)}function qI(t,e,n){if(di.current!==Ol)throw Error(Ee(168));Nn(di,e),Nn(Ki,n)}function iL(t,e,n){var r=t.stateNode;if(e=e.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in e))throw Error(Ee(108,az(t)||"Unknown",i));return Xn({},n,r)}function gv(t){return t=(t=t.stateNode)&&t.__reactInternalMemoizedMergedChildContext||Ol,Zu=di.current,Nn(di,t),Nn(Ki,Ki.current),!0}function KI(t,e,n){var r=t.stateNode;if(!r)throw Error(Ee(169));n?(t=iL(t,e,Zu),r.__reactInternalMemoizedMergedChildContext=t,kn(Ki),kn(di),Nn(di,t)):kn(Ki),Nn(Ki,n)}var Xa=null,xb=!1,W1=!1;function sL(t){Xa===null?Xa=[t]:Xa.push(t)}function xH(t){xb=!0,sL(t)}function Wl(){if(!W1&&Xa!==null){W1=!0;var t=0,e=mn;try{var n=Xa;for(mn=1;t>=o,i-=o,Qa=1<<32-ko(e)+i|n<N?(_=T,T=null):_=T.sibling;var E=h(p,T,w[N],b);if(E===null){T===null&&(T=_);break}t&&T&&E.alternate===null&&e(p,T),v=s(E,v,N),x===null?S=E:x.sibling=E,x=E,T=_}if(N===w.length)return n(p,T),Vn&&gu(p,N),S;if(T===null){for(;NN?(_=T,T=null):_=T.sibling;var A=h(p,T,E.value,b);if(A===null){T===null&&(T=_);break}t&&T&&A.alternate===null&&e(p,T),v=s(A,v,N),x===null?S=A:x.sibling=A,x=A,T=_}if(E.done)return n(p,T),Vn&&gu(p,N),S;if(T===null){for(;!E.done;N++,E=w.next())E=d(p,E.value,b),E!==null&&(v=s(E,v,N),x===null?S=E:x.sibling=E,x=E);return Vn&&gu(p,N),S}for(T=r(p,T);!E.done;N++,E=w.next())E=f(T,p,N,E.value,b),E!==null&&(t&&E.alternate!==null&&T.delete(E.key===null?N:E.key),v=s(E,v,N),x===null?S=E:x.sibling=E,x=E);return t&&T.forEach(function(L){return e(p,L)}),Vn&&gu(p,N),S}function y(p,v,w,b){if(typeof w=="object"&&w!==null&&w.type===Th&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case z0:e:{for(var S=w.key,x=v;x!==null;){if(x.key===S){if(S=w.type,S===Th){if(x.tag===7){n(p,x.sibling),v=i(x,w.props.children),v.return=p,p=v;break e}}else if(x.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Yc&&ZI(S)===x.type){n(p,x.sibling),v=i(x,w.props),v.ref=wp(p,x,w),v.return=p,p=v;break e}n(p,x);break}else e(p,x);x=x.sibling}w.type===Th?(v=Vu(w.props.children,p.mode,b,w.key),v.return=p,p=v):(b=Pw(w.type,w.key,w.props,null,p.mode,b),b.ref=wp(p,v,w),b.return=p,p=b)}return o(p);case Ch:e:{for(x=w.key;v!==null;){if(v.key===x)if(v.tag===4&&v.stateNode.containerInfo===w.containerInfo&&v.stateNode.implementation===w.implementation){n(p,v.sibling),v=i(v,w.children||[]),v.return=p,p=v;break e}else{n(p,v);break}else e(p,v);v=v.sibling}v=Q1(w,p.mode,b),v.return=p,p=v}return o(p);case Yc:return x=w._init,y(p,v,x(w._payload),b)}if(Qp(w))return g(p,v,w,b);if(fp(w))return m(p,v,w,b);J0(p,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,v!==null&&v.tag===6?(n(p,v.sibling),v=i(v,w),v.return=p,p=v):(n(p,v),v=J1(w,p.mode,b),v.return=p,p=v),o(p)):n(p,v)}return y}var ff=lL(!0),uL=lL(!1),wv=Vl(null),vv=null,Uh=null,FC=null;function zC(){FC=Uh=vv=null}function HC(t){var e=wv.current;kn(wv),t._currentValue=e}function xS(t,e,n){for(;t!==null;){var r=t.alternate;if((t.childLanes&e)!==e?(t.childLanes|=e,r!==null&&(r.childLanes|=e)):r!==null&&(r.childLanes&e)!==e&&(r.childLanes|=e),t===n)break;t=t.return}}function Jh(t,e){vv=t,FC=Uh=null,t=t.dependencies,t!==null&&t.firstContext!==null&&(t.lanes&e&&(Wi=!0),t.firstContext=null)}function to(t){var e=t._currentValue;if(FC!==t)if(t={context:t,memoizedValue:e,next:null},Uh===null){if(vv===null)throw Error(Ee(308));Uh=t,vv.dependencies={lanes:0,firstContext:t}}else Uh=Uh.next=t;return e}var Nu=null;function jC(t){Nu===null?Nu=[t]:Nu.push(t)}function dL(t,e,n,r){var i=e.interleaved;return i===null?(n.next=n,jC(e)):(n.next=i.next,i.next=n),e.interleaved=n,dc(t,r)}function dc(t,e){t.lanes|=e;var n=t.alternate;for(n!==null&&(n.lanes|=e),n=t,t=t.return;t!==null;)t.childLanes|=e,n=t.alternate,n!==null&&(n.childLanes|=e),n=t,t=t.return;return n.tag===3?n.stateNode:null}var Zc=!1;function VC(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function hL(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,effects:t.effects})}function ic(t,e){return{eventTime:t,lane:e,tag:0,payload:null,callback:null,next:null}}function vl(t,e,n){var r=t.updateQueue;if(r===null)return null;if(r=r.shared,Zt&2){var i=r.pending;return i===null?e.next=e:(e.next=i.next,i.next=e),r.pending=e,dc(t,n)}return i=r.interleaved,i===null?(e.next=e,jC(r)):(e.next=i.next,i.next=e),r.interleaved=e,dc(t,n)}function Aw(t,e,n){if(e=e.updateQueue,e!==null&&(e=e.shared,(n&4194240)!==0)){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,MC(t,n)}}function JI(t,e){var n=t.updateQueue,r=t.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?i=s=o:s=s.next=o,n=n.next}while(n!==null);s===null?i=s=e:s=s.next=e}else i=s=e;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:s,shared:r.shared,effects:r.effects},t.updateQueue=n;return}t=n.lastBaseUpdate,t===null?n.firstBaseUpdate=e:t.next=e,n.lastBaseUpdate=e}function bv(t,e,n,r){var i=t.updateQueue;Zc=!1;var s=i.firstBaseUpdate,o=i.lastBaseUpdate,a=i.shared.pending;if(a!==null){i.shared.pending=null;var c=a,l=c.next;c.next=null,o===null?s=l:o.next=l,o=c;var u=t.alternate;u!==null&&(u=u.updateQueue,a=u.lastBaseUpdate,a!==o&&(a===null?u.firstBaseUpdate=l:a.next=l,u.lastBaseUpdate=c))}if(s!==null){var d=i.baseState;o=0,u=l=c=null,a=s;do{var h=a.lane,f=a.eventTime;if((r&h)===h){u!==null&&(u=u.next={eventTime:f,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var g=t,m=a;switch(h=e,f=n,m.tag){case 1:if(g=m.payload,typeof g=="function"){d=g.call(f,d,h);break e}d=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=m.payload,h=typeof g=="function"?g.call(f,d,h):g,h==null)break e;d=Xn({},d,h);break e;case 2:Zc=!0}}a.callback!==null&&a.lane!==0&&(t.flags|=64,h=i.effects,h===null?i.effects=[a]:h.push(a))}else f={eventTime:f,lane:h,tag:a.tag,payload:a.payload,callback:a.callback,next:null},u===null?(l=u=f,c=d):u=u.next=f,o|=h;if(a=a.next,a===null){if(a=i.shared.pending,a===null)break;h=a,a=h.next,h.next=null,i.lastBaseUpdate=h,i.shared.pending=null}}while(!0);if(u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,e=i.shared.interleaved,e!==null){i=e;do o|=i.lane,i=i.next;while(i!==e)}else s===null&&(i.shared.lanes=0);ed|=o,t.lanes=o,t.memoizedState=d}}function QI(t,e,n){if(t=e.effects,e.effects=null,t!==null)for(e=0;en?n:4,t(!0);var r=q1.transition;q1.transition={};try{t(!1),e()}finally{mn=n,q1.transition=r}}function ML(){return no().memoizedState}function IH(t,e,n){var r=El(t);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},NL(t))PL(e,n);else if(n=dL(t,e,n,r),n!==null){var i=bi();$o(n,t,r,i),DL(n,e,r)}}function MH(t,e,n){var r=El(t),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(NL(t))PL(e,i);else{var s=t.alternate;if(t.lanes===0&&(s===null||s.lanes===0)&&(s=e.lastRenderedReducer,s!==null))try{var o=e.lastRenderedState,a=s(o,n);if(i.hasEagerState=!0,i.eagerState=a,jo(a,o)){var c=e.interleaved;c===null?(i.next=i,jC(e)):(i.next=c.next,c.next=i),e.interleaved=i;return}}catch{}finally{}n=dL(t,e,i,r),n!==null&&(i=bi(),$o(n,t,r,i),DL(n,e,r))}}function NL(t){var e=t.alternate;return t===Kn||e!==null&&e===Kn}function PL(t,e){Eg=_v=!0;var n=t.pending;n===null?e.next=e:(e.next=n.next,n.next=e),t.pending=e}function DL(t,e,n){if(n&4194240){var r=e.lanes;r&=t.pendingLanes,n|=r,e.lanes=n,MC(t,n)}}var Sv={readContext:to,useCallback:Yr,useContext:Yr,useEffect:Yr,useImperativeHandle:Yr,useInsertionEffect:Yr,useLayoutEffect:Yr,useMemo:Yr,useReducer:Yr,useRef:Yr,useState:Yr,useDebugValue:Yr,useDeferredValue:Yr,useTransition:Yr,useMutableSource:Yr,useSyncExternalStore:Yr,useId:Yr,unstable_isNewReconciler:!1},NH={readContext:to,useCallback:function(t,e){return na().memoizedState=[t,e===void 0?null:e],t},useContext:to,useEffect:tM,useImperativeHandle:function(t,e,n){return n=n!=null?n.concat([t]):null,Tw(4194308,4,xL.bind(null,e,t),n)},useLayoutEffect:function(t,e){return Tw(4194308,4,t,e)},useInsertionEffect:function(t,e){return Tw(4,2,t,e)},useMemo:function(t,e){var n=na();return e=e===void 0?null:e,t=t(),n.memoizedState=[t,e],t},useReducer:function(t,e,n){var r=na();return e=n!==void 0?n(e):e,r.memoizedState=r.baseState=e,t={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:e},r.queue=t,t=t.dispatch=IH.bind(null,Kn,t),[r.memoizedState,t]},useRef:function(t){var e=na();return t={current:t},e.memoizedState=t},useState:eM,useDebugValue:JC,useDeferredValue:function(t){return na().memoizedState=t},useTransition:function(){var t=eM(!1),e=t[0];return t=TH.bind(null,t[1]),na().memoizedState=t,[e,t]},useMutableSource:function(){},useSyncExternalStore:function(t,e,n){var r=Kn,i=na();if(Vn){if(n===void 0)throw Error(Ee(407));n=n()}else{if(n=e(),Mr===null)throw Error(Ee(349));Qu&30||mL(r,e,n)}i.memoizedState=n;var s={value:n,getSnapshot:e};return i.queue=s,tM(wL.bind(null,r,s,t),[t]),r.flags|=2048,im(9,yL.bind(null,r,s,n,e),void 0,null),n},useId:function(){var t=na(),e=Mr.identifierPrefix;if(Vn){var n=ec,r=Qa;n=(r&~(1<<32-ko(r)-1)).toString(32)+n,e=":"+e+"R"+n,n=nm++,0<\/script>",t=t.removeChild(t.firstChild)):typeof r.is=="string"?t=o.createElement(n,{is:r.is}):(t=o.createElement(n),n==="select"&&(o=t,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):t=o.createElementNS(t,n),t[ua]=e,t[Qg]=r,HL(t,e,!1,!1),e.stateNode=t;e:{switch(o=oS(n,r),n){case"dialog":On("cancel",t),On("close",t),i=r;break;case"iframe":case"object":case"embed":On("load",t),i=r;break;case"video":case"audio":for(i=0;imf&&(e.flags|=128,r=!0,vp(s,!1),e.lanes=4194304)}else{if(!r)if(t=Ev(o),t!==null){if(e.flags|=128,r=!0,n=t.updateQueue,n!==null&&(e.updateQueue=n,e.flags|=4),vp(s,!0),s.tail===null&&s.tailMode==="hidden"&&!o.alternate&&!Vn)return Zr(e),null}else 2*tr()-s.renderingStartTime>mf&&n!==1073741824&&(e.flags|=128,r=!0,vp(s,!1),e.lanes=4194304);s.isBackwards?(o.sibling=e.child,e.child=o):(n=s.last,n!==null?n.sibling=o:e.child=o,s.last=o)}return s.tail!==null?(e=s.tail,s.rendering=e,s.tail=e.sibling,s.renderingStartTime=tr(),e.sibling=null,n=Wn.current,Nn(Wn,r?n&1|2:n&1),e):(Zr(e),null);case 22:case 23:return i2(),r=e.memoizedState!==null,t!==null&&t.memoizedState!==null!==r&&(e.flags|=8192),r&&e.mode&1?fs&1073741824&&(Zr(e),e.subtreeFlags&6&&(e.flags|=8192)):Zr(e),null;case 24:return null;case 25:return null}throw Error(Ee(156,e.tag))}function $H(t,e){switch($C(e),e.tag){case 1:return Xi(e.type)&&pv(),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return pf(),kn(Ki),kn(di),qC(),t=e.flags,t&65536&&!(t&128)?(e.flags=t&-65537|128,e):null;case 5:return GC(e),null;case 13:if(kn(Wn),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(Ee(340));hf()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return kn(Wn),null;case 4:return pf(),null;case 10:return HC(e.type._context),null;case 22:case 23:return i2(),null;case 24:return null;default:return null}}var ey=!1,ci=!1,BH=typeof WeakSet=="function"?WeakSet:Set,Ge=null;function Lh(t,e){var n=t.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Zn(t,e,r)}else n.current=null}function RS(t,e,n){try{n()}catch(r){Zn(t,e,r)}}var hM=!1;function FH(t,e){if(mS=uv,t=XU(),LC(t)){if("selectionStart"in t)var n={start:t.selectionStart,end:t.selectionEnd};else e:{n=(n=t.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,s=r.focusNode;r=r.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var o=0,a=-1,c=-1,l=0,u=0,d=t,h=null;t:for(;;){for(var f;d!==n||i!==0&&d.nodeType!==3||(a=o+i),d!==s||r!==0&&d.nodeType!==3||(c=o+r),d.nodeType===3&&(o+=d.nodeValue.length),(f=d.firstChild)!==null;)h=d,d=f;for(;;){if(d===t)break t;if(h===n&&++l===i&&(a=o),h===s&&++u===r&&(c=o),(f=d.nextSibling)!==null)break;d=h,h=d.parentNode}d=f}n=a===-1||c===-1?null:{start:a,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(yS={focusedElem:t,selectionRange:n},uv=!1,Ge=e;Ge!==null;)if(e=Ge,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Ge=t;else for(;Ge!==null;){e=Ge;try{var g=e.alternate;if(e.flags&1024)switch(e.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var m=g.memoizedProps,y=g.memoizedState,p=e.stateNode,v=p.getSnapshotBeforeUpdate(e.elementType===e.type?m:Co(e.type,m),y);p.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=e.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Ee(163))}}catch(b){Zn(e,e.return,b)}if(t=e.sibling,t!==null){t.return=e.return,Ge=t;break}Ge=e.return}return g=hM,hM=!1,g}function _g(t,e,n){var r=e.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&t)===t){var s=i.destroy;i.destroy=void 0,s!==void 0&&RS(e,n,s)}i=i.next}while(i!==r)}}function Tb(t,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var n=e=e.next;do{if((n.tag&t)===t){var r=n.create;n.destroy=r()}n=n.next}while(n!==e)}}function OS(t){var e=t.ref;if(e!==null){var n=t.stateNode;switch(t.tag){case 5:t=n;break;default:t=n}typeof e=="function"?e(t):e.current=t}}function WL(t){var e=t.alternate;e!==null&&(t.alternate=null,WL(e)),t.child=null,t.deletions=null,t.sibling=null,t.tag===5&&(e=t.stateNode,e!==null&&(delete e[ua],delete e[Qg],delete e[bS],delete e[_H],delete e[SH])),t.stateNode=null,t.return=null,t.dependencies=null,t.memoizedProps=null,t.memoizedState=null,t.pendingProps=null,t.stateNode=null,t.updateQueue=null}function GL(t){return t.tag===5||t.tag===3||t.tag===4}function fM(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||GL(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function US(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.nodeType===8?n.parentNode.insertBefore(t,e):n.insertBefore(t,e):(n.nodeType===8?(e=n.parentNode,e.insertBefore(t,n)):(e=n,e.appendChild(t)),n=n._reactRootContainer,n!=null||e.onclick!==null||(e.onclick=fv));else if(r!==4&&(t=t.child,t!==null))for(US(t,e,n),t=t.sibling;t!==null;)US(t,e,n),t=t.sibling}function LS(t,e,n){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?n.insertBefore(t,e):n.appendChild(t);else if(r!==4&&(t=t.child,t!==null))for(LS(t,e,n),t=t.sibling;t!==null;)LS(t,e,n),t=t.sibling}var Lr=null,To=!1;function Sc(t,e,n){for(n=n.child;n!==null;)qL(t,e,n),n=n.sibling}function qL(t,e,n){if(ya&&typeof ya.onCommitFiberUnmount=="function")try{ya.onCommitFiberUnmount(vb,n)}catch{}switch(n.tag){case 5:ci||Lh(n,e);case 6:var r=Lr,i=To;Lr=null,Sc(t,e,n),Lr=r,To=i,Lr!==null&&(To?(t=Lr,n=n.stateNode,t.nodeType===8?t.parentNode.removeChild(n):t.removeChild(n)):Lr.removeChild(n.stateNode));break;case 18:Lr!==null&&(To?(t=Lr,n=n.stateNode,t.nodeType===8?V1(t.parentNode,n):t.nodeType===1&&V1(t,n),Kg(t)):V1(Lr,n.stateNode));break;case 4:r=Lr,i=To,Lr=n.stateNode.containerInfo,To=!0,Sc(t,e,n),Lr=r,To=i;break;case 0:case 11:case 14:case 15:if(!ci&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var s=i,o=s.destroy;s=s.tag,o!==void 0&&(s&2||s&4)&&RS(n,e,o),i=i.next}while(i!==r)}Sc(t,e,n);break;case 1:if(!ci&&(Lh(n,e),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){Zn(n,e,a)}Sc(t,e,n);break;case 21:Sc(t,e,n);break;case 22:n.mode&1?(ci=(r=ci)||n.memoizedState!==null,Sc(t,e,n),ci=r):Sc(t,e,n);break;default:Sc(t,e,n)}}function pM(t){var e=t.updateQueue;if(e!==null){t.updateQueue=null;var n=t.stateNode;n===null&&(n=t.stateNode=new BH),e.forEach(function(r){var i=XH.bind(null,t,r);n.has(r)||(n.add(r),r.then(i,i))})}}function mo(t,e){var n=e.deletions;if(n!==null)for(var r=0;ri&&(i=o),r&=~s}if(r=i,r=tr()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*HH(r/1960))-r,10t?16:t,ul===null)var r=!1;else{if(t=ul,ul=null,Cv=0,Zt&6)throw Error(Ee(331));var i=Zt;for(Zt|=4,Ge=t.current;Ge!==null;){var s=Ge,o=s.child;if(Ge.flags&16){var a=s.deletions;if(a!==null){for(var c=0;ctr()-n2?ju(t,0):t2|=n),Yi(t,e)}function tk(t,e){e===0&&(t.mode&1?(e=W0,W0<<=1,!(W0&130023424)&&(W0=4194304)):e=1);var n=bi();t=dc(t,e),t!==null&&(e0(t,e,n),Yi(t,n))}function KH(t){var e=t.memoizedState,n=0;e!==null&&(n=e.retryLane),tk(t,n)}function XH(t,e){var n=0;switch(t.tag){case 13:var r=t.stateNode,i=t.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=t.stateNode;break;default:throw Error(Ee(314))}r!==null&&r.delete(e),tk(t,n)}var nk;nk=function(t,e,n){if(t!==null)if(t.memoizedProps!==e.pendingProps||Ki.current)Wi=!0;else{if(!(t.lanes&n)&&!(e.flags&128))return Wi=!1,LH(t,e,n);Wi=!!(t.flags&131072)}else Wi=!1,Vn&&e.flags&1048576&&oL(e,yv,e.index);switch(e.lanes=0,e.tag){case 2:var r=e.type;Iw(t,e),t=e.pendingProps;var i=df(e,di.current);Jh(e,n),i=XC(null,e,r,t,i,n);var s=YC();return e.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Xi(r)?(s=!0,gv(e)):s=!1,e.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,VC(e),i.updater=Cb,e.stateNode=i,i._reactInternals=e,CS(e,r,t,n),e=MS(null,e,r,!0,s,n)):(e.tag=0,Vn&&s&&kC(e),yi(null,e,i,n),e=e.child),e;case 16:r=e.elementType;e:{switch(Iw(t,e),t=e.pendingProps,i=r._init,r=i(r._payload),e.type=r,i=e.tag=ZH(r),t=Co(r,t),i){case 0:e=IS(null,e,r,t,n);break e;case 1:e=lM(null,e,r,t,n);break e;case 11:e=aM(null,e,r,t,n);break e;case 14:e=cM(null,e,r,Co(r.type,t),n);break e}throw Error(Ee(306,r,""))}return e;case 0:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Co(r,i),IS(t,e,r,i,n);case 1:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Co(r,i),lM(t,e,r,i,n);case 3:e:{if(BL(e),t===null)throw Error(Ee(387));r=e.pendingProps,s=e.memoizedState,i=s.element,hL(t,e),bv(e,r,null,n);var o=e.memoizedState;if(r=o.element,s.isDehydrated)if(s={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},e.updateQueue.baseState=s,e.memoizedState=s,e.flags&256){i=gf(Error(Ee(423)),e),e=uM(t,e,r,n,i);break e}else if(r!==i){i=gf(Error(Ee(424)),e),e=uM(t,e,r,n,i);break e}else for(vs=wl(e.stateNode.containerInfo.firstChild),_s=e,Vn=!0,Io=null,n=uL(e,null,r,n),e.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(hf(),r===i){e=hc(t,e,n);break e}yi(t,e,r,n)}e=e.child}return e;case 5:return fL(e),t===null&&SS(e),r=e.type,i=e.pendingProps,s=t!==null?t.memoizedProps:null,o=i.children,wS(r,i)?o=null:s!==null&&wS(r,s)&&(e.flags|=32),$L(t,e),yi(t,e,o,n),e.child;case 6:return t===null&&SS(e),null;case 13:return FL(t,e,n);case 4:return WC(e,e.stateNode.containerInfo),r=e.pendingProps,t===null?e.child=ff(e,null,r,n):yi(t,e,r,n),e.child;case 11:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Co(r,i),aM(t,e,r,i,n);case 7:return yi(t,e,e.pendingProps,n),e.child;case 8:return yi(t,e,e.pendingProps.children,n),e.child;case 12:return yi(t,e,e.pendingProps.children,n),e.child;case 10:e:{if(r=e.type._context,i=e.pendingProps,s=e.memoizedProps,o=i.value,Nn(wv,r._currentValue),r._currentValue=o,s!==null)if(jo(s.value,o)){if(s.children===i.children&&!Ki.current){e=hc(t,e,n);break e}}else for(s=e.child,s!==null&&(s.return=e);s!==null;){var a=s.dependencies;if(a!==null){o=s.child;for(var c=a.firstContext;c!==null;){if(c.context===r){if(s.tag===1){c=ic(-1,n&-n),c.tag=2;var l=s.updateQueue;if(l!==null){l=l.shared;var u=l.pending;u===null?c.next=c:(c.next=u.next,u.next=c),l.pending=c}}s.lanes|=n,c=s.alternate,c!==null&&(c.lanes|=n),xS(s.return,n,e),a.lanes|=n;break}c=c.next}}else if(s.tag===10)o=s.type===e.type?null:s.child;else if(s.tag===18){if(o=s.return,o===null)throw Error(Ee(341));o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),xS(o,n,e),o=s.sibling}else o=s.child;if(o!==null)o.return=s;else for(o=s;o!==null;){if(o===e){o=null;break}if(s=o.sibling,s!==null){s.return=o.return,o=s;break}o=o.return}s=o}yi(t,e,i.children,n),e=e.child}return e;case 9:return i=e.type,r=e.pendingProps.children,Jh(e,n),i=to(i),r=r(i),e.flags|=1,yi(t,e,r,n),e.child;case 14:return r=e.type,i=Co(r,e.pendingProps),i=Co(r.type,i),cM(t,e,r,i,n);case 15:return LL(t,e,e.type,e.pendingProps,n);case 17:return r=e.type,i=e.pendingProps,i=e.elementType===r?i:Co(r,i),Iw(t,e),e.tag=1,Xi(r)?(t=!0,gv(e)):t=!1,Jh(e,n),RL(e,r,i),CS(e,r,i,n),MS(null,e,r,!0,t,n);case 19:return zL(t,e,n);case 22:return kL(t,e,n)}throw Error(Ee(156,e.tag))};function rk(t,e){return NU(t,e)}function YH(t,e,n,r){this.tag=t,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Zs(t,e,n,r){return new YH(t,e,n,r)}function o2(t){return t=t.prototype,!(!t||!t.isReactComponent)}function ZH(t){if(typeof t=="function")return o2(t)?1:0;if(t!=null){if(t=t.$$typeof,t===AC)return 11;if(t===CC)return 14}return 2}function _l(t,e){var n=t.alternate;return n===null?(n=Zs(t.tag,e,t.key,t.mode),n.elementType=t.elementType,n.type=t.type,n.stateNode=t.stateNode,n.alternate=t,t.alternate=n):(n.pendingProps=e,n.type=t.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=t.flags&14680064,n.childLanes=t.childLanes,n.lanes=t.lanes,n.child=t.child,n.memoizedProps=t.memoizedProps,n.memoizedState=t.memoizedState,n.updateQueue=t.updateQueue,e=t.dependencies,n.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},n.sibling=t.sibling,n.index=t.index,n.ref=t.ref,n}function Pw(t,e,n,r,i,s){var o=2;if(r=t,typeof t=="function")o2(t)&&(o=1);else if(typeof t=="string")o=5;else e:switch(t){case Th:return Vu(n.children,i,s,e);case xC:o=8,i|=8;break;case Y_:return t=Zs(12,n,e,i|2),t.elementType=Y_,t.lanes=s,t;case Z_:return t=Zs(13,n,e,i),t.elementType=Z_,t.lanes=s,t;case J_:return t=Zs(19,n,e,i),t.elementType=J_,t.lanes=s,t;case fU:return Mb(n,i,s,e);default:if(typeof t=="object"&&t!==null)switch(t.$$typeof){case dU:o=10;break e;case hU:o=9;break e;case AC:o=11;break e;case CC:o=14;break e;case Yc:o=16,r=null;break e}throw Error(Ee(130,t==null?t:typeof t,""))}return e=Zs(o,n,e,i),e.elementType=t,e.type=r,e.lanes=s,e}function Vu(t,e,n,r){return t=Zs(7,t,r,e),t.lanes=n,t}function Mb(t,e,n,r){return t=Zs(22,t,r,e),t.elementType=fU,t.lanes=n,t.stateNode={isHidden:!1},t}function J1(t,e,n){return t=Zs(6,t,null,e),t.lanes=n,t}function Q1(t,e,n){return e=Zs(4,t.children!==null?t.children:[],t.key,e),e.lanes=n,e.stateNode={containerInfo:t.containerInfo,pendingChildren:null,implementation:t.implementation},e}function JH(t,e,n,r,i){this.tag=e,this.containerInfo=t,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=R1(0),this.expirationTimes=R1(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=R1(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function a2(t,e,n,r,i,s,o,a,c){return t=new JH(t,e,n,a,c),e===1?(e=1,s===!0&&(e|=8)):e=0,s=Zs(3,null,null,e),t.current=s,s.stateNode=t,s.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},VC(s),t}function QH(t,e,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ak)}catch(t){console.error(t)}}ak(),aU.exports=Is;var ij=aU.exports,_M=ij;K_.createRoot=_M.createRoot,K_.hydrateRoot=_M.hydrateRoot;const sj="https://browser.blockstack.org/auth",oj={"@type":"Person","@context":"http://schema.org"},ck=["store_write"],aj="blockstack-session",cj={logLevel:"debug"},wd={MISSING_PARAMETER:"missing_parameter",REMOTE_SERVICE_ERROR:"remote_service_error",INVALID_STATE:"invalid_state",NO_SESSION_DATA:"no_session_data",DOES_NOT_EXIST:"does_not_exist",FAILED_DECRYPTION_ERROR:"failed_decryption_error",INVALID_DID_ERROR:"invalid_did_error",NOT_ENOUGH_FUNDS_ERROR:"not_enough_error",INVALID_AMOUNT_ERROR:"invalid_amount_error",LOGIN_FAILED_ERROR:"login_failed",SIGNATURE_VERIFICATION_ERROR:"signature_verification_failure",CONFLICT_ERROR:"conflict_error",NOT_ENOUGH_PROOF_ERROR:"not_enough_proof_error",BAD_PATH_ERROR:"bad_path_error",VALIDATION_ERROR:"validation_error",PAYLOAD_TOO_LARGE_ERROR:"payload_too_large_error",PRECONDITION_FAILED_ERROR:"precondition_failed_error",UNKNOWN:"unknown"};Object.freeze(wd);class Xf extends Error{constructor(e){super();let n=e.message,r=`Error Code: ${e.code}`,i=this.stack;if(i)r+=`Stack Trace: +${i}`;else try{throw new Error}catch(s){i=s.stack}n+=` +If you believe this exception is caused by a bug in stacks.js, + please file a bug report: https://github.com/blockstack/stacks.js/issues + +${r}`,this.message=n,this.code=e.code,this.parameter=e.parameter?e.parameter:void 0}toString(){return`${super.toString()} + code: ${this.code} param: ${this.parameter?this.parameter:"n/a"}`}}class lj extends Xf{constructor(e,n=""){super({code:wd.MISSING_PARAMETER,message:n,parameter:e}),this.name="MissingParametersError"}}class SM extends Xf{constructor(e=""){super({code:wd.INVALID_DID_ERROR,message:e}),this.name="InvalidDIDError"}}class ry extends Xf{constructor(e){const n=`Failed to login: ${e}`;super({code:wd.LOGIN_FAILED_ERROR,message:n}),this.message=n,this.name="LoginFailedError"}}class xM extends Xf{constructor(e="Unable to decrypt cipher object."){super({code:wd.FAILED_DECRYPTION_ERROR,message:e}),this.message=e,this.name="FailedDecryptionError"}}class zS extends Xf{constructor(e){super({code:wd.INVALID_STATE,message:e}),this.message=e,this.name="InvalidStateError"}}class i0 extends Xf{constructor(e){super({code:wd.INVALID_STATE,message:e}),this.message=e,this.name="NoSessionDataError"}}const AM=["debug","info","warn","error","none"],HS={};for(let t=0;tparseInt(i,10)),r=e.split(".").map(i=>parseInt(i,10));for(let i=0;i=t.length&&r.push(0),n[i]{const n=(t+Math.random()*16)%16|0;return t=Math.floor(t/16),(e==="x"?n:n&3|8).toString(16)})}function fj(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unexpected runtime environment - no supported global scope (`window`, `self`, `global`) available")}function pj(t,e,n){return n?`Use of '${n}' requires \`${e}\` which is unavailable on the '${t}' object within the currently executing environment.`:`\`${e}\` is unavailable on the '${t}' object within the currently executing environment.`}function d2(t,{throwIfUnavailable:e,usageDesc:n,returnEmptyObject:r}={}){let i;try{if(i=fj(),i){const s=i[t];if(s)return s}}catch(s){$h.error(`Error getting object '${t}' from global scope '${i}': ${s}`)}if(e){const s=pj(i,t.toString(),n);throw $h.error(s),new Error(s)}if(r)return{}}function Ul(t,e){return h2(Si(t),e)}function Si(t){if(typeof t=="bigint")return t;if(typeof t=="string")return BigInt(t);if(typeof t=="number"){if(!Number.isInteger(t))throw new RangeError("Invalid value. Values of type 'number' must be an integer.");if(t>Number.MAX_SAFE_INTEGER)throw new RangeError(`Invalid value. Values of type 'number' must be less than or equal to ${Number.MAX_SAFE_INTEGER}. For larger values, try using a BigInt instead.`);return BigInt(t)}if(ts(t,Uint8Array))return BigInt(`0x${pt(t)}`);throw new TypeError("intToBigInt: Invalid value type. Must be a number, bigint, BigInt-compatible string, or Uint8Array.")}function gj(t){return/^0x/i.test(t)?t.slice(2):t}function CM(t){if(typeof t!="string")throw new TypeError(`hexToBigInt: expected string, got ${typeof t}`);return BigInt(`0x${t}`)}function s0(t,e=8){return(typeof t=="bigint"?t:Si(t)).toString(16).padStart(e*2,"0")}function Ob(t){return parseInt(t,16)}function h2(t,e=16){const n=s0(t,e);return Ft(n)}function mj(t,e){if(t<-(BigInt(1)<=BigInt(0)?BigInt(t):t+(BigInt(1)<e.toString(16).padStart(2,"0"));function pt(t){if(!(t instanceof Uint8Array))throw new Error("Uint8Array expected");let e="";for(const n of t)e+=vj[n];return e}function Ft(t){if(typeof t!="string")throw new TypeError(`hexToBytes: expected string, got ${typeof t}`);t=gj(t),t=t.length%2?`0${t}`:t;const e=new Uint8Array(t.length/2);for(let n=0;n255}function TM(t){if(t.some(_j))throw new Error("Some values are invalid bytes.");return new Uint8Array(t)}function Sa(...t){if(!t.every(r=>r instanceof Uint8Array))throw new Error("Uint8Array list expected");if(t.length===1)return t[0];const e=t.reduce((r,i)=>r+i.length,0),n=new Uint8Array(e);for(let r=0,i=0;rtypeof e=="number"?TM([e]):e instanceof Array?TM(e):e))}function ts(t,e){var n,r;return t instanceof e||((r=(n=t==null?void 0:t.constructor)==null?void 0:n.name)==null?void 0:r.toLowerCase())===e.name}const Sj="https://api.mainnet.hiro.so",xj="https://api.testnet.hiro.so",Aj="http://localhost:3999",Cj="https://hub.blockstack.org",Tj=33,tE=32;function Ij(t){if(t.length>>0}function Nj(t,e,n=0){return t[n+0]=e>>>8,t[n+1]=e>>>0,t}function Pj(t,e){return t[e]}function Dj(t,e,n=0){return t[n]=e,t}function Rj(t,e){return t[e]*2**24+t[e+1]*2**16+t[e+2]*2**8+t[e+3]}function nd(t,e,n=0){return t[n+3]=e,e>>>=8,t[n+2]=e,e>>>=8,t[n+1]=e,e>>>=8,t[n]=e,t}const Oj={referrerPolicy:"origin",headers:{"x-hiro-product":"stacksjs"}};async function Uj(t,e){const n={};return Object.assign(n,Oj,e),await fetch(t,n)}function Lj(t){let e=Uj,n=[];return t.length>0&&typeof t[0]=="function"&&(e=t.shift()),t.length>0&&(n=t),{fetchLib:e,middlewares:n}}function kj(...t){const{fetchLib:e,middlewares:n}=Lj(t);return async(i,s)=>{let o={url:i,init:s??{}};for(const c of n)typeof c.pre=="function"&&(o=await Promise.resolve(c.pre({fetch:e,...o}))??o);let a=await e(o.url,o.init);for(const c of n)typeof c.post=="function"&&(a=await Promise.resolve(c.post({fetch:e,url:o.url,init:o.init,response:(a==null?void 0:a.clone())??a}))??a);return a}}class lk{constructor(e=ck.slice(),n=(a=>(a=d2("location",{returnEmptyObject:!0}))==null?void 0:a.origin)(),r="",i="/manifest.json",s=void 0,o=sj){this.appDomain=n,this.scopes=e,this.redirectPath=r,this.manifestPath=i,this.coreNode=s,this.authenticatorURL=o}redirectURI(){return`${this.appDomain}${this.redirectPath}`}manifestURI(){return`${this.appDomain}${this.manifestPath}`}}function VS(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(`Wrong positive integer: ${t}`)}function $j(t){if(typeof t!="boolean")throw new Error(`Expected boolean, not ${t}`)}function uk(t,...e){if(!(t instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(e.length>0&&!e.includes(t.length))throw new TypeError(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}function Bj(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");VS(t.outputLen),VS(t.blockLen)}function Fj(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function zj(t,e){uk(t);const n=e.outputLen;if(t.lengthnew DataView(t.buffer,t.byteOffset,t.byteLength),Xo=(t,e)=>t<<32-e|t>>>e,Hj=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!Hj)throw new Error("Non little-endian hardware is not supported");Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function jj(t){if(typeof t!="string")throw new TypeError(`utf8ToBytes expected string, got ${typeof t}`);return new TextEncoder().encode(t)}function p2(t){if(typeof t=="string"&&(t=jj(t)),!(t instanceof Uint8Array))throw new TypeError(`Expected input type is Uint8Array (got ${typeof t})`);return t}let dk=class{clone(){return this._cloneInto()}};function vd(t){const e=r=>t().update(p2(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}class hk extends dk{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,Du.hash(e);const r=p2(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new TypeError("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,s=new Uint8Array(i);s.set(r.length>i?e.create().update(r).digest():r);for(let o=0;onew hk(t,e).update(n).digest();Zf.create=(t,e)=>new hk(t,e);function Vj(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const i=BigInt(32),s=BigInt(4294967295),o=Number(n>>i&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}let g2=class extends dk{constructor(e,n,r,i){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=nE(this.buffer)}update(e){Du.exists(this);const{view:n,buffer:r,blockLen:i}=this;e=p2(e);const s=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let d=o;du.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;dt&e^~t&n,Gj=(t,e,n)=>t&e^t&n^e&n,qj=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),xc=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Ac=new Uint32Array(64);let fk=class extends g2{constructor(){super(64,32,8,!1),this.A=xc[0]|0,this.B=xc[1]|0,this.C=xc[2]|0,this.D=xc[3]|0,this.E=xc[4]|0,this.F=xc[5]|0,this.G=xc[6]|0,this.H=xc[7]|0}get(){const{A:e,B:n,C:r,D:i,E:s,F:o,G:a,H:c}=this;return[e,n,r,i,s,o,a,c]}set(e,n,r,i,s,o,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=i|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,n){for(let d=0;d<16;d++,n+=4)Ac[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){const h=Ac[d-15],f=Ac[d-2],g=Xo(h,7)^Xo(h,18)^h>>>3,m=Xo(f,17)^Xo(f,19)^f>>>10;Ac[d]=m+Ac[d-7]+g+Ac[d-16]|0}let{A:r,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let d=0;d<64;d++){const h=Xo(a,6)^Xo(a,11)^Xo(a,25),f=u+h+Wj(a,c,l)+qj[d]+Ac[d]|0,m=(Xo(r,2)^Xo(r,13)^Xo(r,22))+Gj(r,i,s)|0;u=l,l=c,c=a,a=o+f|0,o=s,s=i,i=r,r=f+m|0}r=r+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,i,s,o,a,c,l,u)}roundClean(){Ac.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}},Kj=class extends fk{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}};const ro=vd(()=>new fk);vd(()=>new Kj);const Xj={},pk=Object.freeze(Object.defineProperty({__proto__:null,default:Xj},Symbol.toStringTag,{value:"Module"}));/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */const Xt=BigInt(0),jn=BigInt(1),dl=BigInt(2),Ag=BigInt(3),IM=BigInt(8),sr=Object.freeze({a:Xt,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:jn,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")}),MM=(t,e)=>(t+e/dl)/e,iy={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar(t){const{n:e}=sr,n=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-jn*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=n,o=BigInt("0x100000000000000000000000000000000"),a=MM(s*t,e),c=MM(-r*t,e);let l=We(t-a*n-c*i,e),u=We(-a*r-c*s,e);const d=l>o,h=u>o;if(d&&(l=e-l),h&&(u=e-u),l>o||u>o)throw new Error("splitScalarEndo: Endomorphism failed, k="+t);return{k1neg:d,k1:l,k2neg:h,k2:u}}},Do=32,yf=32,Yj=32,Mv=Do+1,Nv=2*Do+1;function NM(t){const{a:e,b:n}=sr,r=We(t*t),i=We(r*t);return We(i+e*t+n)}const sy=sr.a===Xt;class gk extends Error{constructor(e){super(e)}}function PM(t){if(!(t instanceof ln))throw new TypeError("JacobianPoint expected")}class ln{constructor(e,n,r){this.x=e,this.y=n,this.z=r}static fromAffine(e){if(!(e instanceof on))throw new TypeError("JacobianPoint#fromAffine: expected Point");return e.equals(on.ZERO)?ln.ZERO:new ln(e.x,e.y,jn)}static toAffineBatch(e){const n=t9(e.map(r=>r.z));return e.map((r,i)=>r.toAffine(n[i]))}static normalizeZ(e){return ln.toAffineBatch(e).map(ln.fromAffine)}equals(e){PM(e);const{x:n,y:r,z:i}=this,{x:s,y:o,z:a}=e,c=We(i*i),l=We(a*a),u=We(n*l),d=We(s*c),h=We(We(r*a)*l),f=We(We(o*i)*c);return u===d&&h===f}negate(){return new ln(this.x,We(-this.y),this.z)}double(){const{x:e,y:n,z:r}=this,i=We(e*e),s=We(n*n),o=We(s*s),a=e+s,c=We(dl*(We(a*a)-i-o)),l=We(Ag*i),u=We(l*l),d=We(u-dl*c),h=We(l*(c-d)-IM*o),f=We(dl*n*r);return new ln(d,h,f)}add(e){PM(e);const{x:n,y:r,z:i}=this,{x:s,y:o,z:a}=e;if(s===Xt||o===Xt)return this;if(n===Xt||r===Xt)return e;const c=We(i*i),l=We(a*a),u=We(n*l),d=We(s*c),h=We(We(r*a)*l),f=We(We(o*i)*c),g=We(d-u),m=We(f-h);if(g===Xt)return m===Xt?this.double():ln.ZERO;const y=We(g*g),p=We(g*y),v=We(u*y),w=We(m*m-p-dl*v),b=We(m*(v-w)-h*p),S=We(i*a*g);return new ln(w,b,S)}subtract(e){return this.add(e.negate())}multiplyUnsafe(e){const n=ln.ZERO;if(typeof e=="bigint"&&e===Xt)return n;let r=OM(e);if(r===jn)return this;if(!sy){let d=n,h=this;for(;r>Xt;)r&jn&&(d=d.add(h)),h=h.double(),r>>=jn;return d}let{k1neg:i,k1:s,k2neg:o,k2:a}=iy.splitScalar(r),c=n,l=n,u=this;for(;s>Xt||a>Xt;)s&jn&&(c=c.add(u)),a&jn&&(l=l.add(u)),u=u.double(),s>>=jn,a>>=jn;return i&&(c=c.negate()),o&&(l=l.negate()),l=new ln(We(l.x*iy.beta),l.y,l.z),c.add(l)}precomputeWindow(e){const n=sy?128/e+1:256/e+1,r=[];let i=this,s=i;for(let o=0;o>=d,g>c&&(g-=u,e+=jn);const m=f,y=f+Math.abs(g)-1,p=h%2!==0,v=g<0;g===0?o=o.add(oy(p,i[m])):s=s.add(oy(v,i[y]))}return{p:s,f:o}}multiply(e,n){let r=OM(e),i,s;if(sy){const{k1neg:o,k1:a,k2neg:c,k2:l}=iy.splitScalar(r);let{p:u,f:d}=this.wNAF(a,n),{p:h,f}=this.wNAF(l,n);u=oy(o,u),h=oy(c,h),h=new ln(We(h.x*iy.beta),h.y,h.z),i=u.add(h),s=d.add(f)}else{const{p:o,f:a}=this.wNAF(r,n);i=o,s=a}return ln.normalizeZ([i,s])[0]}toAffine(e){const{x:n,y:r,z:i}=this,s=this.equals(ln.ZERO);e==null&&(e=s?IM:o0(i));const o=e,a=We(o*o),c=We(a*o),l=We(n*a),u=We(r*c),d=We(i*o);if(s)return on.ZERO;if(d!==jn)throw new Error("invZ was invalid");return new on(l,u)}}ln.BASE=new ln(sr.Gx,sr.Gy,jn);ln.ZERO=new ln(Xt,jn,Xt);function oy(t,e){const n=e.negate();return t?n:e}const WS=new WeakMap;class on{constructor(e,n){this.x=e,this.y=n}_setWindowSize(e){this._WINDOW_SIZE=e,WS.delete(this)}hasEvenY(){return this.y%dl===Xt}static fromCompressedHex(e){const n=e.length===32,r=Sl(n?e:e.subarray(1));if(!rE(r))throw new Error("Point is not on curve");const i=NM(r);let s=e9(i);const o=(s&jn)===jn;n?o&&(s=We(-s)):(e[0]&1)===1!==o&&(s=We(-s));const a=new on(r,s);return a.assertValidity(),a}static fromUncompressedHex(e){const n=Sl(e.subarray(1,Do+1)),r=Sl(e.subarray(Do+1,Do*2+1)),i=new on(n,r);return i.assertValidity(),i}static fromHex(e){const n=om(e),r=n.length,i=n[0];if(r===Do)return this.fromCompressedHex(n);if(r===Mv&&(i===2||i===3))return this.fromCompressedHex(n);if(r===Nv&&i===4)return this.fromUncompressedHex(n);throw new Error(`Point.fromHex: received invalid point. Expected 32-${Mv} compressed bytes or ${Nv} uncompressed bytes, not ${r}`)}static fromPrivateKey(e){return on.BASE.multiply(cm(e))}static fromSignature(e,n,r){const{r:i,s}=o9(n);if(![0,1,2,3].includes(r))throw new Error("Cannot recover: invalid recovery bit");const o=mk(om(e)),{n:a}=sr,c=r===2||r===3?i+a:i,l=o0(c,a),u=We(-o*l,a),d=We(s*l,a),h=r&1?"03":"02",f=on.fromHex(h+ef(c)),g=on.BASE.multiplyAndAddUnsafe(f,u,d);if(!g)throw new Error("Cannot recover signature: point at infinify");return g.assertValidity(),g}toRawBytes(e=!1){return Wu(this.toHex(e))}toHex(e=!1){const n=ef(this.x);return e?`${this.hasEvenY()?"02":"03"}${n}`:`04${n}${ef(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const e="Point is not on elliptic curve",{x:n,y:r}=this;if(!rE(n)||!rE(r))throw new Error(e);const i=We(r*r),s=NM(n);if(We(i-s)!==Xt)throw new Error(e)}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new on(this.x,We(-this.y))}double(){return ln.fromAffine(this).double().toAffine()}add(e){return ln.fromAffine(this).add(ln.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return ln.fromAffine(this).multiply(e,this).toAffine()}multiplyAndAddUnsafe(e,n,r){const i=ln.fromAffine(this),s=n===Xt||n===jn||this!==on.BASE?i.multiplyUnsafe(n):i.multiply(n),o=ln.fromAffine(e).multiplyUnsafe(r),a=s.add(o);return a.equals(ln.ZERO)?void 0:a.toAffine()}}on.BASE=new on(sr.Gx,sr.Gy);on.ZERO=new on(Xt,Xt);function DM(t){return Number.parseInt(t[0],16)>=8?"00"+t:t}function RM(t){if(t.length<2||t[0]!==2)throw new Error(`Invalid signature integer tag: ${wf(t)}`);const e=t[1],n=t.subarray(2,e+2);if(!e||n.length!==e)throw new Error("Invalid signature integer: wrong length");if(n[0]===0&&n[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Sl(n),left:t.subarray(e+2)}}function Zj(t){if(t.length<2||t[0]!=48)throw new Error(`Invalid signature tag: ${wf(t)}`);if(t[1]!==t.length-2)throw new Error("Invalid signature: incorrect length");const{data:e,left:n}=RM(t.subarray(2)),{data:r,left:i}=RM(n);if(i.length)throw new Error(`Invalid signature: left bytes after parsing: ${wf(i)}`);return{r:e,s:r}}class eo{constructor(e,n){this.r=e,this.s=n,this.assertValidity()}static fromCompact(e){const n=e instanceof Uint8Array,r="Signature.fromCompact";if(typeof e!="string"&&!n)throw new TypeError(`${r}: Expected string or Uint8Array`);const i=n?wf(e):e;if(i.length!==128)throw new Error(`${r}: Expected 64-byte hex`);return new eo(Pv(i.slice(0,64)),Pv(i.slice(64,128)))}static fromDER(e){const n=e instanceof Uint8Array;if(typeof e!="string"&&!n)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r,s:i}=Zj(n?e:Wu(e));return new eo(r,i)}static fromHex(e){return this.fromDER(e)}assertValidity(){const{r:e,s:n}=this;if(!am(e))throw new Error("Invalid Signature: r must be 0 < r < n");if(!am(n))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const e=sr.n>>jn;return this.s>e}normalizeS(){return this.hasHighS()?new eo(this.r,We(-this.s,sr.n)):this}toDERRawBytes(){return Wu(this.toDERHex())}toDERHex(){const e=DM(Ep(this.s)),n=DM(Ep(this.r)),r=e.length/2,i=n.length/2,s=Ep(r),o=Ep(i);return`30${Ep(i+r+4)}02${o}${n}02${s}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return Wu(this.toCompactHex())}toCompactHex(){return ef(this.r)+ef(this.s)}}function il(...t){if(!t.every(r=>r instanceof Uint8Array))throw new Error("Uint8Array list expected");if(t.length===1)return t[0];const e=t.reduce((r,i)=>r+i.length,0),n=new Uint8Array(e);for(let r=0,i=0;re.toString(16).padStart(2,"0"));function wf(t){if(!(t instanceof Uint8Array))throw new Error("Expected Uint8Array");let e="";for(let n=0;n0)return BigInt(t);if(typeof t=="bigint"&&am(t))return t;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function We(t,e=sr.P){const n=t%e;return n>=Xt?n:e+n}function Rs(t,e){const{P:n}=sr;let r=t;for(;e-- >Xt;)r*=r,r%=n;return r}function e9(t){const{P:e}=sr,n=BigInt(6),r=BigInt(11),i=BigInt(22),s=BigInt(23),o=BigInt(44),a=BigInt(88),c=t*t*t%e,l=c*c*t%e,u=Rs(l,Ag)*l%e,d=Rs(u,Ag)*l%e,h=Rs(d,dl)*c%e,f=Rs(h,r)*h%e,g=Rs(f,i)*f%e,m=Rs(g,o)*g%e,y=Rs(m,a)*m%e,p=Rs(y,o)*g%e,v=Rs(p,Ag)*l%e,w=Rs(v,s)*f%e,b=Rs(w,n)*c%e,S=Rs(b,dl);if(S*S%e!==t)throw new Error("Cannot find square root");return S}function o0(t,e=sr.P){if(t===Xt||e<=Xt)throw new Error(`invert: expected positive integers, got n=${t} mod=${e}`);let n=We(t,e),r=e,i=Xt,s=jn;for(;n!==Xt;){const a=r/n,c=r%n,l=i-s*a;r=n,n=c,i=s,s=l}if(r!==jn)throw new Error("invert: does not exist");return We(i,e)}function t9(t,e=sr.P){const n=new Array(t.length),r=t.reduce((s,o,a)=>o===Xt?s:(n[a]=s,We(s*o,e)),jn),i=o0(r,e);return t.reduceRight((s,o,a)=>o===Xt?s:(n[a]=We(s*n[a],e),We(s*o,e)),i),n}function n9(t){const e=t.length*8-yf*8,n=Sl(t);return e>0?n>>BigInt(e):n}function mk(t,e=!1){const n=n9(t);if(e)return n;const{n:r}=sr;return n>=r?n-r:n}let tf,Cg;class r9{constructor(e,n){if(this.hashLen=e,this.qByteLen=n,typeof e!="number"||e<2)throw new Error("hashLen must be a number");if(typeof n!="number"||n<2)throw new Error("qByteLen must be a number");this.v=new Uint8Array(e).fill(1),this.k=new Uint8Array(e).fill(0),this.counter=0}hmac(...e){return vi.hmacSha256(this.k,...e)}hmacSync(...e){return Cg(this.k,...e)}checkSync(){if(typeof Cg!="function")throw new gk("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(e=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),e),this.v=await this.hmac(this.v),e.length!==0&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),e),this.v=await this.hmac(this.v))}reseedSync(e=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),e),this.v=this.hmacSync(this.v),e.length!==0&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),e),this.v=this.hmacSync(this.v))}async generate(){this.incr();let e=0;const n=[];for(;e0)e=BigInt(t);else if(typeof t=="string"){if(t.length!==2*yf)throw new Error("Expected 32 bytes of private key");e=Pv(t)}else if(t instanceof Uint8Array){if(t.length!==yf)throw new Error("Expected 32 bytes of private key");e=Sl(t)}else throw new TypeError("Expected valid private key");if(!am(e))throw new Error("Expected private key: 0 < key < n");return e}function s9(t){return t instanceof on?(t.assertValidity(),t):on.fromHex(t)}function o9(t){if(t instanceof eo)return t.assertValidity(),t;try{return eo.fromDER(t)}catch{return eo.fromCompact(t)}}function Ub(t,e=!1){return on.fromPrivateKey(t).toRawBytes(e)}function UM(t){const e=t instanceof Uint8Array,n=typeof t=="string",r=(e||n)&&t.length;return e?r===Mv||r===Nv:n?r===Mv*2||r===Nv*2:t instanceof on}function yk(t,e,n=!1){if(UM(t))throw new TypeError("getSharedSecret: first arg must be private key");if(!UM(e))throw new TypeError("getSharedSecret: second arg must be public key");const r=s9(e);return r.assertValidity(),r.multiply(cm(t)).toRawBytes(n)}function wk(t){const e=t.length>Do?t.slice(0,Do):t;return Sl(e)}function a9(t){const e=wk(t),n=We(e,sr.n);return vk(n{t=om(t);const e=yf+8;if(t.length1024)throw new Error("Expected valid bytes of private key as per FIPS 186");const n=We(Sl(t),sr.n-jn)+jn;return GS(n)},randomBytes:(t=32)=>{if(is.web)return is.web.getRandomValues(new Uint8Array(t));if(is.node){const{randomBytes:e}=is.node;return Uint8Array.from(e(t))}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>vi.hashToPrivateKey(vi.randomBytes(yf+8)),precompute(t=8,e=on.BASE){const n=e===on.BASE?e:new on(e.x,e.y);return n._setWindowSize(t),n.multiply(Ag),n},sha256:async(...t)=>{if(is.web){const e=await is.web.subtle.digest("SHA-256",il(...t));return new Uint8Array(e)}else if(is.node){const{createHash:e}=is.node,n=e("sha256");return t.forEach(r=>n.update(r)),Uint8Array.from(n.digest())}else throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(t,...e)=>{if(is.web){const n=await is.web.subtle.importKey("raw",t,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),r=il(...e),i=await is.web.subtle.sign("HMAC",n,r);return new Uint8Array(i)}else if(is.node){const{createHmac:n}=is.node,r=n("sha256",t);return e.forEach(i=>r.update(i)),Uint8Array.from(r.digest())}else throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(t,...e)=>{let n=ay[t];if(n===void 0){const r=await vi.sha256(Uint8Array.from(t,i=>i.charCodeAt(0)));n=il(r,r),ay[t]=n}return vi.sha256(n,...e)},taggedHashSync:(t,...e)=>{if(typeof tf!="function")throw new gk("sha256Sync is undefined, you need to set it");let n=ay[t];if(n===void 0){const r=tf(Uint8Array.from(t,i=>i.charCodeAt(0)));n=il(r,r),ay[t]=n}return tf(n,...e)},_JacobianPoint:ln};Object.defineProperties(vi,{sha256Sync:{configurable:!1,get(){return tf},set(t){tf||(tf=t)}},hmacSha256Sync:{configurable:!1,get(){return Cg},set(t){Cg||(Cg=t)}}});var a0={};a0.byteLength=p9;var u9=a0.toByteArray=m9,d9=a0.fromByteArray=v9,da=[],Hs=[],h9=typeof Uint8Array<"u"?Uint8Array:Array,iE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var Od=0,f9=iE.length;Od0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");n===-1&&(n=e);var r=n===e?0:4-n%4;return[n,r]}function p9(t){var e=bk(t),n=e[0],r=e[1];return(n+r)*3/4-r}function g9(t,e,n){return(e+n)*3/4-n}function m9(t){var e,n=bk(t),r=n[0],i=n[1],s=new h9(g9(t,r,i)),o=0,a=i>0?r-4:r,c;for(c=0;c>16&255,s[o++]=e>>8&255,s[o++]=e&255;return i===2&&(e=Hs[t.charCodeAt(c)]<<2|Hs[t.charCodeAt(c+1)]>>4,s[o++]=e&255),i===1&&(e=Hs[t.charCodeAt(c)]<<10|Hs[t.charCodeAt(c+1)]<<4|Hs[t.charCodeAt(c+2)]>>2,s[o++]=e>>8&255,s[o++]=e&255),s}function y9(t){return da[t>>18&63]+da[t>>12&63]+da[t>>6&63]+da[t&63]}function w9(t,e,n){for(var r,i=[],s=e;sa?a:o+s));return r===1?(e=t[n-1],i.push(da[e>>2]+da[e<<4&63]+"==")):r===2&&(e=(t[n-2]<<8)+t[n-1],i.push(da[e>>10]+da[e>>4&63]+da[e<<2&63]+"=")),i.join("")}function b9(){return typeof crypto<"u"&&typeof crypto.subtle<"u"}const E9='Crypto lib not found. Either the WebCrypto "crypto.subtle" or Node.js "crypto" module must be available.';async function _9(){if(b9())return{lib:crypto.subtle,name:"subtleCrypto"};try{return{lib:require("crypto"),name:"nodeCrypto"}}catch{throw new Error(E9)}}class S9{constructor(e,n){this.createCipher=e,this.createDecipher=n}async encrypt(e,n,r,i){if(e!=="aes-128-cbc"&&e!=="aes-256-cbc")throw new Error(`Unsupported cipher algorithm "${e}"`);const s=this.createCipher(e,n,r),o=new Uint8Array(Sa(s.update(i),s.final()));return Promise.resolve(o)}async decrypt(e,n,r,i){if(e!=="aes-128-cbc"&&e!=="aes-256-cbc")throw new Error(`Unsupported cipher algorithm "${e}"`);const s=this.createDecipher(e,n,r),o=new Uint8Array(Sa(s.update(i),s.final()));return Promise.resolve(o)}}class x9{constructor(e){this.subtleCrypto=e}async encrypt(e,n,r,i){let s,o;if(e==="aes-128-cbc")s="AES-CBC",o=128;else if(e==="aes-256-cbc")s="AES-CBC",o=256;else throw new Error(`Unsupported cipher algorithm "${e}"`);const a=await this.subtleCrypto.importKey("raw",n,{name:s,length:o},!1,["encrypt"]),c=await this.subtleCrypto.encrypt({name:s,iv:r},a,i);return new Uint8Array(c)}async decrypt(e,n,r,i){let s,o;if(e==="aes-128-cbc")s="AES-CBC",o=128;else if(e==="aes-256-cbc")s="AES-CBC",o=256;else throw new Error(`Unsupported cipher algorithm "${e}"`);const a=await this.subtleCrypto.importKey("raw",n,{name:s,length:o},!1,["decrypt"]),c=await this.subtleCrypto.decrypt({name:s,iv:r},a,i);return new Uint8Array(c)}}async function Ek(){const t=await _9();return t.name==="subtleCrypto"?new x9(t.lib):new S9(t.lib.createCipheriv,t.lib.createDecipheriv)}function A9(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n>>0,w=new Uint8Array(v);y!==p;){for(var b=f[y],S=0,x=v-1;(b!==0||S>>0,w[x]=b%o>>>0,b=b/o>>>0;if(b!==0)throw new Error("Non-zero carry");m=S,y++}for(var T=v-m;T!==v&&w[T]===0;)T++;for(var N=a.repeat(g);T>>0,v=new Uint8Array(p);f[g];){var w=f.charCodeAt(g);if(w>255)return;var b=e[w];if(b===255)return;for(var S=0,x=p-1;(b!==0||S>>0,v[x]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");y=S,g++}for(var T=p-y;T!==p&&v[T]===0;)T++;for(var N=new Uint8Array(m+(p-T)),_=m;T!==p;)N[_++]=v[T++];return N}function h(f){var g=d(f);if(g)return g;throw new Error("Non-base"+o+" character")}return{encode:u,decodeUnsafe:d,decode:h}}var _k=A9;const C9=_k,T9="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var I9=C9(T9);const M9=Wf(I9),N9=new Uint8Array([7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8]),Sk=Uint8Array.from({length:16},(t,e)=>e),P9=Sk.map(t=>(9*t+5)%16);let y2=[Sk],w2=[P9];for(let t=0;t<4;t++)for(let e of[y2,w2])e.push(e[t].map(n=>N9[n]));const xk=[[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8],[12,13,11,15,6,9,9,7,12,15,11,13,7,8,7,7],[13,15,14,11,7,7,6,8,13,14,13,12,5,5,6,9],[14,11,12,14,8,6,5,5,15,12,15,14,9,9,8,6],[15,12,13,13,9,5,8,6,14,11,12,11,8,6,5,5]].map(t=>new Uint8Array(t)),D9=y2.map((t,e)=>t.map(n=>xk[e][n])),R9=w2.map((t,e)=>t.map(n=>xk[e][n])),O9=new Uint32Array([0,1518500249,1859775393,2400959708,2840853838]),U9=new Uint32Array([1352829926,1548603684,1836072691,2053994217,0]),cy=(t,e)=>t<>>32-e;function LM(t,e,n,r){return t===0?e^n^r:t===1?e&n|~e&r:t===2?(e|~n)^r:t===3?e&r|n&~r:e^(n|~r)}const ly=new Uint32Array(16);class L9 extends g2{constructor(){super(64,20,8,!0),this.h0=1732584193,this.h1=-271733879,this.h2=-1732584194,this.h3=271733878,this.h4=-1009589776}get(){const{h0:e,h1:n,h2:r,h3:i,h4:s}=this;return[e,n,r,i,s]}set(e,n,r,i,s){this.h0=e|0,this.h1=n|0,this.h2=r|0,this.h3=i|0,this.h4=s|0}process(e,n){for(let f=0;f<16;f++,n+=4)ly[f]=e.getUint32(n,!0);let r=this.h0|0,i=r,s=this.h1|0,o=s,a=this.h2|0,c=a,l=this.h3|0,u=l,d=this.h4|0,h=d;for(let f=0;f<5;f++){const g=4-f,m=O9[f],y=U9[f],p=y2[f],v=w2[f],w=D9[f],b=R9[f];for(let S=0;S<16;S++){const x=cy(r+LM(f,s,a,l)+ly[p[S]]+m,w[S])+d|0;r=d,d=l,l=cy(a,10)|0,a=s,s=x}for(let S=0;S<16;S++){const x=cy(i+LM(g,o,c,u)+ly[v[S]]+y,b[S])+h|0;i=h,h=u,u=cy(c,10)|0,c=o,o=x}}this.set(this.h1+a+u|0,this.h2+l+h|0,this.h3+d+i|0,this.h4+r+o|0,this.h0+s+c|0)}roundClean(){ly.fill(0)}destroy(){this.destroyed=!0,this.buffer.fill(0),this.set(0,0,0,0,0)}}const v2=vd(()=>new L9);function k9(t){return v2(t)}const uy=BigInt(2**32-1),qS=BigInt(32);function Ak(t,e=!1){return e?{h:Number(t&uy),l:Number(t>>qS&uy)}:{h:Number(t>>qS&uy)|0,l:Number(t&uy)|0}}function $9(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;iBigInt(t>>>0)<>>0),F9=(t,e,n)=>t>>>n,z9=(t,e,n)=>t<<32-n|e>>>n,H9=(t,e,n)=>t>>>n|e<<32-n,j9=(t,e,n)=>t<<32-n|e>>>n,V9=(t,e,n)=>t<<64-n|e>>>n-32,W9=(t,e,n)=>t>>>n-32|e<<64-n,G9=(t,e)=>e,q9=(t,e)=>t,K9=(t,e,n)=>t<>>32-n,X9=(t,e,n)=>e<>>32-n,Y9=(t,e,n)=>e<>>64-n,Z9=(t,e,n)=>t<>>64-n;function J9(t,e,n,r){const i=(e>>>0)+(r>>>0);return{h:t+n+(i/2**32|0)|0,l:i|0}}const Q9=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),e7=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,t7=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),n7=(t,e,n,r,i)=>e+n+r+i+(t/2**32|0)|0,r7=(t,e,n,r,i)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(i>>>0),i7=(t,e,n,r,i,s)=>e+n+r+i+s+(t/2**32|0)|0,It={fromBig:Ak,split:$9,toBig:B9,shrSH:F9,shrSL:z9,rotrSH:H9,rotrSL:j9,rotrBH:V9,rotrBL:W9,rotr32H:G9,rotr32L:q9,rotlSH:K9,rotlSL:X9,rotlBH:Y9,rotlBL:Z9,add:J9,add3L:Q9,add3H:e7,add4L:t7,add4H:n7,add5H:i7,add5L:r7},[s7,o7]=It.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),Cc=new Uint32Array(80),Tc=new Uint32Array(80);class Lb extends g2{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:e,Al:n,Bh:r,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:h,Gh:f,Gl:g,Hh:m,Hl:y}=this;return[e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y]}set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=h|0,this.Gh=f|0,this.Gl=g|0,this.Hh=m|0,this.Hl=y|0}process(e,n){for(let w=0;w<16;w++,n+=4)Cc[w]=e.getUint32(n),Tc[w]=e.getUint32(n+=4);for(let w=16;w<80;w++){const b=Cc[w-15]|0,S=Tc[w-15]|0,x=It.rotrSH(b,S,1)^It.rotrSH(b,S,8)^It.shrSH(b,S,7),T=It.rotrSL(b,S,1)^It.rotrSL(b,S,8)^It.shrSL(b,S,7),N=Cc[w-2]|0,_=Tc[w-2]|0,E=It.rotrSH(N,_,19)^It.rotrBH(N,_,61)^It.shrSH(N,_,6),A=It.rotrSL(N,_,19)^It.rotrBL(N,_,61)^It.shrSL(N,_,6),L=It.add4L(T,A,Tc[w-7],Tc[w-16]),$=It.add4H(L,x,E,Cc[w-7],Cc[w-16]);Cc[w]=$|0,Tc[w]=L|0}let{Ah:r,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:h,Fh:f,Fl:g,Gh:m,Gl:y,Hh:p,Hl:v}=this;for(let w=0;w<80;w++){const b=It.rotrSH(d,h,14)^It.rotrSH(d,h,18)^It.rotrBH(d,h,41),S=It.rotrSL(d,h,14)^It.rotrSL(d,h,18)^It.rotrBL(d,h,41),x=d&f^~d&m,T=h&g^~h&y,N=It.add5L(v,S,T,o7[w],Tc[w]),_=It.add5H(N,p,b,x,s7[w],Cc[w]),E=N|0,A=It.rotrSH(r,i,28)^It.rotrBH(r,i,34)^It.rotrBH(r,i,39),L=It.rotrSL(r,i,28)^It.rotrBL(r,i,34)^It.rotrBL(r,i,39),$=r&s^r&a^s&a,W=i&o^i&c^o&c;p=m|0,v=y|0,m=f|0,y=g|0,f=d|0,g=h|0,{h:d,l:h}=It.add(l|0,u|0,_|0,E|0),l=a|0,u=c|0,a=s|0,c=o|0,s=r|0,o=i|0;const C=It.add3L(E,L,W);r=It.add3H(C,_,A,$),i=C|0}({h:r,l:i}=It.add(this.Ah|0,this.Al|0,r|0,i|0)),{h:s,l:o}=It.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=It.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=It.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:d,l:h}=It.add(this.Eh|0,this.El|0,d|0,h|0),{h:f,l:g}=It.add(this.Fh|0,this.Fl|0,f|0,g|0),{h:m,l:y}=It.add(this.Gh|0,this.Gl|0,m|0,y|0),{h:p,l:v}=It.add(this.Hh|0,this.Hl|0,p|0,v|0),this.set(r,i,s,o,a,c,l,u,d,h,f,g,m,y,p,v)}roundClean(){Cc.fill(0),Tc.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class a7 extends Lb{constructor(){super(),this.Ah=-1942145080,this.Al=424955298,this.Bh=1944164710,this.Bl=-1982016298,this.Ch=502970286,this.Cl=855612546,this.Dh=1738396948,this.Dl=1479516111,this.Eh=258812777,this.El=2077511080,this.Fh=2011393907,this.Fl=79989058,this.Gh=1067287976,this.Gl=1780299464,this.Hh=286451373,this.Hl=-1848208735,this.outputLen=28}}class c7 extends Lb{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class l7 extends Lb{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const u7=vd(()=>new Lb);vd(()=>new a7);const Ck=vd(()=>new c7);vd(()=>new l7);function Tk(t){return ro(t)}function d7(t){return u7(t)}const h7=0;vi.hmacSha256Sync=(t,...e)=>{const n=Zf.create(ro,t);return e.forEach(r=>n.update(r)),n.digest()};function f7(){return pt(vi.randomPrivateKey())}function p7(t){const e=ro(ro(t));return M9.encode(Sa(t,e).slice(0,t.length+4))}function g7(t,e){return p7(Sa(new Uint8Array([t]),e.slice(0,20)))}function Ik(t,e=h7){const n=typeof t=="string"?Ft(t):t,r=k9(Tk(n));return g7(e,r)}function Mk(t){const e=f2(t);return pt(Ub(e.slice(0,32),!0))}vi.hmacSha256Sync=(t,...e)=>{const n=Zf.create(ro,t);return e.forEach(r=>n.update(r)),n.digest()};var Dv;(function(t){t.InvalidFormat="InvalidFormat",t.IsNotPoint="IsNotPoint"})(Dv||(Dv={}));async function m7(t,e,n){return await(await Ek()).encrypt("aes-256-cbc",e,t,n)}async function y7(t,e,n){return await(await Ek()).decrypt("aes-256-cbc",e,t,n)}function Nk(t,e){return Zf(ro,t,e)}function w7(t,e){if(t.length!==e.length)return!1;let n=0;for(let r=0;r0&&!e.includes(t.length))throw new TypeError(`Expected Uint8Array of length ${e}, not of length=${t.length}`)}li.bytes=b2;function Ok(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Rv(t.outputLen),Rv(t.blockLen)}li.hash=Ok;function Uk(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}li.exists=Uk;function Lk(t,e){b2(t);const n=e.outputLen;if(t.lengthnew Uint8Array(b.buffer,b.byteOffset,b.byteLength);t.u8=n;const r=b=>new Uint32Array(b.buffer,b.byteOffset,Math.floor(b.byteLength/4));t.u32=r;const i=b=>new DataView(b.buffer,b.byteOffset,b.byteLength);t.createView=i;const s=(b,S)=>b<<32-S|b>>>S;if(t.rotr=s,t.isLE=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68,!t.isLE)throw new Error("Non little-endian hardware is not supported");const o=Array.from({length:256},(b,S)=>S.toString(16).padStart(2,"0"));function a(b){if(!(b instanceof Uint8Array))throw new Error("Uint8Array expected");let S="";for(let x=0;x{};t.nextTick=l;async function u(b,S,x){let T=Date.now();for(let N=0;N=0&&_T instanceof Uint8Array))throw new Error("Uint8Array list expected");if(b.length===1)return b[0];const S=b.reduce((T,N)=>T+N.length,0),x=new Uint8Array(S);for(let T=0,N=0;TObject.prototype.toString.call(b)==="[object Object]"&&b.constructor===Object;function y(b,S){if(S!==void 0&&(typeof S!="object"||!m(S)))throw new TypeError("Options should be object or undefined");return Object.assign(b,S)}t.checkOpts=y;function p(b){const S=T=>b().update(h(T)).digest(),x=b();return S.outputLen=x.outputLen,S.blockLen=x.blockLen,S.create=()=>b(),S}t.wrapConstructor=p;function v(b){const S=(T,N)=>b(N).update(h(T)).digest(),x=b({});return S.outputLen=x.outputLen,S.blockLen=x.blockLen,S.create=T=>b(T),S}t.wrapConstructorWithOpts=v;function w(b=32){if(e.crypto.web)return e.crypto.web.getRandomValues(new Uint8Array(b));if(e.crypto.node)return new Uint8Array(e.crypto.node.randomBytes(b).buffer);throw new Error("The environment doesn't have randomBytes function")}t.randomBytes=w})(bc);(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.hmac=void 0;const e=li,n=bc;class r extends n.Hash{constructor(o,a){super(),this.finished=!1,this.destroyed=!1,e.default.hash(o);const c=(0,n.toBytes)(a);if(this.iHash=o.create(),typeof this.iHash.update!="function")throw new TypeError("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const l=this.blockLen,u=new Uint8Array(l);u.set(c.length>l?o.create().update(c).digest():c);for(let d=0;dnew r(s,o).update(a).digest();t.hmac=i,t.hmac.create=(s,o)=>new r(s,o)})(kk);var fc={},$b={};Object.defineProperty($b,"__esModule",{value:!0});$b.SHA2=void 0;const sE=li,_p=bc;function C7(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const i=BigInt(32),s=BigInt(4294967295),o=Number(n>>i&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}class T7 extends _p.Hash{constructor(e,n,r,i){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=(0,_p.createView)(this.buffer)}update(e){sE.default.exists(this);const{view:n,buffer:r,blockLen:i}=this;e=(0,_p.toBytes)(e);const s=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let d=o;du.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;dt&e^~t&n,N7=(t,e,n)=>t&e^t&n^e&n,P7=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ic=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Mc=new Uint32Array(64);class $k extends I7.SHA2{constructor(){super(64,32,8,!1),this.A=Ic[0]|0,this.B=Ic[1]|0,this.C=Ic[2]|0,this.D=Ic[3]|0,this.E=Ic[4]|0,this.F=Ic[5]|0,this.G=Ic[6]|0,this.H=Ic[7]|0}get(){const{A:e,B:n,C:r,D:i,E:s,F:o,G:a,H:c}=this;return[e,n,r,i,s,o,a,c]}set(e,n,r,i,s,o,a,c){this.A=e|0,this.B=n|0,this.C=r|0,this.D=i|0,this.E=s|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,n){for(let d=0;d<16;d++,n+=4)Mc[d]=e.getUint32(n,!1);for(let d=16;d<64;d++){const h=Mc[d-15],f=Mc[d-2],g=(0,Fs.rotr)(h,7)^(0,Fs.rotr)(h,18)^h>>>3,m=(0,Fs.rotr)(f,17)^(0,Fs.rotr)(f,19)^f>>>10;Mc[d]=m+Mc[d-7]+g+Mc[d-16]|0}let{A:r,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let d=0;d<64;d++){const h=(0,Fs.rotr)(a,6)^(0,Fs.rotr)(a,11)^(0,Fs.rotr)(a,25),f=u+h+M7(a,c,l)+P7[d]+Mc[d]|0,m=((0,Fs.rotr)(r,2)^(0,Fs.rotr)(r,13)^(0,Fs.rotr)(r,22))+N7(r,i,s)|0;u=l,l=c,c=a,a=o+f|0,o=s,s=i,i=r,r=f+m|0}r=r+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,i,s,o,a,c,l,u)}roundClean(){Mc.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}class D7 extends $k{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}fc.sha256=(0,Fs.wrapConstructor)(()=>new $k);fc.sha224=(0,Fs.wrapConstructor)(()=>new D7);var io={},vf={},wi={};Object.defineProperty(wi,"__esModule",{value:!0});wi.decode=wi.encode=wi.unescape=wi.escape=wi.pad=void 0;const Bk=a0;function E2(t){return`${t}${"=".repeat(4-(t.length%4||4))}`}wi.pad=E2;function Fk(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}wi.escape=Fk;function zk(t){return E2(t).replace(/-/g,"+").replace(/_/g,"/")}wi.unescape=zk;function R7(t){return Fk((0,Bk.fromByteArray)(new TextEncoder().encode(t)))}wi.encode=R7;function O7(t){return new TextDecoder().decode((0,Bk.toByteArray)(E2(zk(t))))}wi.decode=O7;var Bb={},Fb={},Hk={};const jk=XO(pk);(function(t){/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */Object.defineProperty(t,"__esModule",{value:!0}),t.utils=t.schnorr=t.verify=t.signSync=t.sign=t.getSharedSecret=t.recoverPublicKey=t.getPublicKey=t.Signature=t.Point=t.CURVE=void 0;const e=jk,n=BigInt(0),r=BigInt(1),i=BigInt(2),s=BigInt(3),o=BigInt(8),a=Object.freeze({a:n,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:r,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")});t.CURVE=a;const c=(j,U)=>(j+U/i)/U,l={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar(j){const{n:U}=a,V=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),K=-r*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),oe=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),fe=V,Me=BigInt("0x100000000000000000000000000000000"),Oe=c(fe*j,U),Qe=c(-K*j,U);let et=X(j-Oe*V-Qe*oe,U),yt=X(-Oe*K-Qe*fe,U);const wt=et>Me,Tt=yt>Me;if(wt&&(et=U-et),Tt&&(yt=U-yt),et>Me||yt>Me)throw new Error("splitScalarEndo: Endomorphism failed, k="+j);return{k1neg:wt,k1:et,k2neg:Tt,k2:yt}}},u=32,d=32,h=32,f=u+1,g=2*u+1;function m(j){const{a:U,b:V}=a,K=X(j*j),oe=X(K*j);return X(oe+U*j+V)}const y=a.a===n;class p extends Error{constructor(U){super(U)}}function v(j){if(!(j instanceof w))throw new TypeError("JacobianPoint expected")}class w{constructor(U,V,K){this.x=U,this.y=V,this.z=K}static fromAffine(U){if(!(U instanceof x))throw new TypeError("JacobianPoint#fromAffine: expected Point");return U.equals(x.ZERO)?w.ZERO:new w(U.x,U.y,r)}static toAffineBatch(U){const V=ge(U.map(K=>K.z));return U.map((K,oe)=>K.toAffine(V[oe]))}static normalizeZ(U){return w.toAffineBatch(U).map(w.fromAffine)}equals(U){v(U);const{x:V,y:K,z:oe}=this,{x:fe,y:Me,z:Oe}=U,Qe=X(oe*oe),et=X(Oe*Oe),yt=X(V*et),wt=X(fe*Qe),Tt=X(X(K*Oe)*et),Fn=X(X(Me*oe)*Qe);return yt===wt&&Tt===Fn}negate(){return new w(this.x,X(-this.y),this.z)}double(){const{x:U,y:V,z:K}=this,oe=X(U*U),fe=X(V*V),Me=X(fe*fe),Oe=U+fe,Qe=X(i*(X(Oe*Oe)-oe-Me)),et=X(s*oe),yt=X(et*et),wt=X(yt-i*Qe),Tt=X(et*(Qe-wt)-o*Me),Fn=X(i*V*K);return new w(wt,Tt,Fn)}add(U){v(U);const{x:V,y:K,z:oe}=this,{x:fe,y:Me,z:Oe}=U;if(fe===n||Me===n)return this;if(V===n||K===n)return U;const Qe=X(oe*oe),et=X(Oe*Oe),yt=X(V*et),wt=X(fe*Qe),Tt=X(X(K*Oe)*et),Fn=X(X(Me*oe)*Qe),xn=X(wt-yt),Kr=X(Fn-Tt);if(xn===n)return Kr===n?this.double():w.ZERO;const fo=X(xn*xn),fi=X(xn*fo),Go=X(yt*fo),Ec=X(Kr*Kr-fi-i*Go),O=X(Kr*(Go-Ec)-Tt*fi),J=X(oe*Oe*xn);return new w(Ec,O,J)}subtract(U){return this.add(U.negate())}multiplyUnsafe(U){const V=w.ZERO;if(typeof U=="bigint"&&U===n)return V;let K=ne(U);if(K===r)return this;if(!y){let wt=V,Tt=this;for(;K>n;)K&r&&(wt=wt.add(Tt)),Tt=Tt.double(),K>>=r;return wt}let{k1neg:oe,k1:fe,k2neg:Me,k2:Oe}=l.splitScalar(K),Qe=V,et=V,yt=this;for(;fe>n||Oe>n;)fe&r&&(Qe=Qe.add(yt)),Oe&r&&(et=et.add(yt)),yt=yt.double(),fe>>=r,Oe>>=r;return oe&&(Qe=Qe.negate()),Me&&(et=et.negate()),et=new w(X(et.x*l.beta),et.y,et.z),Qe.add(et)}precomputeWindow(U){const V=y?128/U+1:256/U+1,K=[];let oe=this,fe=oe;for(let Me=0;Me>=wt,xn>Qe&&(xn-=yt,U+=r);const Kr=Fn,fo=Fn+Math.abs(xn)-1,fi=Tt%2!==0,Go=xn<0;xn===0?Me=Me.add(b(fi,oe[Kr])):fe=fe.add(b(Go,oe[fo]))}return{p:fe,f:Me}}multiply(U,V){let K=ne(U),oe,fe;if(y){const{k1neg:Me,k1:Oe,k2neg:Qe,k2:et}=l.splitScalar(K);let{p:yt,f:wt}=this.wNAF(Oe,V),{p:Tt,f:Fn}=this.wNAF(et,V);yt=b(Me,yt),Tt=b(Qe,Tt),Tt=new w(X(Tt.x*l.beta),Tt.y,Tt.z),oe=yt.add(Tt),fe=wt.add(Fn)}else{const{p:Me,f:Oe}=this.wNAF(K,V);oe=Me,fe=Oe}return w.normalizeZ([oe,fe])[0]}toAffine(U){const{x:V,y:K,z:oe}=this,fe=this.equals(w.ZERO);U==null&&(U=fe?o:le(oe));const Me=U,Oe=X(Me*Me),Qe=X(Oe*Me),et=X(V*Oe),yt=X(K*Qe),wt=X(oe*Me);if(fe)return x.ZERO;if(wt!==r)throw new Error("invZ was invalid");return new x(et,yt)}}w.BASE=new w(a.Gx,a.Gy,r),w.ZERO=new w(n,r,n);function b(j,U){const V=U.negate();return j?V:U}const S=new WeakMap;class x{constructor(U,V){this.x=U,this.y=V}_setWindowSize(U){this._WINDOW_SIZE=U,S.delete(this)}hasEvenY(){return this.y%i===n}static fromCompressedHex(U){const V=U.length===32,K=R(V?U:U.subarray(1));if(!Z(K))throw new Error("Point is not on curve");const oe=m(K);let fe=te(oe);const Me=(fe&r)===r;V?Me&&(fe=X(-fe)):(U[0]&1)===1!==Me&&(fe=X(-fe));const Oe=new x(K,fe);return Oe.assertValidity(),Oe}static fromUncompressedHex(U){const V=R(U.subarray(1,u+1)),K=R(U.subarray(u+1,u*2+1)),oe=new x(V,K);return oe.assertValidity(),oe}static fromHex(U){const V=q(U),K=V.length,oe=V[0];if(K===u)return this.fromCompressedHex(V);if(K===f&&(oe===2||oe===3))return this.fromCompressedHex(V);if(K===g&&oe===4)return this.fromUncompressedHex(V);throw new Error(`Point.fromHex: received invalid point. Expected 32-${f} compressed bytes or ${g} uncompressed bytes, not ${K}`)}static fromPrivateKey(U){return x.BASE.multiply(gt(U))}static fromSignature(U,V,K){const{r:oe,s:fe}=at(V);if(![0,1,2,3].includes(K))throw new Error("Cannot recover: invalid recovery bit");const Me=xe(q(U)),{n:Oe}=a,Qe=K===2||K===3?oe+Oe:oe,et=le(Qe,Oe),yt=X(-Me*et,Oe),wt=X(fe*et,Oe),Tt=K&1?"03":"02",Fn=x.fromHex(Tt+C(Qe)),xn=x.BASE.multiplyAndAddUnsafe(Fn,yt,wt);if(!xn)throw new Error("Cannot recover signature: point at infinify");return xn.assertValidity(),xn}toRawBytes(U=!1){return k(this.toHex(U))}toHex(U=!1){const V=C(this.x);return U?`${this.hasEvenY()?"02":"03"}${V}`:`04${V}${C(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const U="Point is not on elliptic curve",{x:V,y:K}=this;if(!Z(V)||!Z(K))throw new Error(U);const oe=X(K*K),fe=m(V);if(X(oe-fe)!==n)throw new Error(U)}equals(U){return this.x===U.x&&this.y===U.y}negate(){return new x(this.x,X(-this.y))}double(){return w.fromAffine(this).double().toAffine()}add(U){return w.fromAffine(this).add(w.fromAffine(U)).toAffine()}subtract(U){return this.add(U.negate())}multiply(U){return w.fromAffine(this).multiply(U,this).toAffine()}multiplyAndAddUnsafe(U,V,K){const oe=w.fromAffine(this),fe=V===n||V===r||this!==x.BASE?oe.multiplyUnsafe(V):oe.multiply(V),Me=w.fromAffine(U).multiplyUnsafe(K),Oe=fe.add(Me);return Oe.equals(w.ZERO)?void 0:Oe.toAffine()}}t.Point=x,x.BASE=new x(a.Gx,a.Gy),x.ZERO=new x(n,n);function T(j){return Number.parseInt(j[0],16)>=8?"00"+j:j}function N(j){if(j.length<2||j[0]!==2)throw new Error(`Invalid signature integer tag: ${$(j)}`);const U=j[1],V=j.subarray(2,U+2);if(!U||V.length!==U)throw new Error("Invalid signature integer: wrong length");if(V[0]===0&&V[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:R(V),left:j.subarray(U+2)}}function _(j){if(j.length<2||j[0]!=48)throw new Error(`Invalid signature tag: ${$(j)}`);if(j[1]!==j.length-2)throw new Error("Invalid signature: incorrect length");const{data:U,left:V}=N(j.subarray(2)),{data:K,left:oe}=N(V);if(oe.length)throw new Error(`Invalid signature: left bytes after parsing: ${$(oe)}`);return{r:U,s:K}}class E{constructor(U,V){this.r=U,this.s=V,this.assertValidity()}static fromCompact(U){const V=U instanceof Uint8Array,K="Signature.fromCompact";if(typeof U!="string"&&!V)throw new TypeError(`${K}: Expected string or Uint8Array`);const oe=V?$(U):U;if(oe.length!==128)throw new Error(`${K}: Expected 64-byte hex`);return new E(D(oe.slice(0,64)),D(oe.slice(64,128)))}static fromDER(U){const V=U instanceof Uint8Array;if(typeof U!="string"&&!V)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:K,s:oe}=_(V?U:k(U));return new E(K,oe)}static fromHex(U){return this.fromDER(U)}assertValidity(){const{r:U,s:V}=this;if(!Ut(U))throw new Error("Invalid Signature: r must be 0 < r < n");if(!Ut(V))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const U=a.n>>r;return this.s>U}normalizeS(){return this.hasHighS()?new E(this.r,X(-this.s,a.n)):this}toDERRawBytes(){return k(this.toDERHex())}toDERHex(){const U=T(F(this.s)),V=T(F(this.r)),K=U.length/2,oe=V.length/2,fe=F(K),Me=F(oe);return`30${F(oe+K+4)}02${Me}${V}02${fe}${U}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return k(this.toCompactHex())}toCompactHex(){return C(this.r)+C(this.s)}}t.Signature=E;function A(...j){if(!j.every(K=>K instanceof Uint8Array))throw new Error("Uint8Array list expected");if(j.length===1)return j[0];const U=j.reduce((K,oe)=>K+oe.length,0),V=new Uint8Array(U);for(let K=0,oe=0;KU.toString(16).padStart(2,"0"));function $(j){if(!(j instanceof Uint8Array))throw new Error("Expected Uint8Array");let U="";for(let V=0;V0)return BigInt(j);if(typeof j=="bigint"&&Ut(j))return j;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function X(j,U=a.P){const V=j%U;return V>=n?V:U+V}function G(j,U){const{P:V}=a;let K=j;for(;U-- >n;)K*=K,K%=V;return K}function te(j){const{P:U}=a,V=BigInt(6),K=BigInt(11),oe=BigInt(22),fe=BigInt(23),Me=BigInt(44),Oe=BigInt(88),Qe=j*j*j%U,et=Qe*Qe*j%U,yt=G(et,s)*et%U,wt=G(yt,s)*et%U,Tt=G(wt,i)*Qe%U,Fn=G(Tt,K)*Tt%U,xn=G(Fn,oe)*Fn%U,Kr=G(xn,Me)*xn%U,fo=G(Kr,Oe)*Kr%U,fi=G(fo,Me)*xn%U,Go=G(fi,s)*et%U,Ec=G(Go,fe)*Fn%U,O=G(Ec,V)*Qe%U,J=G(O,i);if(J*J%U!==j)throw new Error("Cannot find square root");return J}function le(j,U=a.P){if(j===n||U<=n)throw new Error(`invert: expected positive integers, got n=${j} mod=${U}`);let V=X(j,U),K=U,oe=n,fe=r;for(;V!==n;){const Oe=K/V,Qe=K%V,et=oe-fe*Oe;K=V,V=Qe,oe=fe,fe=et}if(K!==r)throw new Error("invert: does not exist");return X(oe,U)}function ge(j,U=a.P){const V=new Array(j.length),K=j.reduce((fe,Me,Oe)=>Me===n?fe:(V[Oe]=fe,X(fe*Me,U)),r),oe=le(K,U);return j.reduceRight((fe,Me,Oe)=>Me===n?fe:(V[Oe]=X(fe*V[Oe],U),X(fe*Me,U)),oe),V}function Ce(j){const U=j.length*8-d*8,V=R(j);return U>0?V>>BigInt(U):V}function xe(j,U=!1){const V=Ce(j);if(U)return V;const{n:K}=a;return V>=K?V-K:V}let je,ht;class vt{constructor(U,V){if(this.hashLen=U,this.qByteLen=V,typeof U!="number"||U<2)throw new Error("hashLen must be a number");if(typeof V!="number"||V<2)throw new Error("qByteLen must be a number");this.v=new Uint8Array(U).fill(1),this.k=new Uint8Array(U).fill(0),this.counter=0}hmac(...U){return t.utils.hmacSha256(this.k,...U)}hmacSync(...U){return ht(this.k,...U)}checkSync(){if(typeof ht!="function")throw new p("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(U=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),U),this.v=await this.hmac(this.v),U.length!==0&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),U),this.v=await this.hmac(this.v))}reseedSync(U=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),U),this.v=this.hmacSync(this.v),U.length!==0&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),U),this.v=this.hmacSync(this.v))}async generate(){this.incr();let U=0;const V=[];for(;U0)U=BigInt(j);else if(typeof j=="string"){if(j.length!==2*d)throw new Error("Expected 32 bytes of private key");U=D(j)}else if(j instanceof Uint8Array){if(j.length!==d)throw new Error("Expected 32 bytes of private key");U=R(j)}else throw new TypeError("Expected valid private key");if(!Ut(U))throw new Error("Expected private key: 0 < key < n");return U}function St(j){return j instanceof x?(j.assertValidity(),j):x.fromHex(j)}function at(j){if(j instanceof E)return j.assertValidity(),j;try{return E.fromDER(j)}catch{return E.fromCompact(j)}}function Jt(j,U=!1){return x.fromPrivateKey(j).toRawBytes(U)}t.getPublicKey=Jt;function Ye(j,U,V,K=!1){return x.fromSignature(j,U,V).toRawBytes(K)}t.recoverPublicKey=Ye;function z(j){const U=j instanceof Uint8Array,V=typeof j=="string",K=(U||V)&&j.length;return U?K===f||K===g:V?K===f*2||K===g*2:j instanceof x}function P(j,U,V=!1){if(z(j))throw new TypeError("getSharedSecret: first arg must be private key");if(!z(U))throw new TypeError("getSharedSecret: second arg must be public key");const K=St(U);return K.assertValidity(),K.multiply(gt(j)).toRawBytes(V)}t.getSharedSecret=P;function re(j){const U=j.length>u?j.slice(0,u):j;return R(U)}function de(j){const U=re(j),V=X(U,a.n);return ye(V{j=q(j);const U=d+8;if(j.length1024)throw new Error("Expected valid bytes of private key as per FIPS 186");const V=X(R(j),a.n-r)+r;return I(V)},randomBytes:(j=32)=>{if(ue.web)return ue.web.getRandomValues(new Uint8Array(j));if(ue.node){const{randomBytes:U}=ue.node;return Uint8Array.from(U(j))}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>t.utils.hashToPrivateKey(t.utils.randomBytes(d+8)),precompute(j=8,U=x.BASE){const V=U===x.BASE?U:new x(U.x,U.y);return V._setWindowSize(j),V.multiply(s),V},sha256:async(...j)=>{if(ue.web){const U=await ue.web.subtle.digest("SHA-256",A(...j));return new Uint8Array(U)}else if(ue.node){const{createHash:U}=ue.node,V=U("sha256");return j.forEach(K=>V.update(K)),Uint8Array.from(V.digest())}else throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(j,...U)=>{if(ue.web){const V=await ue.web.subtle.importKey("raw",j,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),K=A(...U),oe=await ue.web.subtle.sign("HMAC",V,K);return new Uint8Array(oe)}else if(ue.node){const{createHmac:V}=ue.node,K=V("sha256",j);return U.forEach(oe=>K.update(oe)),Uint8Array.from(K.digest())}else throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(j,...U)=>{let V=Ue[j];if(V===void 0){const K=await t.utils.sha256(Uint8Array.from(j,oe=>oe.charCodeAt(0)));V=A(K,K),Ue[j]=V}return t.utils.sha256(V,...U)},taggedHashSync:(j,...U)=>{if(typeof je!="function")throw new p("sha256Sync is undefined, you need to set it");let V=Ue[j];if(V===void 0){const K=je(Uint8Array.from(j,oe=>oe.charCodeAt(0)));V=A(K,K),Ue[j]=V}return je(V,...U)},_JacobianPoint:w},Object.defineProperties(t.utils,{sha256Sync:{configurable:!1,get(){return je},set(j){je||(je=j)}},hmacSha256Sync:{configurable:!1,get(){return ht},set(j){ht||(ht=j)}}})})(Hk);var bf={};Object.defineProperty(bf,"__esModule",{value:!0});bf.joseToDer=bf.derToJose=void 0;const Vk=a0,Wk=wi;function oE(t){return(t/8|0)+(t%8===0?0:1)}const U7={ES256:oE(256),ES384:oE(384),ES512:oE(521)};function Gk(t){const e=U7[t];if(e)return e;throw new Error(`Unknown algorithm "${t}"`)}const Ov=128,qk=0,L7=32,k7=16,$7=2,Kk=k7|L7|qk<<6,Uv=$7|qk<<6;function Xk(t){if(t instanceof Uint8Array)return t;if(typeof t=="string")return(0,Vk.toByteArray)((0,Wk.pad)(t));throw new TypeError("ECDSA signature must be a Base64 string or a Uint8Array")}function B7(t,e){const n=Xk(t),r=Gk(e),i=r+1,s=n.length;let o=0;if(n[o++]!==Kk)throw new Error('Could not find expected "seq"');let a=n[o++];if(a===(Ov|1)&&(a=n[o++]),s-o=Ov&&--r,r}function F7(t,e){t=Xk(t);const n=Gk(e),r=t.length;if(r!==n*2)throw new TypeError(`"${e}" signatures must be "${n*2}" bytes, saw "${r}"`);const i=kM(t,0,n),s=kM(t,n,t.length),o=n-i,a=n-s,c=2+o+1+1+a,l=c{const n=j7.hmac.create(V7.sha256,t);return e.forEach(r=>n.update(r)),n.digest()};class Yk{static derivePublicKey(e,n=!0){return e.length===66&&(e=e.slice(0,64)),e.length<64&&(e=e.padStart(64,"0")),(0,FM.bytesToHex)(Dw.getPublicKey(e,n))}static signHash(e,n,r="jose"){if(!e||!n)throw new BM.MissingParametersError("a signing input hash and private key are all required");const i=Dw.signSync(e,n.slice(0,64),{der:!0,canonical:!1});if(r==="der")return(0,FM.bytesToHex)(i);if(r==="jose")return(0,$M.derToJose)(i,"ES256");throw Error("Invalid signature format")}static loadSignature(e){return(0,$M.joseToDer)(e,"ES256")}static verifyHash(e,n,r){if(!e||!n||!r)throw new BM.MissingParametersError("a signing input hash, der signature, and public key are all required");return Dw.verify(n,e,r,{strict:!1})}}Fb.SECP256K1Client=Yk;Yk.algorithmName="ES256K";(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.cryptoClients=t.SECP256K1Client=void 0;const e=Fb;Object.defineProperty(t,"SECP256K1Client",{enumerable:!0,get:function(){return e.SECP256K1Client}});const n={ES256K:e.SECP256K1Client};t.cryptoClients=n})(Bb);var rd={},W7=Ln&&Ln.__awaiter||function(t,e,n,r){function i(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(u){try{l(r.next(u))}catch(d){o(d)}}function c(u){try{l(r.throw(u))}catch(d){o(d)}}function l(u){u.done?s(u.value):i(u.value).then(a,c)}l((r=r.apply(t,e||[])).next())})};Object.defineProperty(rd,"__esModule",{value:!0});rd.hashSha256Async=rd.hashSha256=void 0;const G7=fc;function Zk(t){return(0,G7.sha256)(t)}rd.hashSha256=Zk;function q7(t){return W7(this,void 0,void 0,function*(){try{if(typeof crypto<"u"&&typeof crypto.subtle<"u"){const n=typeof t=="string"?new TextEncoder().encode(t):t,r=yield crypto.subtle.digest("SHA-256",n);return new Uint8Array(r)}else{const n=jk;if(!n.createHash)throw new Error("`crypto` module does not contain `createHash`");return Promise.resolve(n.createHash("sha256").update(t).digest())}}catch(e){return console.log(e),console.log('Crypto lib not found. Neither the global `crypto.subtle` Web Crypto API, nor the or the Node.js `require("crypto").createHash` module is available. Falling back to JS implementation.'),Promise.resolve(Zk(t))}})}rd.hashSha256Async=q7;var K7=Ln&&Ln.__awaiter||function(t,e,n,r){function i(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(u){try{l(r.next(u))}catch(d){o(d)}}function c(u){try{l(r.throw(u))}catch(d){o(d)}}function l(u){u.done?s(u.value):i(u.value).then(a,c)}l((r=r.apply(t,e||[])).next())})};Object.defineProperty(vf,"__esModule",{value:!0});vf.TokenSigner=vf.createUnsecuredToken=void 0;const KS=wi,zM=Bb,X7=pc,HM=rd;function XS(t,e){const n=[],r=KS.encode(JSON.stringify(e));n.push(r);const i=KS.encode(JSON.stringify(t));return n.push(i),n.join(".")}function Y7(t){return XS(t,{typ:"JWT",alg:"none"})+"."}vf.createUnsecuredToken=Y7;class Z7{constructor(e,n){if(!(e&&n))throw new X7.MissingParametersError("a signing algorithm and private key are required");if(typeof e!="string")throw new Error("signing algorithm parameter must be a string");if(e=e.toUpperCase(),!zM.cryptoClients.hasOwnProperty(e))throw new Error("invalid signing algorithm");this.tokenType="JWT",this.cryptoClient=zM.cryptoClients[e],this.rawPrivateKey=n}header(e={}){const n={typ:this.tokenType,alg:this.cryptoClient.algorithmName};return Object.assign({},n,e)}sign(e,n=!1,r={}){const i=this.header(r),s=XS(e,i),o=(0,HM.hashSha256)(s);return this.createWithSignedHash(e,n,i,s,o)}signAsync(e,n=!1,r={}){return K7(this,void 0,void 0,function*(){const i=this.header(r),s=XS(e,i),o=yield(0,HM.hashSha256Async)(s);return this.createWithSignedHash(e,n,i,s,o)})}createWithSignedHash(e,n,r,i,s){const o=this.cryptoClient.signHash(s,this.rawPrivateKey);return n?{header:[KS.encode(JSON.stringify(r))],payload:JSON.stringify(e),signature:[o]}:[i,o].join(".")}}vf.TokenSigner=Z7;var zb={};Object.defineProperty(zb,"__esModule",{value:!0});zb.TokenVerifier=void 0;const J7=wi,jM=Bb,Q7=pc,dy=rd;class eV{constructor(e,n){if(!(e&&n))throw new Q7.MissingParametersError("a signing algorithm and public key are required");if(typeof e!="string")throw"signing algorithm parameter must be a string";if(e=e.toUpperCase(),!jM.cryptoClients.hasOwnProperty(e))throw"invalid signing algorithm";this.tokenType="JWT",this.cryptoClient=jM.cryptoClients[e],this.rawPublicKey=n}verify(e){return typeof e=="string"?this.verifyCompact(e,!1):typeof e=="object"?this.verifyExpanded(e,!1):!1}verifyAsync(e){return typeof e=="string"?this.verifyCompact(e,!0):typeof e=="object"?this.verifyExpanded(e,!0):Promise.resolve(!1)}verifyCompact(e,n){const r=e.split("."),i=r[0]+"."+r[1],s=o=>{const a=this.cryptoClient.loadSignature(r[2]);return this.cryptoClient.verifyHash(o,a,this.rawPublicKey)};if(n)return(0,dy.hashSha256Async)(i).then(o=>s(o));{const o=(0,dy.hashSha256)(i);return s(o)}}verifyExpanded(e,n){const r=[e.header.join("."),J7.encode(e.payload)].join(".");let i=!0;const s=o=>(e.signature.map(a=>{const c=this.cryptoClient.loadSignature(a);this.cryptoClient.verifyHash(o,c,this.rawPublicKey)||(i=!1)}),i);if(n)return(0,dy.hashSha256Async)(r).then(o=>s(o));{const o=(0,dy.hashSha256)(r);return s(o)}}}zb.TokenVerifier=eV;var Hb={};Object.defineProperty(Hb,"__esModule",{value:!0});Hb.decodeToken=void 0;const hy=wi;function tV(t){if(typeof t=="string"){const e=t.split("."),n=JSON.parse(hy.decode(e[0])),r=JSON.parse(hy.decode(e[1])),i=e[2];return{header:n,payload:r,signature:i}}else if(typeof t=="object"){if(typeof t.payload!="string")throw new Error("Expected token payload to be a base64 or json string");let e=t.payload;t.payload[0]!=="{"&&(e=hy.decode(e));const n=[];return t.header.map(r=>{const i=JSON.parse(hy.decode(r));n.push(i)}),{header:n,payload:JSON.parse(e),signature:t.signature}}}Hb.decodeToken=tV;(function(t){var e=Ln&&Ln.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var a=Object.getOwnPropertyDescriptor(i,s);(!a||("get"in a?!i.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,a)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=Ln&&Ln.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(vf,t),n(zb,t),n(Hb,t),n(pc,t),n(Bb,t)})(io);function nV(t){return`did:btc-addr:${t}`}function rV(t){const e=t.split(":");if(e.length!==3)throw new SM("Decentralized IDs must have 3 parts");if(e[0].toLowerCase()!=="did")throw new SM('Decentralized IDs must start with "did"');return e[1].toLowerCase()}function Jk(t){if(t)return rV(t)==="btc-addr"?t.split(":")[2]:void 0}const iV="1.4.0";function sV(){return f7()}function oV(t,e,n,r=ck.slice(),i,s=uj().getTime(),o={}){const a=f=>{const g=d2("location",{throwIfUnavailable:!0,usageDesc:`makeAuthRequest([${f}=undefined])`});return g==null?void 0:g.origin};e||(e=`${a("redirectURI")}/`),n||(n=`${a("manifestURI")}/manifest.json`),i||(i=a("appDomain"));const c=Object.assign({},o,{jti:hj(),iat:Math.floor(new Date().getTime()/1e3),exp:Math.floor(s/1e3),iss:null,public_keys:[],domain_name:i,manifest_uri:n,redirect_uri:e,version:iV,do_not_include_profile:!0,supports_hub_url:!0,scopes:r}),l=io.SECP256K1Client.derivePublicKey(t);c.public_keys=[l];const u=Ik(l);return c.iss=nV(u),new io.TokenSigner("ES256k",t).sign(c)}async function VM(t,e){const n=Yf(Ft(e)),r=JSON.parse(n),i=await Dk(t,r);if(typeof i!="string")throw new Error("Unable to correctly decrypt private key");return i}function aV(t){const e=io.decodeToken(t).payload;if(typeof e=="string")throw new Error("Unexpected token payload type of string");const n=e.public_keys;if(n.length===1){const r=n[0];try{return new io.TokenVerifier("ES256k",r).verify(t)}catch{return!1}}else throw new Error("Multiple public keys are not supported")}function cV(t){const e=io.decodeToken(t).payload;if(typeof e=="string")throw new Error("Unexpected token payload type of string");const n=e.public_keys,r=Jk(e.iss);if(n.length===1){if(Ik(n[0])===r)return!0}else throw new Error("Multiple public keys are not supported");return!1}function lV(t){const e=io.decodeToken(t).payload;if(typeof e=="string")throw new Error("Unexpected token payload type of string");if(e.iat){if(typeof e.iat!="number")return!1;const n=new Date(e.iat*1e3);return!(new Date().getTime()n.getTime())}else return!0}async function dV(t){return(await Promise.all([uV(t),lV(t),aV(t),cV(t)])).every(n=>n)}const WM="1.0.0";class xl{constructor(e){this.version=WM,this.userData=e.userData,this.transitKey=e.transitKey,this.etags=e.etags?e.etags:{}}static fromJSON(e){if(e.version!==WM)throw new zS(`JSON data version ${e.version} not supported by SessionData`);const n={coreNode:e.coreNode,userData:e.userData,transitKey:e.transitKey,etags:e.etags};return new xl(n)}toString(){return JSON.stringify(this)}}class Qk{constructor(e){if(e){const n=new xl(e);this.setSessionData(n)}}getSessionData(){throw new Error("Abstract class")}setSessionData(e){throw new Error("Abstract class")}deleteSessionData(){throw new Error("Abstract class")}}class GM extends Qk{constructor(e){super(e),this.sessionData||this.setSessionData(new xl({}))}getSessionData(){if(!this.sessionData)throw new i0("No session data was found.");return this.sessionData}setSessionData(e){return this.sessionData=e,!0}deleteSessionData(){return this.setSessionData(new xl({})),!0}}class qM extends Qk{constructor(e){if(super(e),e&&e.storeOptions&&e.storeOptions.localStorageKey&&typeof e.storeOptions.localStorageKey=="string"?this.key=e.storeOptions.localStorageKey:this.key=aj,!localStorage.getItem(this.key)){const r=new xl({});this.setSessionData(r)}}getSessionData(){const e=localStorage.getItem(this.key);if(!e)throw new i0("No session data was found in localStorage");const n=JSON.parse(e);return xl.fromJSON(n)}setSessionData(e){return localStorage.setItem(this.key,e.toString()),!0}deleteSessionData(){return localStorage.removeItem(this.key),this.setSessionData(new xl({})),!0}}function hV(t){const e=Object.values(t).filter(r=>typeof r=="number"),n=new Set(e);return r=>n.has(r)}const KM=new Map;function e4(t,e){const n=KM.get(t);if(n!==void 0)return n(e);const r=hV(t);return KM.set(t,r),e4(t,e)}let Pn=class{constructor(e){this.consumed=0,this.source=typeof e=="string"?Ft(e):e}readBytes(e){const n=this.source.subarray(this.consumed,this.consumed+e);return this.consumed+=e,n}readUInt32BE(){return Rj(this.readBytes(4),0)}readUInt8(){return Pj(this.readBytes(1),0)}readUInt16BE(){return Mj(this.readBytes(2),0)}readBigUIntLE(e){const n=this.readBytes(e).slice().reverse(),r=pt(n);return BigInt(`0x${r}`)}readBigUIntBE(e){const n=this.readBytes(e),r=pt(n);return BigInt(`0x${r}`)}get readOffset(){return this.consumed}set readOffset(e){this.consumed=e}get internalBytes(){return this.source}readUInt8Enum(e,n){const r=this.readUInt8();if(e4(e,r))return r;throw n(r)}};var lm;(function(t){t[t.Mainnet=1]="Mainnet",t[t.Testnet=2147483648]="Testnet"})(lm||(lm={}));var Lv;(function(t){t[t.Mainnet=385875968]="Mainnet",t[t.Testnet=4278190080]="Testnet"})(Lv||(Lv={}));lm.Mainnet;var Ro;(function(t){t[t.Mainnet=0]="Mainnet",t[t.Testnet=128]="Testnet"})(Ro||(Ro={}));var Oo;(function(t){t[t.MainnetSingleSig=22]="MainnetSingleSig",t[t.MainnetMultiSig=20]="MainnetMultiSig",t[t.TestnetSingleSig=26]="TestnetSingleSig",t[t.TestnetMultiSig=21]="TestnetMultiSig"})(Oo||(Oo={}));Ro.Mainnet;const t4={chainId:lm.Mainnet,transactionVersion:Ro.Mainnet,peerNetworkId:Lv.Mainnet,magicBytes:"X2",bootAddress:"SP000000000000000000002Q6VF78",addressVersion:{singleSig:Oo.MainnetSingleSig,multiSig:Oo.MainnetMultiSig},client:{baseUrl:Sj}},YS={chainId:lm.Testnet,transactionVersion:Ro.Testnet,peerNetworkId:Lv.Testnet,magicBytes:"T2",bootAddress:"ST000000000000000000002AMW42H",addressVersion:{singleSig:Oo.TestnetSingleSig,multiSig:Oo.TestnetMultiSig},client:{baseUrl:xj}},Rw={...YS,addressVersion:{...YS.addressVersion},magicBytes:"id",client:{baseUrl:Aj}},fV={...Rw,addressVersion:{...Rw.addressVersion},client:{...Rw.client}};function pV(t){switch(t){case"mainnet":return t4;case"testnet":return YS;case"devnet":return Rw;case"mocknet":return fV;default:throw new Error(`Unknown network name: ${t}`)}}function _2(t){return typeof t=="string"?pV(t):t}const gV=128,mV=128,n4=16,Gu=32,ZS=80,jb=65,yV=32,wV=64,kv=34,vV=1+16*1024*1024,bV=165,EV=16,_V=16,SV=20,xV=_V+2+SV,AV=xV+4,CV=vV+(bV+EV*AV);var fn;(function(t){t[t.TokenTransfer=0]="TokenTransfer",t[t.SmartContract=1]="SmartContract",t[t.VersionedSmartContract=6]="VersionedSmartContract",t[t.ContractCall=2]="ContractCall",t[t.PoisonMicroblock=3]="PoisonMicroblock",t[t.Coinbase=4]="Coinbase",t[t.CoinbaseToAltRecipient=5]="CoinbaseToAltRecipient",t[t.TenureChange=7]="TenureChange",t[t.NakamotoCoinbase=8]="NakamotoCoinbase"})(fn||(fn={}));var JS;(function(t){t[t.Clarity1=1]="Clarity1",t[t.Clarity2=2]="Clarity2",t[t.Clarity3=3]="Clarity3"})(JS||(JS={}));var ds;(function(t){t[t.OnChainOnly=1]="OnChainOnly",t[t.OffChainOnly=2]="OffChainOnly",t[t.Any=3]="Any"})(ds||(ds={}));const aE=["onChainOnly","offChainOnly","any"];aE[0]+"",ds.OnChainOnly,aE[1]+"",ds.OffChainOnly,aE[2]+"",ds.Any,ds.OnChainOnly+"",ds.OnChainOnly,ds.OffChainOnly+"",ds.OffChainOnly,ds.Any+"",ds.Any;var Ef;(function(t){t[t.Allow=1]="Allow",t[t.Deny=2]="Deny"})(Ef||(Ef={}));var kr;(function(t){t[t.STX=0]="STX",t[t.Fungible=1]="Fungible",t[t.NonFungible=2]="NonFungible"})(kr||(kr={}));var Jn;(function(t){t[t.Standard=4]="Standard",t[t.Sponsored=5]="Sponsored"})(Jn||(Jn={}));var jt;(function(t){t[t.P2PKH=0]="P2PKH",t[t.P2SH=1]="P2SH",t[t.P2WPKH=2]="P2WPKH",t[t.P2WSH=3]="P2WSH",t[t.P2SHNonSequential=5]="P2SHNonSequential",t[t.P2WSHNonSequential=7]="P2WSHNonSequential"})(jt||(jt={}));var qn;(function(t){t[t.Compressed=0]="Compressed",t[t.Uncompressed=1]="Uncompressed"})(qn||(qn={}));var $v;(function(t){t[t.Equal=1]="Equal",t[t.Greater=2]="Greater",t[t.GreaterEqual=3]="GreaterEqual",t[t.Less=4]="Less",t[t.LessEqual=5]="LessEqual"})($v||($v={}));var QS;(function(t){t[t.Sends=16]="Sends",t[t.DoesNotSend=17]="DoesNotSend"})(QS||(QS={}));var Ss;(function(t){t[t.Origin=1]="Origin",t[t.Standard=2]="Standard",t[t.Contract=3]="Contract"})(Ss||(Ss={}));var XM;(function(t){t[t.STX=0]="STX",t[t.Fungible=1]="Fungible",t[t.NonFungible=2]="NonFungible"})(XM||(XM={}));var ex;(function(t){t[t.BlockFound=0]="BlockFound",t[t.Extended=1]="Extended"})(ex||(ex={}));var No;(function(t){t[t.PublicKeyCompressed=0]="PublicKeyCompressed",t[t.PublicKeyUncompressed=1]="PublicKeyUncompressed",t[t.SignatureCompressed=2]="SignatureCompressed",t[t.SignatureUncompressed=3]="SignatureUncompressed"})(No||(No={}));var YM;(function(t){t.Serialization="Serialization",t.Deserialization="Deserialization",t.SignatureValidation="SignatureValidation",t.FeeTooLow="FeeTooLow",t.BadNonce="BadNonce",t.NotEnoughFunds="NotEnoughFunds",t.NoSuchContract="NoSuchContract",t.NoSuchPublicFunction="NoSuchPublicFunction",t.BadFunctionArgument="BadFunctionArgument",t.ContractAlreadyExists="ContractAlreadyExists",t.PoisonMicroblocksDoNotConflict="PoisonMicroblocksDoNotConflict",t.PoisonMicroblockHasUnknownPubKeyHash="PoisonMicroblockHasUnknownPubKeyHash",t.PoisonMicroblockIsInvalid="PoisonMicroblockIsInvalid",t.BadAddressVersionByte="BadAddressVersionByte",t.NoCoinbaseViaMempool="NoCoinbaseViaMempool",t.ServerFailureNoSuchChainTip="ServerFailureNoSuchChainTip",t.ServerFailureDatabase="ServerFailureDatabase",t.ServerFailureOther="ServerFailureOther"})(YM||(YM={}));let Vb=class extends Error{constructor(e){super(e),this.message=e,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Bh=class extends Vb{constructor(e){super(e)}},bs=class extends Vb{constructor(e){super(e)}},Bv=class extends Vb{constructor(e){super(e)}},Ru=class extends Vb{constructor(e){super(e)}};var bd={},S2={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.c32decode=t.c32normalize=t.c32encode=t.c32=void 0;const e=bc;t.c32="0123456789ABCDEFGHJKMNPQRSTVWXYZ";const n="0123456789abcdef";function r(o,a){if(!o.match(/^[0-9a-fA-F]*$/))throw new Error("Not a hex-encoded string");o.length%2!==0&&(o=`0${o}`),o=o.toLowerCase();let c=[],l=0;for(let f=o.length-1;f>=0;f--)if(l<4){const g=n.indexOf(o[f])>>l;let m=0;f!==0&&(m=n.indexOf(o[f-1]));const y=1+l,p=m%(1<=0;m--){h===4&&(u.unshift(n[d]),h=0,d=0);const p=(t.c32.indexOf(o[m])<>4,d>1<=32)throw new Error("Invalid version (must be between 0 and 31)");if(!e.match(/^[0-9a-fA-F]*$/))throw new Error("Invalid data (not a hex string)");e=e.toLowerCase(),e.length%2!==0&&(e=`0${e}`);let n=t.toString(16);n.length===1&&(n=`0${n}`);const r=r4(`${n}${e}`),i=(0,Tg.c32encode)(`${e}${r}`);return`${Tg.c32[t]}${i}`}id.c32checkEncode=TV;function IV(t){t=(0,Tg.c32normalize)(t);const e=(0,Tg.c32decode)(t.slice(1)),n=t[0],r=Tg.c32.indexOf(n),i=e.slice(-8);let s=r.toString(16);if(s.length===1&&(s=`0${s}`),r4(`${s}${e.substring(0,e.length-8)}`)!==i)throw new Error("Invalid c32check string: checksum mismatch");return[r,e.substring(0,e.length-8)]}id.c32checkDecode=IV;var i4={},_f={};Object.defineProperty(_f,"__esModule",{value:!0});_f.decode=_f.encode=void 0;const Fv=fc,QM=bc,s4=_k,o4="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function MV(t,e="00"){const n=typeof t=="string"?(0,QM.hexToBytes)(t):t,r=typeof e=="string"?(0,QM.hexToBytes)(e):t;if(!(n instanceof Uint8Array)||!(r instanceof Uint8Array))throw new TypeError("Argument must be of type Uint8Array or string");const i=(0,Fv.sha256)((0,Fv.sha256)(new Uint8Array([...r,...n])));return s4(o4).encode([...r,...n,...i.slice(0,4)])}_f.encode=MV;function NV(t){const e=s4(o4).decode(t),n=e.slice(0,1),r=e.slice(1,-4),i=(0,Fv.sha256)((0,Fv.sha256)(new Uint8Array([...n,...r])));return e.slice(-4).forEach((s,o)=>{if(s!==i[o])throw new Error("Invalid checksum")}),{prefix:n,data:r}}_f.decode=NV;(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.c32ToB58=t.b58ToC32=t.c32addressDecode=t.c32address=t.versions=void 0;const e=id,n=_f,r=bc;t.versions={mainnet:{p2pkh:22,p2sh:20},testnet:{p2pkh:26,p2sh:21}};const i={};i[0]=t.versions.mainnet.p2pkh,i[5]=t.versions.mainnet.p2sh,i[111]=t.versions.testnet.p2pkh,i[196]=t.versions.testnet.p2sh;const s={};s[t.versions.mainnet.p2pkh]=0,s[t.versions.mainnet.p2sh]=5,s[t.versions.testnet.p2pkh]=111,s[t.versions.testnet.p2sh]=196;function o(u,d){if(!d.match(/^[0-9a-fA-F]{40}$/))throw new Error("Invalid argument: not a hash160 hex string");return`S${(0,e.c32checkEncode)(u,d)}`}t.c32address=o;function a(u){if(u.length<=5)throw new Error("Invalid c32 address: invalid length");if(u[0]!="S")throw new Error('Invalid c32 address: must start with "S"');return(0,e.c32checkDecode)(u.slice(1))}t.c32addressDecode=a;function c(u,d=-1){const h=n.decode(u),f=(0,r.bytesToHex)(h.data),g=parseInt((0,r.bytesToHex)(h.prefix),16);let m;return d<0?(m=g,i[g]!==void 0&&(m=i[g])):m=d,o(m,f)}t.b58ToC32=c;function l(u,d=-1){const h=a(u),f=h[0],g=h[1];let m;d<0?(m=f,s[f]!==void 0&&(m=s[f])):m=d;let y=m.toString(16);return y.length===1&&(y=`0${y}`),n.encode(g,y)}t.c32ToB58=l})(i4);(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.b58ToC32=t.c32ToB58=t.versions=t.c32normalize=t.c32addressDecode=t.c32address=t.c32checkDecode=t.c32checkEncode=t.c32decode=t.c32encode=void 0;const e=S2;Object.defineProperty(t,"c32encode",{enumerable:!0,get:function(){return e.c32encode}}),Object.defineProperty(t,"c32decode",{enumerable:!0,get:function(){return e.c32decode}}),Object.defineProperty(t,"c32normalize",{enumerable:!0,get:function(){return e.c32normalize}});const n=id;Object.defineProperty(t,"c32checkEncode",{enumerable:!0,get:function(){return n.c32checkEncode}}),Object.defineProperty(t,"c32checkDecode",{enumerable:!0,get:function(){return n.c32checkDecode}});const r=i4;Object.defineProperty(t,"c32address",{enumerable:!0,get:function(){return r.c32address}}),Object.defineProperty(t,"c32addressDecode",{enumerable:!0,get:function(){return r.c32addressDecode}}),Object.defineProperty(t,"c32ToB58",{enumerable:!0,get:function(){return r.c32ToB58}}),Object.defineProperty(t,"b58ToC32",{enumerable:!0,get:function(){return r.b58ToC32}}),Object.defineProperty(t,"versions",{enumerable:!0,get:function(){return r.versions}})})(bd);function PV(t,e){switch(e=_2(e??t4),t){case jt.P2PKH:switch(e.transactionVersion){case Ro.Mainnet:return Oo.MainnetSingleSig;case Ro.Testnet:return Oo.TestnetSingleSig;default:throw new Error(`Unexpected transactionVersion ${e.transactionVersion} for hashMode ${t}`)}case jt.P2SH:case jt.P2SHNonSequential:case jt.P2WPKH:case jt.P2WSH:case jt.P2WSHNonSequential:switch(e.transactionVersion){case Ro.Mainnet:return Oo.MainnetMultiSig;case Ro.Testnet:return Oo.TestnetMultiSig;default:throw new Error(`Unexpected transactionVersion ${e.transactionVersion} for hashMode ${t}`)}default:throw new Error(`Unexpected hashMode ${t}`)}}var zv={exports:{}};zv.exports;(function(t,e){var n=200,r="__lodash_hash_undefined__",i=9007199254740991,s="[object Arguments]",o="[object Array]",a="[object Boolean]",c="[object Date]",l="[object Error]",u="[object Function]",d="[object GeneratorFunction]",h="[object Map]",f="[object Number]",g="[object Object]",m="[object Promise]",y="[object RegExp]",p="[object Set]",v="[object String]",w="[object Symbol]",b="[object WeakMap]",S="[object ArrayBuffer]",x="[object DataView]",T="[object Float32Array]",N="[object Float64Array]",_="[object Int8Array]",E="[object Int16Array]",A="[object Int32Array]",L="[object Uint8Array]",$="[object Uint8ClampedArray]",W="[object Uint16Array]",C="[object Uint32Array]",I=/[\\^$.*+?()[\]{}|]/g,F=/\w*$/,D=/^\[object .+?Constructor\]$/,k=/^(?:0|[1-9]\d*)$/,R={};R[s]=R[o]=R[S]=R[x]=R[a]=R[c]=R[T]=R[N]=R[_]=R[E]=R[A]=R[h]=R[f]=R[g]=R[y]=R[p]=R[v]=R[w]=R[L]=R[$]=R[W]=R[C]=!0,R[l]=R[u]=R[b]=!1;var q=typeof Ln=="object"&&Ln&&Ln.Object===Object&&Ln,ne=typeof self=="object"&&self&&self.Object===Object&&self,X=q||ne||Function("return this")(),G=e&&!e.nodeType&&e,te=G&&!0&&t&&!t.nodeType&&t,le=te&&te.exports===G;function ge(B,se){return B.set(se[0],se[1]),B}function Ce(B,se){return B.add(se),B}function xe(B,se){for(var me=-1,rt=B?B.length:0;++me-1}function fo(B,se){var me=this.__data__,rt=Xe(me,B);return rt<0?me.push([B,se]):me[rt][1]=se,this}wt.prototype.clear=Tt,wt.prototype.delete=Fn,wt.prototype.get=xn,wt.prototype.has=Kr,wt.prototype.set=fo;function fi(B){var se=-1,me=B?B.length:0;for(this.clear();++se-1&&B%1==0&&B-1&&B%1==0&&B<=i}function $0(B){var se=typeof B;return!!B&&(se=="object"||se=="function")}function N6(B){return!!B&&typeof B=="object"}function C1(B){return cI(B)?Et(B):po(B)}function P6(){return[]}function D6(){return!1}t.exports=A6})(zv,zv.exports);var DV=zv.exports;const a4=Wf(DV);var Bt;(function(t){t.Int="int",t.UInt="uint",t.Buffer="buffer",t.BoolTrue="true",t.BoolFalse="false",t.PrincipalStandard="address",t.PrincipalContract="contract",t.ResponseOk="ok",t.ResponseErr="err",t.OptionalNone="none",t.OptionalSome="some",t.List="list",t.Tuple="tuple",t.StringASCII="ascii",t.StringUTF8="utf8"})(Bt||(Bt={}));var pr;(function(t){t[t.int=0]="int",t[t.uint=1]="uint",t[t.buffer=2]="buffer",t[t.true=3]="true",t[t.false=4]="false",t[t.address=5]="address",t[t.contract=6]="contract",t[t.ok=7]="ok",t[t.err=8]="err",t[t.none=9]="none",t[t.some=10]="some",t[t.list=11]="list",t[t.tuple=12]="tuple",t[t.ascii=13]="ascii",t[t.utf8=14]="utf8"})(pr||(pr={}));function x2(t){return pr[t]}const c4=()=>({type:Bt.BoolTrue}),l4=()=>({type:Bt.BoolFalse}),RV=t=>t?c4():l4(),u4=t=>{if(t.byteLength>1048576)throw new Error("Cannot construct clarity buffer that is greater than 1MB");return{type:Bt.Buffer,value:pt(t)}},eN=BigInt("0xffffffffffffffffffffffffffffffff"),OV=BigInt(0),tN=BigInt("0x7fffffffffffffffffffffffffffffff"),nN=BigInt("-170141183460469231731687303715884105728"),d4=t=>{typeof t=="string"&&t.toLowerCase().startsWith("0x")&&(t=jS(Ft(t))),ts(t,Uint8Array)&&(t=jS(t));const e=Si(t);if(e>tN)throw new RangeError(`Cannot construct clarity integer from value greater than ${tN}`);if(e{const e=Si(t);if(eeN)throw new RangeError(`Cannot construct unsigned clarity integer greater than ${eN}`);return{type:Bt.UInt,value:e}};function f4(t){return{type:Bt.List,value:t}}function A2(){return{type:Bt.OptionalNone}}function C2(t){return{type:Bt.OptionalSome,value:t}}var qe;(function(t){t[t.Address=0]="Address",t[t.Principal=1]="Principal",t[t.LengthPrefixedString=2]="LengthPrefixedString",t[t.MemoString=3]="MemoString",t[t.Asset=4]="Asset",t[t.PostCondition=5]="PostCondition",t[t.PublicKey=6]="PublicKey",t[t.LengthPrefixedList=7]="LengthPrefixedList",t[t.Payload=8]="Payload",t[t.MessageSignature=9]="MessageSignature",t[t.StructuredDataSignature=10]="StructuredDataSignature",t[t.TransactionAuthField=11]="TransactionAuthField"})(qe||(qe={}));function UV(){return{type:qe.Address,version:Oo.MainnetSingleSig,hash160:"0".repeat(40)}}function rN(t){if(t&&M4(t,kv))throw new Error(`Memo exceeds maximum length of ${kv} bytes`);return{type:qe.MemoString,content:t}}function T2(t,e){return{type:qe.LengthPrefixedList,lengthPrefixBytes:e||4,values:t}}function tx(t){if(Ft(t).byteLength!=jb)throw Error("Invalid signature");return{type:qe.MessageSignature,data:t}}function LV(t,e,n){return typeof t=="string"&&(t=JV(t)),typeof n=="string"&&(n=rN(n)),{type:qe.Payload,payloadType:fn.TokenTransfer,recipient:t,amount:Si(e),memo:n??rN("")}}function kV(t,e,n,r){return typeof e=="string"&&(e=Vo(e)),typeof n=="string"&&(n=Vo(n)),{type:qe.Payload,payloadType:fn.ContractCall,contractAddress:typeof t=="string"?ql(t):t,contractName:e,functionName:n,functionArgs:r}}function $V(t){return Vo(t,4,1e5)}function iN(t,e,n){return typeof t=="string"&&(t=Vo(t)),typeof e=="string"&&(e=$V(e)),typeof n=="number"?{type:qe.Payload,payloadType:fn.VersionedSmartContract,clarityVersion:n,contractName:t,codeBody:e}:{type:qe.Payload,payloadType:fn.SmartContract,contractName:t,codeBody:e}}function BV(){return{type:qe.Payload,payloadType:fn.PoisonMicroblock}}function sN(t,e){if(t.byteLength!=Gu)throw Error(`Coinbase buffer size must be ${Gu} bytes`);return e!=null?{type:qe.Payload,payloadType:fn.CoinbaseToAltRecipient,coinbaseBytes:t,recipient:e}:{type:qe.Payload,payloadType:fn.Coinbase,coinbaseBytes:t}}function FV(t,e,n){if(t.byteLength!=Gu)throw Error(`Coinbase buffer size must be ${Gu} bytes`);if(n.byteLength!=ZS)throw Error(`VRF proof buffer size must be ${ZS} bytes`);return{type:qe.Payload,payloadType:fn.NakamotoCoinbase,coinbaseBytes:t,recipient:e.type===Bt.OptionalSome?e.value:void 0,vrfProof:n}}function zV(t,e,n,r,i,s,o){return{type:qe.Payload,payloadType:fn.TenureChange,tenureHash:t,previousTenureHash:e,burnViewHash:n,previousTenureEnd:r,previousTenureBlocks:i,cause:s,publicKeyHash:o}}function Vo(t,e,n){const r=e||1,i=n||gV;if(M4(t,i))throw new Error(`String length exceeds maximum bytes ${i}`);return{type:qe.LengthPrefixedString,content:t,lengthPrefixBytes:r,maxLengthBytes:i}}function HV(t,e,n){return{type:qe.Asset,address:ql(t),contractName:Vo(e),assetName:Vo(n)}}function ql(t){const e=bd.c32addressDecode(t);return{type:qe.Address,version:e[0],hash160:e[1]}}function jV(t,e){const n=ql(t),r=Vo(e);return{type:qe.Principal,prefix:Ss.Contract,address:n,contractName:r}}function VV(t){const e=ql(t);return{type:qe.Principal,prefix:Ss.Standard,address:e}}function Fh(t,e){return{pubKeyEncoding:t,type:qe.TransactionAuthField,contents:e}}function ja(t){switch(t.type){case qe.Address:return c0(t);case qe.Principal:return p4(t);case qe.LengthPrefixedString:return xf(t);case qe.MemoString:return GV(t);case qe.Asset:return m4(t);case qe.PostCondition:return w4(t);case qe.PublicKey:return ix(t);case qe.LengthPrefixedList:return I2(t);case qe.Payload:return v4(t);case qe.TransactionAuthField:return ZV(t);case qe.MessageSignature:return M2(t)}}function c0(t){const e=[];return e.push(Ft(s0(t.version,1))),e.push(Ft(t.hash160)),ir(e)}function Sf(t){const e=ts(t,Pn)?t:new Pn(t),n=Ob(pt(e.readBytes(1))),r=pt(e.readBytes(20));return{type:qe.Address,version:n,hash160:r}}function p4(t){const e=[];return e.push(t.prefix),(t.prefix===Ss.Standard||t.prefix===Ss.Contract)&&e.push(c0(t.address)),t.prefix===Ss.Contract&&e.push(xf(t.contractName)),ir(e)}function WV(t){const e=ts(t,Pn)?t:new Pn(t),n=e.readUInt8Enum(Ss,s=>{throw new bs(`Unexpected Principal payload type: ${s}`)});if(n===Ss.Origin)return{type:qe.Principal,prefix:n};const r=Sf(e);if(n===Ss.Standard)return{type:qe.Principal,prefix:n,address:r};const i=Xs(e);return{type:qe.Principal,prefix:n,address:r,contractName:i}}function xf(t){const e=[],n=Gl(t.content),r=n.byteLength;return e.push(Ft(s0(r,t.lengthPrefixBytes))),e.push(n),ir(e)}function Xs(t,e,n){e=e||1;const r=ts(t,Pn)?t:new Pn(t),i=Ob(pt(r.readBytes(e))),s=Yf(r.readBytes(i));return Vo(s,e,n??128)}function GV(t){const e=[],n=Gl(t.content),r=pW(pt(n),kv*2);return e.push(Ft(r)),ir(e)}function g4(t){const e=ts(t,Pn)?t:new Pn(t);let n=Yf(e.readBytes(kv));return n=n.replace(/\u0000*$/,""),{type:qe.MemoString,content:n}}function m4(t){const e=[];return e.push(c0(t.address)),e.push(xf(t.contractName)),e.push(xf(t.assetName)),ir(e)}function nx(t){const e=ts(t,Pn)?t:new Pn(t);return{type:qe.Asset,address:Sf(e),contractName:Xs(e),assetName:Xs(e)}}function I2(t){const e=t.values,n=[];n.push(Ft(s0(e.length,t.lengthPrefixBytes)));for(const r of e)n.push(ja(r));return ir(n)}function y4(t,e,n){const r=ts(t,Pn)?t:new Pn(t),i=Ob(pt(r.readBytes(4))),s=[];for(let o=0;oBigInt("0xffffffffffffffff"))throw new Bh("The post-condition amount may not be larger than 8 bytes");e.push(Ul(t.amount,8))}return ir(e)}function KV(t){const e=ts(t,Pn)?t:new Pn(t),n=e.readUInt8Enum(kr,a=>{throw new bs(`Could not read ${a} as PostConditionType`)}),r=WV(e);let i,s,o;switch(n){case kr.STX:return i=e.readUInt8Enum($v,c=>{throw new bs(`Could not read ${c} as FungibleConditionCode`)}),o=BigInt(`0x${pt(e.readBytes(8))}`),{type:qe.PostCondition,conditionType:kr.STX,principal:r,conditionCode:i,amount:o};case kr.Fungible:return s=nx(e),i=e.readUInt8Enum($v,c=>{throw new bs(`Could not read ${c} as FungibleConditionCode`)}),o=BigInt(`0x${pt(e.readBytes(8))}`),{type:qe.PostCondition,conditionType:kr.Fungible,principal:r,conditionCode:i,amount:o,asset:s};case kr.NonFungible:s=nx(e);const a=Po(e);return i=e.readUInt8Enum(QS,c=>{throw new bs(`Could not read ${c} as FungibleConditionCode`)}),{type:qe.PostCondition,conditionType:kr.NonFungible,principal:r,conditionCode:i,asset:s,assetName:a}}}function v4(t){const e=[];switch(e.push(t.payloadType),t.payloadType){case fn.TokenTransfer:e.push(ha(t.recipient)),e.push(Ul(t.amount,8)),e.push(ja(t.memo));break;case fn.ContractCall:e.push(ja(t.contractAddress)),e.push(ja(t.contractName)),e.push(ja(t.functionName));const n=new Uint8Array(4);nd(n,t.functionArgs.length,0),e.push(n),t.functionArgs.forEach(r=>{e.push(ha(r))});break;case fn.SmartContract:e.push(ja(t.contractName)),e.push(ja(t.codeBody));break;case fn.VersionedSmartContract:e.push(t.clarityVersion),e.push(ja(t.contractName)),e.push(ja(t.codeBody));break;case fn.PoisonMicroblock:break;case fn.Coinbase:e.push(t.coinbaseBytes);break;case fn.CoinbaseToAltRecipient:e.push(t.coinbaseBytes),e.push(ha(t.recipient));break;case fn.NakamotoCoinbase:e.push(t.coinbaseBytes),e.push(ha(t.recipient?C2(t.recipient):A2())),e.push(t.vrfProof);break;case fn.TenureChange:e.push(Ft(t.tenureHash)),e.push(Ft(t.previousTenureHash)),e.push(Ft(t.burnViewHash)),e.push(Ft(t.previousTenureEnd)),e.push(nd(new Uint8Array(4),t.previousTenureBlocks)),e.push(Dj(new Uint8Array(1),t.cause)),e.push(Ft(t.publicKeyHash));break}return ir(e)}function XV(t){const e=ts(t,Pn)?t:new Pn(t);switch(e.readUInt8Enum(fn,r=>{throw new Error(`Cannot recognize PayloadType: ${r}`)})){case fn.TokenTransfer:const r=Po(e),i=Si(e.readBytes(8)),s=g4(e);return LV(r,i,s);case fn.ContractCall:const o=Sf(e),a=Xs(e),c=Xs(e),l=[],u=e.readUInt32BE();for(let b=0;b{throw new Error(`Cannot recognize ClarityVersion: ${T}`)}),S=Xs(e),x=Xs(e,4,CV);return iN(S,x,b)}case fn.PoisonMicroblock:return BV();case fn.Coinbase:{const b=e.readBytes(Gu);return sN(b)}case fn.CoinbaseToAltRecipient:{const b=e.readBytes(Gu),S=Po(e);return sN(b,S)}case fn.NakamotoCoinbase:{const b=e.readBytes(Gu),S=Po(e),x=e.readBytes(ZS);return FV(b,S,x)}case fn.TenureChange:const f=pt(e.readBytes(20)),g=pt(e.readBytes(20)),m=pt(e.readBytes(20)),y=pt(e.readBytes(32)),p=e.readUInt32BE(),v=e.readUInt8Enum(ex,b=>{throw new Error(`Cannot recognize TenureChangeCause: ${b}`)}),w=pt(e.readBytes(20));return zV(f,g,m,y,p,v,w)}}function rx(t){const e=ts(t,Pn)?t:new Pn(t);return tx(pt(e.readBytes(jb)))}function YV(t){const e=ts(t,Pn)?t:new Pn(t),n=e.readUInt8Enum(No,r=>{throw new bs(`Could not read ${r} as AuthFieldType`)});switch(n){case No.PublicKeyCompressed:return Fh(qn.Compressed,sx(e));case No.PublicKeyUncompressed:return Fh(qn.Uncompressed,Jf(AW(sx(e).data)));case No.SignatureCompressed:return Fh(qn.Compressed,rx(e));case No.SignatureUncompressed:return Fh(qn.Uncompressed,rx(e));default:throw new Error(`Unknown auth field type: ${JSON.stringify(n)}`)}}function M2(t){return Ft(t.data)}function ZV(t){const e=[];switch(t.contents.type){case qe.PublicKey:e.push(t.pubKeyEncoding===qn.Compressed?No.PublicKeyCompressed:No.PublicKeyUncompressed),e.push(Ft(xW(t.contents.data)));break;case qe.MessageSignature:e.push(t.pubKeyEncoding===qn.Compressed?No.SignatureCompressed:No.SignatureUncompressed),e.push(M2(t.contents));break}return ir(e)}function ix(t){return t.data.slice()}function sx(t){const e=ts(t,Pn)?t:new Pn(t),n=e.readUInt8(),r=n===4?wV:yV;return Jf(ir([n,e.readBytes(r)]))}function N2(t,e,n,r){if(r.length===0)throw Error("Invalid number of public keys");if((e===jt.P2PKH||e===jt.P2WPKH)&&(r.length!==1||n!==1))throw Error("Invalid number of public keys or signatures");if((e===jt.P2WPKH||e===jt.P2WSH||e===jt.P2WSHNonSequential)&&!r.map(i=>i.data).every(Qf))throw Error("Public keys must be compressed for segwit");switch(e){case jt.P2PKH:return ng(t,N4(r[0].data));case jt.P2WPKH:return ng(t,gW(r[0].data));case jt.P2SH:case jt.P2SHNonSequential:return ng(t,mW(n,r.map(ix)));case jt.P2WSH:case jt.P2WSHNonSequential:return ng(t,yW(n,r.map(ix)))}}function ng(t,e){return{type:qe.Address,version:t,hash160:e}}function Wb(t){return bd.c32address(t.version,t.hash160)}function oN(t){const[e,n,r]=t.split(/\.|::/);return HV(e,n,r)}function cE(t){if(t.includes(".")){const[e,n]=t.split(".");return jV(e,n)}else return VV(t)}function JV(t){if(t.includes(".")){const[e,n]=t.split(".");return E4(e,n)}else return b4(t)}function b4(t){const e=ql(t);return{type:Bt.PrincipalStandard,value:Wb(e)}}function QV(t){return{type:Bt.PrincipalStandard,value:Wb(t)}}function E4(t,e){const n=ql(t),r=Vo(e);return _4(n,r)}function _4(t,e){if(Gl(e.content).byteLength>=128)throw new Error("Contract name must be less than 128 bytes");return{type:Bt.PrincipalContract,value:`${Wb(t)}.${e.content}`}}function S4(t){return{type:Bt.ResponseErr,value:t}}function x4(t){return{type:Bt.ResponseOk,value:t}}const A4=t=>({type:Bt.StringASCII,value:t}),C4=t=>({type:Bt.StringUTF8,value:t});function T4(t){for(const e in t)if(!wW(e))throw new Error(`"${e}" is not a valid Clarity name`);return{type:Bt.Tuple,value:t}}function Po(t){let e;if(typeof t=="string"){const r=t.slice(0,2).toLowerCase()==="0x";e=new Pn(Ft(r?t.slice(2):t))}else t instanceof Uint8Array?e=new Pn(t):e=t;switch(e.readUInt8Enum(pr,r=>{throw new bs(`Cannot recognize Clarity Type: ${r}`)})){case pr.int:return d4(jS(e.readBytes(16)));case pr.uint:return h4(e.readBytes(16));case pr.buffer:const r=e.readUInt32BE();return u4(e.readBytes(r));case pr.true:return c4();case pr.false:return l4();case pr.address:const i=Sf(e);return QV(i);case pr.contract:const s=Sf(e),o=Xs(e);return _4(s,o);case pr.ok:return x4(Po(e));case pr.err:return S4(Po(e));case pr.none:return A2();case pr.some:return C2(Po(e));case pr.list:const a=e.readUInt32BE(),c=[];for(let m=0;mi.localeCompare(s));for(const i of r){const s=Vo(i);e.push(xf(s));const o=ha(t.value[i]);e.push(o)}return Ta(t.type,ir(e))}function I4(t,e){const n=[],r=e=="ascii"?bj(t.value):Gl(t.value),i=new Uint8Array(4);return nd(i,r.length,0),n.push(i),n.push(r),Ta(t.type,ir(n))}function uW(t){return I4(t,"ascii")}function dW(t){return I4(t,"utf8")}function hW(t){return pt(ha(t))}function ha(t){switch(t.type){case Bt.BoolTrue:case Bt.BoolFalse:return eW(t);case Bt.OptionalNone:case Bt.OptionalSome:return tW(t);case Bt.Buffer:return nW(t);case Bt.UInt:return iW(t);case Bt.Int:return rW(t);case Bt.PrincipalStandard:return sW(t);case Bt.PrincipalContract:return oW(t);case Bt.ResponseOk:case Bt.ResponseErr:return aW(t);case Bt.List:return cW(t);case Bt.Tuple:return lW(t);case Bt.StringASCII:return uW(t);case Bt.StringUTF8:return dW(t);default:throw new Bh("Unable to serialize. Invalid Clarity Value.")}}const fW=t=>t.length%2?`0${t}`:t,pW=(t,e)=>t.padEnd(e,"0"),M4=(t,e)=>t?Gl(t).length>e:!1;function ox(t){return a4(t)}const um=t=>v2(ro(t)),P2=t=>pt(Ck(t)),N4=t=>pt(um(t)),gW=t=>{const e=um(t),n=Sa(new Uint8Array([0]),new Uint8Array([e.length]),e),r=um(n);return pt(r)},mW=(t,e)=>{if(t>15||e.length>15)throw Error("P2SH multisig address can only contain up to 15 public keys");const n=[];n.push(80+t),e.forEach(s=>{n.push(s.length),n.push(s)}),n.push(80+e.length),n.push(174);const r=ir(n),i=um(r);return pt(i)},yW=(t,e)=>{if(t>15||e.length>15)throw Error("P2WSH multisig address can only contain up to 15 public keys");const n=[];n.push(80+t),e.forEach(c=>{n.push(c.length),n.push(c)}),n.push(80+e.length),n.push(174);const r=ir(n),i=ro(r),s=[];s.push(0),s.push(i.length),s.push(i);const o=ir(s),a=um(o);return pt(a)};function wW(t){return/^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/.test(t)&&t.length<128}function vW(t){const[e,n]=t.split(".");if(!e||!n)throw new Error(`Invalid contract identifier: ${t}`);return[e,n]}vi.hmacSha256Sync=(t,...e)=>{const n=Zf.create(ro,t);return e.forEach(r=>n.update(r)),n.digest()};function bW(t,e="mainnet"){e=_2(e),t=typeof t=="string"?Ft(t):t;const n=PV(jt.P2PKH,e),r=ng(n,N4(t));return Wb(r)}function Jf(t){return t=typeof t=="string"?Ft(t):t,{type:qe.PublicKey,data:t}}function EW(t,e,n=qn.Compressed){const r=Ij(e),i=new eo(CM(r.r),CM(r.s)),s=on.fromSignature(t,i,r.recoveryId),o=n===qn.Compressed;return s.toHex(o)}function _W(t){return typeof t=="string"?t:pt(t)}const D2=_W;function P4(t){return(typeof t=="string"?t.length/2:t.byteLength)===Tj}function Qf(t){return!D2(t).startsWith("04")}function SW(t){t=f2(t);const e=P4(t);return pt(Ub(t.slice(0,32),e))}function xW(t){return on.fromHex(D2(t)).toHex(!0)}function AW(t){return on.fromHex(D2(t)).toHex(!1)}function CW(t,e){t=f2(t);const[n,r]=m2(e,t.slice(0,32),{canonical:!0,recovered:!0});if(r==null)throw new Error("No signature recoveryId received");return s0(r,1)+eo.fromHex(n).toCompactHex()}function R2(){return{type:qe.MessageSignature,data:pt(new Uint8Array(jb))}}function D4(t,e,n,r){const i=N2(0,t,1,[Jf(e)]).hash160,s=Qf(e)?qn.Compressed:qn.Uncompressed;return{hashMode:t,signer:i,nonce:Si(n),fee:Si(r),keyEncoding:s,signature:R2()}}function dm(t){return"signature"in t}function aN(t){return t===jt.P2SH||t===jt.P2WSH}function TW(t){return t===jt.P2SHNonSequential||t===jt.P2WSHNonSequential}function cN(t){const e=ox(t);return e.nonce=0,e.fee=0,dm(e)?e.signature=R2():e.fields=[],{...e,nonce:BigInt(0),fee:BigInt(0)}}function IW(t){const e=[t.hashMode,Ft(t.signer),Ul(t.nonce,8),Ul(t.fee,8),t.keyEncoding,M2(t.signature)];return ir(e)}function MW(t){const e=[t.hashMode,Ft(t.signer),Ul(t.nonce,8),Ul(t.fee,8)],n=T2(t.fields);e.push(I2(n));const r=new Uint8Array(2);return Nj(r,t.signaturesRequired,0),e.push(r),ir(e)}function NW(t,e){const n=pt(e.readBytes(20)),r=BigInt(`0x${pt(e.readBytes(8))}`),i=BigInt(`0x${pt(e.readBytes(8))}`),s=e.readUInt8Enum(qn,a=>{throw new bs(`Could not parse ${a} as PubKeyEncoding`)});if(t===jt.P2WPKH&&s!=qn.Compressed)throw new bs("Failed to parse singlesig spending condition: incomaptible hash mode and key encoding");const o=rx(e);return{hashMode:t,signer:n,nonce:r,fee:i,keyEncoding:s,signature:o}}function PW(t,e){const n=pt(e.readBytes(20)),r=BigInt("0x"+pt(e.readBytes(8))),i=BigInt("0x"+pt(e.readBytes(8))),s=y4(e,qe.TransactionAuthField).values;let o=!1,a=0;for(const l of s)switch(l.contents.type){case qe.PublicKey:Qf(l.contents.data)||(o=!0);break;case qe.MessageSignature:if(l.pubKeyEncoding===qn.Uncompressed&&(o=!0),a+=1,a===65536)throw new Ru("Failed to parse multisig spending condition: too many signatures");break}const c=e.readUInt16BE();if(o&&(t===jt.P2WSH||t===jt.P2WSHNonSequential))throw new Ru("Uncompressed keys are not allowed in this hash mode");return{hashMode:t,signer:n,nonce:r,fee:i,fields:s,signaturesRequired:c}}function lE(t){return dm(t)?IW(t):MW(t)}function uE(t){const e=t.readUInt8Enum(jt,n=>{throw new bs(`Could not parse ${n} as AddressHashMode`)});return e===jt.P2PKH||e===jt.P2WPKH?NW(e,t):PW(e,t)}function R4(t,e,n,r){const s=t+pt(new Uint8Array([e]))+pt(Ul(n,8))+pt(Ul(r,8));if(Ft(s).byteLength!==49)throw Error("Invalid signature hash length");return P2(Ft(s))}function O4(t,e,n){const r=33+jb,i=Qf(e.data)?qn.Compressed:qn.Uncompressed,s=t+fW(i.toString(16))+n,o=Ft(s);if(o.byteLength>r)throw Error("Invalid signature hash length");return P2(o)}function DW(t,e,n,r,i){const s=R4(t,e,n,r),o=CW(i,s),a=Jf(SW(i)),c=O4(s,a,o);return{nextSig:o,nextSigHash:c}}function U4(t,e,n,r,i,s){const o=R4(t,e,n,r),a=Jf(EW(o,s,i)),c=O4(o,a,s);return{pubKey:a,nextSigHash:c}}function RW(){const t=D4(jt.P2PKH,"",0,0);return t.signer=UV().hash160,t.keyEncoding=qn.Compressed,t.signature=R2(),t}function lN(t,e,n){return dm(t)?OW(t,e,n):UW(t,e,n)}function OW(t,e,n){const{pubKey:r,nextSigHash:i}=U4(e,n,t.fee,t.nonce,t.keyEncoding,t.signature.data),s=N2(0,t.hashMode,1,[r]).hash160;if(s!==t.signer)throw new Ru(`Signer hash does not equal hash of public key(s): ${s} != ${t.signer}`);return i}function UW(t,e,n){const r=[];let i=e,s=!1,o=0;for(const c of t.fields)switch(c.contents.type){case qe.PublicKey:Qf(c.contents.data)||(s=!0),r.push(c.contents);break;case qe.MessageSignature:c.pubKeyEncoding===qn.Uncompressed&&(s=!0);const{pubKey:l,nextSigHash:u}=U4(i,n,t.fee,t.nonce,c.pubKeyEncoding,c.contents.data);if(aN(t.hashMode)&&(i=u),r.push(l),o+=1,o===65536)throw new Ru("Too many signatures");break}if(aN(t.hashMode)&&o!==t.signaturesRequired||TW(t.hashMode)&&o{throw new bs(`Could not parse ${r} as AuthType`)});let n;switch(e){case Jn.Standard:return n=uE(t),L4(n);case Jn.Sponsored:n=uE(t);const r=uE(t);return k4(n,r)}}class jW{constructor({auth:e,payload:n,postConditions:r=T2([]),postConditionMode:i=Ef.Deny,transactionVersion:s,chainId:o,network:a="mainnet"}){a=_2(a),this.transactionVersion=s??a.transactionVersion,this.chainId=o??a.chainId,this.auth=e,"amount"in n?this.payload={...n,amount:Si(n.amount)}:this.payload=n,this.postConditionMode=i,this.postConditions=r,this.anchorMode=ds.Any}signBegin(){const e=ox(this);return e.auth=uN(e.auth),e.txid()}verifyBegin(){const e=ox(this);return e.auth=uN(e.auth),e.txid()}verifyOrigin(){return LW(this.auth,this.verifyBegin())}signNextOrigin(e,n){if(this.auth.spendingCondition===void 0)throw new Error('"auth.spendingCondition" is undefined');if(this.auth.authType===void 0)throw new Error('"auth.authType" is undefined');return this.signAndAppend(this.auth.spendingCondition,e,Jn.Standard,n)}signNextSponsor(e,n){if(this.auth.authType===Jn.Sponsored)return this.signAndAppend(this.auth.sponsorSpendingCondition,e,Jn.Sponsored,n);throw new Error('"auth.sponsorSpendingCondition" is undefined')}appendPubkey(e){const n=typeof e=="object"&&"type"in e?e:Jf(e),r=this.auth.spendingCondition;if(r&&!dm(r)){const i=Qf(n.data);r.fields.push(Fh(i?qn.Compressed:qn.Uncompressed,n))}else throw new Error("Can't append public key to a singlesig condition")}signAndAppend(e,n,r,i){const{nextSig:s,nextSigHash:o}=DW(n,r,e.fee,e.nonce,i);if(dm(e))e.signature=tx(s);else{const a=P4(i);e.fields.push(Fh(a?qn.Compressed:qn.Uncompressed,tx(s)))}return o}txid(){const e=this.serializeBytes();return P2(e)}setSponsor(e){if(this.auth.authType!=Jn.Sponsored)throw new Bv("Cannot sponsor sign a non-sponsored transaction");this.auth=FW(this.auth,e)}setFee(e){this.auth=kW(this.auth,e)}setNonce(e){this.auth=$W(this.auth,e)}setSponsorNonce(e){if(this.auth.authType!=Jn.Sponsored)throw new Bv("Cannot sponsor sign a non-sponsored transaction");this.auth=BW(this.auth,e)}serialize(){return pt(this.serializeBytes())}serializeBytes(){if(this.transactionVersion===void 0)throw new Bh('"transactionVersion" is undefined');if(this.chainId===void 0)throw new Bh('"chainId" is undefined');if(this.auth===void 0)throw new Bh('"auth" is undefined');if(this.payload===void 0)throw new Bh('"payload" is undefined');const e=[];e.push(this.transactionVersion);const n=new Uint8Array(4);return nd(n,this.chainId,0),e.push(n),e.push(zW(this.auth)),e.push(this.anchorMode),e.push(this.postConditionMode),e.push(I2(this.postConditions)),e.push(v4(this.payload)),ir(e)}}function Gb(t){const e=ts(t,Pn)?t:new Pn(t),n=e.readUInt8Enum(Ro,u=>{throw new Error(`Could not parse ${u} as TransactionVersion`)}),r=e.readUInt32BE(),i=HW(e),s=e.readUInt8Enum(ds,u=>{throw new Error(`Could not parse ${u} as AnchorMode`)}),o=e.readUInt8Enum(Ef,u=>{throw new Error(`Could not parse ${u} as PostConditionMode`)}),a=y4(e,qe.PostCondition),c=XV(e),l=new jW({transactionVersion:n,chainId:r,auth:i,payload:c,postConditions:a,postConditionMode:o});return l.anchorMode=s,l}var ax;(function(t){t[t.eq=1]="eq",t[t.gt=2]="gt",t[t.lt=4]="lt",t[t.gte=3]="gte",t[t.lte=5]="lte",t[t.sent=16]="sent",t[t["not-sent"]=17]="not-sent"})(ax||(ax={}));function VW(t){switch(t.type){case"stx-postcondition":return{type:qe.PostCondition,conditionType:kr.STX,principal:t.address==="origin"?{type:qe.Principal,prefix:Ss.Origin}:cE(t.address),conditionCode:dE(t.condition),amount:BigInt(t.amount)};case"ft-postcondition":return{type:qe.PostCondition,conditionType:kr.Fungible,principal:t.address==="origin"?{type:qe.Principal,prefix:Ss.Origin}:cE(t.address),conditionCode:dE(t.condition),amount:BigInt(t.amount),asset:oN(t.asset)};case"nft-postcondition":return{type:qe.PostCondition,conditionType:kr.NonFungible,principal:t.address==="origin"?{type:qe.Principal,prefix:Ss.Origin}:cE(t.address),conditionCode:dE(t.condition),asset:oN(t.asset),assetName:t.assetId};default:throw new Error("Invalid post condition type")}}function dE(t){return ax[t]}function dN(t){const e=VW(t);return qV(e)}const WW="0123456789ABCDEFGHJKMNPQRSTVWXYZ";function hN(t){const e="version"in t?t.version:WW.indexOf(t.versionChar.toUpperCase()),n=bd.c32address(e,t.hash160);return t.contractName?`${n}.${t.contractName}`:n}const fN=RV,GW=d4,qW=h4,KW=E4,XW=b4,YW=f4,ZW=A4,JW=C4,QW=u4,eG=A2,tG=C2,nG=x4,rG=S4,iG=T4,cx=hW,sG=Po;function oG(t,e){const n=io.decodeToken(t),r=n.payload;if(typeof r=="string")throw new Error("Unexpected token payload type of string");if(r.hasOwnProperty("subject")&&r.subject){if(!r.subject.hasOwnProperty("publicKey"))throw new Error("Token doesn't have a subject public key")}else throw new Error("Token doesn't have a subject");if(r.hasOwnProperty("issuer")&&r.issuer){if(!r.issuer.hasOwnProperty("publicKey"))throw new Error("Token doesn't have an issuer public key")}else throw new Error("Token doesn't have an issuer");if(!r.hasOwnProperty("claim"))throw new Error("Token doesn't have a claim");const i=r.issuer.publicKey,s=bW(i);if(e!==i){if(e!==s)throw new Error("Token issuer public key does not match the verifying value")}const o=new io.TokenVerifier(n.header.alg,i);if(!o)throw new Error("Invalid token verifier");if(!o.verify(t))throw new Error("Token verification failed");return n}function aG(t,e=null){let n;e?n=oG(t,e):n=io.decodeToken(t);let r={};if(n.hasOwnProperty("payload")){const i=n.payload;if(typeof i=="string")throw new Error("Unexpected token payload type of string");i.hasOwnProperty("claim")&&(r=i.claim)}return r}const pN="_blockstackDidCheckEchoReply",cG="echoReply",lG="authContinuation";function uG(t){return t?(/^[?#]/.test(t)?t.slice(1):t).split("&").reduce((n,r)=>{const[i,s]=r.split("=");return n[i]=s?decodeURIComponent(s.replace(/\+/g," ")):"",n},{}):{}}function dG(){let t;if(typeof self<"u")t=self;else if(typeof window<"u")t=window;else return!1;if(!t.location||!t.localStorage)return!1;const e=t[pN];if(typeof e=="boolean")return e;const n=uG(t.location.search),r=n[cG];if(r){t[pN]=!0;const i=`echo-reply-${r}`;return t.localStorage.setItem(i,"success"),t.setTimeout(()=>{const s=n[lG];t.location.href=s},10),!0}return!1}class lx{constructor(e){let n=!0;if(typeof window>"u"&&typeof self>"u"&&(n=!1),e&&e.appConfig)this.appConfig=e.appConfig;else if(n)this.appConfig=new lk;else throw new lj("You need to specify options.appConfig");e&&e.sessionStore?this.store=e.sessionStore:n?e?this.store=new qM(e.sessionOptions):this.store=new qM:e?this.store=new GM(e.sessionOptions):this.store=new GM}makeAuthRequestToken(e,n,r,i,s,o=dj().getTime(),a={}){const c=this.appConfig;if(!c)throw new zS("Missing AppConfig");return e=e||this.generateAndStoreTransitKey(),n=n||c.redirectURI(),r=r||c.manifestURI(),i=i||c.scopes,s=s||c.appDomain,oV(e,n,r,i,s,o,a)}generateAndStoreTransitKey(){const e=this.store.getSessionData(),n=sV();return e.transitKey=n,this.store.setSessionData(e),n}getAuthResponseToken(){var r;const e=(r=d2("location",{throwIfUnavailable:!0,usageDesc:"getAuthResponseToken"}))==null?void 0:r.search;return new URLSearchParams(e).get("authResponse")??""}isSignInPending(){try{if(dG())return $h.info("protocolEchoReply detected from isSignInPending call, the page is about to redirect."),!0}catch(e){$h.error(`Error checking for protocol echo reply isSignInPending: ${e}`)}return!!this.getAuthResponseToken()}isUserSignedIn(){return!!this.store.getSessionData().userData}async handlePendingSignIn(e=this.getAuthResponseToken(),n=kj()){const r=this.store.getSessionData();if(r.userData)throw new ry("Existing user session found.");const i=this.store.getSessionData().transitKey;this.appConfig&&this.appConfig.coreNode;const s=io.decodeToken(e).payload;if(typeof s=="string")throw new Error("Unexpected token payload type of string");if(!await dV(e))throw new ry("Invalid authentication response.");let a=s.private_key,c=s.core_token;if(eE(s.version,"1.1.0"))if(i!==void 0&&i!=null){if(s.private_key!==void 0&&s.private_key!==null)try{a=await VM(i,s.private_key)}catch{if($h.warn("Failed decryption of appPrivateKey, will try to use as given"),!vi.isValidPrivateKey(s.private_key))throw new ry("Failed decrypting appPrivateKey. Usually means that the transit key has changed during login.")}if(c!=null)try{c=await VM(i,c)}catch{$h.info("Failed decryption of coreSessionToken, will try to use as given")}}else throw new ry("Authenticating with protocol > 1.1.0 requires transit key, and none found.");let l=Cj,u;eE(s.version,"1.2.0")&&s.hubUrl!==null&&s.hubUrl!==void 0&&(l=s.hubUrl),eE(s.version,"1.3.0")&&s.associationToken!==null&&s.associationToken!==void 0&&(u=s.associationToken);const d={profile:s.profile,email:s.email,decentralizedID:s.iss,identityAddress:Jk(s.iss),appPrivateKey:a,coreSessionToken:c,authResponseToken:e,hubUrl:l,appPrivateKeyFromWalletSalt:s.appPrivateKeyFromWalletSalt,coreNode:s.blockstackAPIUrl,gaiaAssociationToken:u},h=s.profile_url;if(!d.profile&&h){const f=await n(h);if(!f.ok)d.profile=Object.assign({},oj);else{const g=await f.text(),m=JSON.parse(g);d.profile=aG(m[0].token)}}else d.profile=s.profile;return r.userData=d,this.store.setSessionData(r),d}loadUserData(){const e=this.store.getSessionData().userData;if(!e)throw new zS("No user data found. Did the user sign in?");return e}encryptContent(e,n){const r=Object.assign({},n);return r.privateKey||(r.privateKey=this.loadUserData().appPrivateKey),S7(e,r)}decryptContent(e,n){const r=Object.assign({},n);return r.privateKey||(r.privateKey=this.loadUserData().appPrivateKey),x7(e,r)}signUserOut(e){this.store.deleteSessionData(),e&&typeof location<"u"&&location.href&&(location.href=e)}}lx.prototype.makeAuthRequest=lx.prototype.makeAuthRequestToken;(function(){(function(t){(function(e){var n=typeof globalThis<"u"&&globalThis||typeof t<"u"&&t||typeof Ln<"u"&&Ln||{},r={searchParams:"URLSearchParams"in n,iterable:"Symbol"in n&&"iterator"in Symbol,blob:"FileReader"in n&&"Blob"in n&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in n,arrayBuffer:"ArrayBuffer"in n};function i(E){return E&&DataView.prototype.isPrototypeOf(E)}if(r.arrayBuffer)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],o=ArrayBuffer.isView||function(E){return E&&s.indexOf(Object.prototype.toString.call(E))>-1};function a(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(E)||E==="")throw new TypeError('Invalid character in header field name: "'+E+'"');return E.toLowerCase()}function c(E){return typeof E!="string"&&(E=String(E)),E}function l(E){var A={next:function(){var L=E.shift();return{done:L===void 0,value:L}}};return r.iterable&&(A[Symbol.iterator]=function(){return A}),A}function u(E){this.map={},E instanceof u?E.forEach(function(A,L){this.append(L,A)},this):Array.isArray(E)?E.forEach(function(A){if(A.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+A.length);this.append(A[0],A[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(A){this.append(A,E[A])},this)}u.prototype.append=function(E,A){E=a(E),A=c(A);var L=this.map[E];this.map[E]=L?L+", "+A:A},u.prototype.delete=function(E){delete this.map[a(E)]},u.prototype.get=function(E){return E=a(E),this.has(E)?this.map[E]:null},u.prototype.has=function(E){return this.map.hasOwnProperty(a(E))},u.prototype.set=function(E,A){this.map[a(E)]=c(A)},u.prototype.forEach=function(E,A){for(var L in this.map)this.map.hasOwnProperty(L)&&E.call(A,this.map[L],L,this)},u.prototype.keys=function(){var E=[];return this.forEach(function(A,L){E.push(L)}),l(E)},u.prototype.values=function(){var E=[];return this.forEach(function(A){E.push(A)}),l(E)},u.prototype.entries=function(){var E=[];return this.forEach(function(A,L){E.push([L,A])}),l(E)},r.iterable&&(u.prototype[Symbol.iterator]=u.prototype.entries);function d(E){if(!E._noBody){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}}function h(E){return new Promise(function(A,L){E.onload=function(){A(E.result)},E.onerror=function(){L(E.error)}})}function f(E){var A=new FileReader,L=h(A);return A.readAsArrayBuffer(E),L}function g(E){var A=new FileReader,L=h(A),$=/charset=([A-Za-z0-9_-]+)/.exec(E.type),W=$?$[1]:"utf-8";return A.readAsText(E,W),L}function m(E){for(var A=new Uint8Array(E),L=new Array(A.length),$=0;$-1?A:E}function b(E,A){if(!(this instanceof b))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');A=A||{};var L=A.body;if(E instanceof b){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,A.headers||(this.headers=new u(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!L&&E._bodyInit!=null&&(L=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=A.credentials||this.credentials||"same-origin",(A.headers||!this.headers)&&(this.headers=new u(A.headers)),this.method=w(A.method||this.method||"GET"),this.mode=A.mode||this.mode||null,this.signal=A.signal||this.signal||function(){if("AbortController"in n){var C=new AbortController;return C.signal}}(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&L)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(L),(this.method==="GET"||this.method==="HEAD")&&(A.cache==="no-store"||A.cache==="no-cache")){var $=/([?&])_=[^&]*/;if($.test(this.url))this.url=this.url.replace($,"$1_="+new Date().getTime());else{var W=/\?/;this.url+=(W.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})};function S(E){var A=new FormData;return E.trim().split("&").forEach(function(L){if(L){var $=L.split("="),W=$.shift().replace(/\+/g," "),C=$.join("=").replace(/\+/g," ");A.append(decodeURIComponent(W),decodeURIComponent(C))}}),A}function x(E){var A=new u,L=E.replace(/\r?\n[\t ]+/g," ");return L.split("\r").map(function($){return $.indexOf(` +`)===0?$.substr(1,$.length):$}).forEach(function($){var W=$.split(":"),C=W.shift().trim();if(C){var I=W.join(":").trim();try{A.append(C,I)}catch(F){console.warn("Response "+F.message)}}}),A}p.call(b.prototype);function T(E,A){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(A||(A={}),this.type="default",this.status=A.status===void 0?200:A.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=A.statusText===void 0?"":""+A.statusText,this.headers=new u(A.headers),this.url=A.url||"",this._initBody(E)}p.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new u(this.headers),url:this.url})},T.error=function(){var E=new T(null,{status:200,statusText:""});return E.ok=!1,E.status=0,E.type="error",E};var N=[301,302,303,307,308];T.redirect=function(E,A){if(N.indexOf(A)===-1)throw new RangeError("Invalid status code");return new T(null,{status:A,headers:{location:E}})},e.DOMException=n.DOMException;try{new e.DOMException}catch{e.DOMException=function(A,L){this.message=A,this.name=L;var $=Error(A);this.stack=$.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function _(E,A){return new Promise(function(L,$){var W=new b(E,A);if(W.signal&&W.signal.aborted)return $(new e.DOMException("Aborted","AbortError"));var C=new XMLHttpRequest;function I(){C.abort()}C.onload=function(){var k={statusText:C.statusText,headers:x(C.getAllResponseHeaders()||"")};W.url.indexOf("file://")===0&&(C.status<200||C.status>599)?k.status=200:k.status=C.status,k.url="responseURL"in C?C.responseURL:k.headers.get("X-Request-URL");var R="response"in C?C.response:C.responseText;setTimeout(function(){L(new T(R,k))},0)},C.onerror=function(){setTimeout(function(){$(new TypeError("Network request failed"))},0)},C.ontimeout=function(){setTimeout(function(){$(new TypeError("Network request timed out"))},0)},C.onabort=function(){setTimeout(function(){$(new e.DOMException("Aborted","AbortError"))},0)};function F(k){try{return k===""&&n.location.href?n.location.href:k}catch{return k}}if(C.open(W.method,F(W.url),!0),W.credentials==="include"?C.withCredentials=!0:W.credentials==="omit"&&(C.withCredentials=!1),"responseType"in C&&(r.blob?C.responseType="blob":r.arrayBuffer&&(C.responseType="arraybuffer")),A&&typeof A.headers=="object"&&!(A.headers instanceof u||n.Headers&&A.headers instanceof n.Headers)){var D=[];Object.getOwnPropertyNames(A.headers).forEach(function(k){D.push(a(k)),C.setRequestHeader(k,c(A.headers[k]))}),W.headers.forEach(function(k,R){D.indexOf(R)===-1&&C.setRequestHeader(R,k)})}else W.headers.forEach(function(k,R){C.setRequestHeader(R,k)});W.signal&&(W.signal.addEventListener("abort",I),C.onreadystatechange=function(){C.readyState===4&&W.signal.removeEventListener("abort",I)}),C.send(typeof W._bodyInit>"u"?null:W._bodyInit)})}return _.polyfill=!0,n.fetch||(n.fetch=_,n.Headers=u,n.Request=b,n.Response=T),e.Headers=u,e.Request=b,e.Response=T,e.fetch=_,Object.defineProperty(e,"__esModule",{value:!0}),e})({})})(typeof self<"u"?self:Ln)})();const hG={referrerPolicy:"origin",headers:{"x-hiro-product":"stacksjs"}};async function fG(t,e){const n={};return Object.assign(n,hG,e),await fetch(t,n)}function pG(t){let e=fG,n=[];return t.length>0&&typeof t[0]=="function"&&(e=t.shift()),t.length>0&&(n=t),{fetchLib:e,middlewares:n}}function gG(...t){const{fetchLib:e,middlewares:n}=pG(t);return async(i,s)=>{let o={url:i,init:s??{}};for(const c of n)typeof c.pre=="function"&&(o=await Promise.resolve(c.pre({fetch:e,...o}))??o);let a=await e(o.url,o.init);for(const c of n)typeof c.post=="function"&&(a=await Promise.resolve(c.post({fetch:e,url:o.url,init:o.init,response:(a==null?void 0:a.clone())??a}))??a);return a}}function Ll(t,e,n){return U2(xi(t,e),n)}function xi(t,e){let n=t;if(typeof n=="number"){if(!Number.isInteger(n))throw new RangeError("Invalid value. Values of type 'number' must be an integer.");if(n>Number.MAX_SAFE_INTEGER)throw new RangeError(`Invalid value. Values of type 'number' must be less than or equal to ${Number.MAX_SAFE_INTEGER}. For larger values, try using a BigInt instead.`);return BigInt(n)}if(typeof n=="string")if(n.toLowerCase().startsWith("0x")){let r=n.slice(2);r=r.padStart(r.length+r.length%2,"0"),n=Gn(r)}else try{return BigInt(n)}catch(r){if(r instanceof SyntaxError)throw new RangeError(`Invalid value. String integer '${n}' is not finite.`)}if(typeof n=="bigint")return n;if(n instanceof Uint8Array)if(e){const r=wG(BigInt(`0x${$n(n)}`),BigInt(n.byteLength*8));return BigInt(r.toString())}else return BigInt(`0x${$n(n)}`);if(n!=null&&typeof n=="object"&&n.constructor.name==="BN")return BigInt(n.toString());throw new TypeError("Invalid value type. Must be a number, bigint, integer-string, hex-string, or Uint8Array.")}function gN(t){if(typeof t!="string")throw new TypeError(`hexToBigInt: expected string, got ${typeof t}`);return BigInt(`0x${t}`)}function l0(t,e=8){return(typeof t=="bigint"?t:xi(t,!1)).toString(16).padStart(e*2,"0")}function O2(t){return parseInt(t,16)}function U2(t,e=16){const n=l0(t,e);return Gn(n)}function mG(t,e){if(t<-(BigInt(1)<=BigInt(0)?BigInt(t):t+(BigInt(1)<e.toString(16).padStart(2,"0"));function $n(t){if(!(t instanceof Uint8Array))throw new Error("Uint8Array expected");let e="";for(const n of t)e+=vG[n];return e}function Gn(t){if(typeof t!="string")throw new TypeError(`hexToBytes: expected string, got ${typeof t}`);t=t.startsWith("0x")||t.startsWith("0X")?t.slice(2):t;const e=t.length%2?`0${t}`:t,n=new Uint8Array(e.length/2);for(let r=0;r255}function mN(t){if(t.some(EG))throw new Error("Some values are invalid bytes.");return new Uint8Array(t)}function qb(...t){if(!t.every(r=>r instanceof Uint8Array))throw new Error("Uint8Array list expected");if(t.length===1)return t[0];const e=t.reduce((r,i)=>r+i.length,0),n=new Uint8Array(e);for(let r=0,i=0;rtypeof e=="number"?mN([e]):e instanceof Array?mN(e):e))}var Af;(function(t){t[t.Testnet=2147483648]="Testnet",t[t.Mainnet=1]="Mainnet"})(Af||(Af={}));var sd;(function(t){t[t.Mainnet=0]="Mainnet",t[t.Testnet=128]="Testnet"})(sd||(sd={}));var yN;(function(t){t[t.Mainnet=385875968]="Mainnet",t[t.Testnet=4278190080]="Testnet"})(yN||(yN={}));const F4=33,hE=32;function _G(t){if(t.length>>0}function AG(t,e,n=0){return t[n+0]=e>>>8,t[n+1]=e>>>0,t}function CG(t,e){return t[e]}function TG(t,e,n=0){return t[n]=e,t}function IG(t,e){return t[e]*2**24+t[e+1]*2**16+t[e+2]*2**8+t[e+3]}function od(t,e,n=0){return t[n+3]=e,e>>>=8,t[n+2]=e,e>>>=8,t[n+1]=e,e>>>=8,t[n]=e,t}const MG="https://api.mainnet.hiro.so",NG="https://api.testnet.hiro.so",PG="http://localhost:3999",DG=["mainnet","testnet","devnet","mocknet"];class so{constructor(e){this.version=sd.Mainnet,this.chainId=Af.Mainnet,this.bnsLookupUrl="https://api.mainnet.hiro.so",this.broadcastEndpoint="/v2/transactions",this.transferFeeEstimateEndpoint="/v2/fees/transfer",this.transactionFeeEstimateEndpoint="/v2/fees/transaction",this.accountEndpoint="/v2/accounts",this.contractAbiEndpoint="/v2/contracts/interface",this.readOnlyFunctionCallEndpoint="/v2/contracts/call-read",this.isMainnet=()=>this.version===sd.Mainnet,this.getBroadcastApiUrl=()=>`${this.coreApiUrl}${this.broadcastEndpoint}`,this.getTransferFeeEstimateApiUrl=()=>`${this.coreApiUrl}${this.transferFeeEstimateEndpoint}`,this.getTransactionFeeEstimateApiUrl=()=>`${this.coreApiUrl}${this.transactionFeeEstimateEndpoint}`,this.getAccountApiUrl=n=>`${this.coreApiUrl}${this.accountEndpoint}/${n}?proof=0`,this.getAccountExtendedBalancesApiUrl=n=>`${this.coreApiUrl}/extended/v1/address/${n}/balances`,this.getAbiApiUrl=(n,r)=>`${this.coreApiUrl}${this.contractAbiEndpoint}/${n}/${r}`,this.getReadOnlyFunctionCallApiUrl=(n,r,i)=>`${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint}/${n}/${r}/${encodeURIComponent(i)}`,this.getInfoUrl=()=>`${this.coreApiUrl}/v2/info`,this.getBlockTimeInfoUrl=()=>`${this.coreApiUrl}/extended/v1/info/network_block_times`,this.getPoxInfoUrl=()=>`${this.coreApiUrl}/v2/pox`,this.getRewardsUrl=(n,r)=>{let i=`${this.coreApiUrl}/extended/v1/burnchain/rewards/${n}`;return r&&(i=`${i}?limit=${r.limit}&offset=${r.offset}`),i},this.getRewardsTotalUrl=n=>`${this.coreApiUrl}/extended/v1/burnchain/rewards/${n}/total`,this.getRewardHoldersUrl=(n,r)=>{let i=`${this.coreApiUrl}/extended/v1/burnchain/reward_slot_holders/${n}`;return r&&(i=`${i}?limit=${r.limit}&offset=${r.offset}`),i},this.getStackerInfoUrl=(n,r)=>`${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint} + ${n}/${r}/get-stacker-info`,this.getDataVarUrl=(n,r,i)=>`${this.coreApiUrl}/v2/data_var/${n}/${r}/${i}?proof=0`,this.getMapEntryUrl=(n,r,i)=>`${this.coreApiUrl}/v2/map_entry/${n}/${r}/${i}?proof=0`,this.coreApiUrl=e.url,this.fetchFn=e.fetchFn??gG()}getNameInfo(e){const n=`${this.bnsLookupUrl}/v1/names/${e}`;return this.fetchFn(n).then(r=>{if(r.status===404)throw new Error("Name not found");if(r.status!==200)throw new Error(`Bad response status: ${r.status}`);return r.json()}).then(r=>r.address?Object.assign({},r,{address:r.address}):r)}}so.fromName=t=>{switch(t){case"mainnet":return new Kl;case"testnet":return new Kb;case"devnet":return new z4;case"mocknet":return new L2;default:throw new Error(`Invalid network name provided. Must be one of the following: ${DG.join(", ")}`)}};so.fromNameOrNetwork=t=>typeof t!="string"&&"version"in t?t:so.fromName(t);class Kl extends so{constructor(e){super({url:(e==null?void 0:e.url)??MG,fetchFn:e==null?void 0:e.fetchFn}),this.version=sd.Mainnet,this.chainId=Af.Mainnet}}class Kb extends so{constructor(e){super({url:(e==null?void 0:e.url)??NG,fetchFn:e==null?void 0:e.fetchFn}),this.version=sd.Testnet,this.chainId=Af.Testnet}}class L2 extends so{constructor(e){super({url:(e==null?void 0:e.url)??PG,fetchFn:e==null?void 0:e.fetchFn}),this.version=sd.Testnet,this.chainId=Af.Testnet}}const z4=L2;var ux;(function(t){t[t.Testnet=2147483648]="Testnet",t[t.Mainnet=1]="Mainnet"})(ux||(ux={}));const RG=ux.Mainnet,OG=128,UG=128,H4=16,Xb=65,LG=34;var qt;(function(t){t[t.Address=0]="Address",t[t.Principal=1]="Principal",t[t.LengthPrefixedString=2]="LengthPrefixedString",t[t.MemoString=3]="MemoString",t[t.AssetInfo=4]="AssetInfo",t[t.PostCondition=5]="PostCondition",t[t.PublicKey=6]="PublicKey",t[t.LengthPrefixedList=7]="LengthPrefixedList",t[t.Payload=8]="Payload",t[t.MessageSignature=9]="MessageSignature",t[t.StructuredDataSignature=10]="StructuredDataSignature",t[t.TransactionAuthField=11]="TransactionAuthField"})(qt||(qt={}));var er;(function(t){t[t.TokenTransfer=0]="TokenTransfer",t[t.SmartContract=1]="SmartContract",t[t.VersionedSmartContract=6]="VersionedSmartContract",t[t.ContractCall=2]="ContractCall",t[t.PoisonMicroblock=3]="PoisonMicroblock",t[t.Coinbase=4]="Coinbase",t[t.CoinbaseToAltRecipient=5]="CoinbaseToAltRecipient",t[t.TenureChange=7]="TenureChange",t[t.NakamotoCoinbase=8]="NakamotoCoinbase"})(er||(er={}));var wN;(function(t){t[t.Clarity1=1]="Clarity1",t[t.Clarity2=2]="Clarity2",t[t.Clarity3=3]="Clarity3"})(wN||(wN={}));var ai;(function(t){t[t.OnChainOnly=1]="OnChainOnly",t[t.OffChainOnly=2]="OffChainOnly",t[t.Any=3]="Any"})(ai||(ai={}));const Ow=["onChainOnly","offChainOnly","any"],vN={[Ow[0]]:ai.OnChainOnly,[Ow[1]]:ai.OffChainOnly,[Ow[2]]:ai.Any,[ai.OnChainOnly]:ai.OnChainOnly,[ai.OffChainOnly]:ai.OffChainOnly,[ai.Any]:ai.Any};function kG(t){if(t in vN)return vN[t];throw new Error(`Invalid anchor mode "${t}", must be one of: ${Ow.join(", ")}`)}var Cf;(function(t){t[t.Mainnet=0]="Mainnet",t[t.Testnet=128]="Testnet"})(Cf||(Cf={}));Cf.Mainnet;var Tf;(function(t){t[t.Allow=1]="Allow",t[t.Deny=2]="Deny"})(Tf||(Tf={}));var _u;(function(t){t[t.STX=0]="STX",t[t.Fungible=1]="Fungible",t[t.NonFungible=2]="NonFungible"})(_u||(_u={}));var rr;(function(t){t[t.Standard=4]="Standard",t[t.Sponsored=5]="Sponsored"})(rr||(rr={}));var bn;(function(t){t[t.SerializeP2PKH=0]="SerializeP2PKH",t[t.SerializeP2SH=1]="SerializeP2SH",t[t.SerializeP2WPKH=2]="SerializeP2WPKH",t[t.SerializeP2WSH=3]="SerializeP2WSH",t[t.SerializeP2SHNonSequential=5]="SerializeP2SHNonSequential",t[t.SerializeP2WSHNonSequential=7]="SerializeP2WSHNonSequential"})(bn||(bn={}));var hm;(function(t){t[t.MainnetSingleSig=22]="MainnetSingleSig",t[t.MainnetMultiSig=20]="MainnetMultiSig",t[t.TestnetSingleSig=26]="TestnetSingleSig",t[t.TestnetMultiSig=21]="TestnetMultiSig"})(hm||(hm={}));var zr;(function(t){t[t.Compressed=0]="Compressed",t[t.Uncompressed=1]="Uncompressed"})(zr||(zr={}));var bN;(function(t){t[t.Equal=1]="Equal",t[t.Greater=2]="Greater",t[t.GreaterEqual=3]="GreaterEqual",t[t.Less=4]="Less",t[t.LessEqual=5]="LessEqual"})(bN||(bN={}));var EN;(function(t){t[t.Sends=16]="Sends",t[t.DoesNotSend=17]="DoesNotSend"})(EN||(EN={}));var dx;(function(t){t[t.Origin=1]="Origin",t[t.Standard=2]="Standard",t[t.Contract=3]="Contract"})(dx||(dx={}));var _N;(function(t){t[t.STX=0]="STX",t[t.Fungible=1]="Fungible",t[t.NonFungible=2]="NonFungible"})(_N||(_N={}));var SN;(function(t){t.Serialization="Serialization",t.Deserialization="Deserialization",t.SignatureValidation="SignatureValidation",t.FeeTooLow="FeeTooLow",t.BadNonce="BadNonce",t.NotEnoughFunds="NotEnoughFunds",t.NoSuchContract="NoSuchContract",t.NoSuchPublicFunction="NoSuchPublicFunction",t.BadFunctionArgument="BadFunctionArgument",t.ContractAlreadyExists="ContractAlreadyExists",t.PoisonMicroblocksDoNotConflict="PoisonMicroblocksDoNotConflict",t.PoisonMicroblockHasUnknownPubKeyHash="PoisonMicroblockHasUnknownPubKeyHash",t.PoisonMicroblockIsInvalid="PoisonMicroblockIsInvalid",t.BadAddressVersionByte="BadAddressVersionByte",t.NoCoinbaseViaMempool="NoCoinbaseViaMempool",t.ServerFailureNoSuchChainTip="ServerFailureNoSuchChainTip",t.TooMuchChaining="TooMuchChaining",t.ConflictingNonceInMempool="ConflictingNonceInMempool",t.BadTransactionVersion="BadTransactionVersion",t.TransferRecipientCannotEqualSender="TransferRecipientCannotEqualSender",t.TransferAmountMustBePositive="TransferAmountMustBePositive",t.ServerFailureDatabase="ServerFailureDatabase",t.EstimatorError="EstimatorError",t.TemporarilyBlacklisted="TemporarilyBlacklisted",t.ServerFailureOther="ServerFailureOther"})(SN||(SN={}));function $G(t){if(Gn(t).byteLength!=Xb)throw Error("Invalid signature");return{type:qt.MessageSignature,data:t}}function fy(t,e){return{type:qt.Address,version:t,hash160:e}}function xN(t){return bd.c32address(t.version,t.hash160)}function fm(t,e,n){const r=e||1,i=n||OG;if(Sq(t,i))throw new Error(`String length exceeds maximum bytes ${i}`);return{type:qt.LengthPrefixedString,content:t,lengthPrefixBytes:r,maxLengthBytes:i}}function u0(t){const e=bd.c32addressDecode(t);return{type:qt.Address,version:e[0],hash160:e[1]}}var pe;(function(t){t[t.Int=0]="Int",t[t.UInt=1]="UInt",t[t.Buffer=2]="Buffer",t[t.BoolTrue=3]="BoolTrue",t[t.BoolFalse=4]="BoolFalse",t[t.PrincipalStandard=5]="PrincipalStandard",t[t.PrincipalContract=6]="PrincipalContract",t[t.ResponseOk=7]="ResponseOk",t[t.ResponseErr=8]="ResponseErr",t[t.OptionalNone=9]="OptionalNone",t[t.OptionalSome=10]="OptionalSome",t[t.List=11]="List",t[t.Tuple=12]="Tuple",t[t.StringASCII=13]="StringASCII",t[t.StringUTF8=14]="StringUTF8"})(pe||(pe={}));function BG(t){if(t.type===pe.PrincipalStandard)return xN(t.address);if(t.type===pe.PrincipalContract)return`${xN(t.address)}.${t.contractName.content}`;throw new Error(`Unexpected principal data: ${JSON.stringify(t)}`)}function j4(t){if(t.includes(".")){const[e,n]=t.split(".");return HG(e,n)}else return FG(t)}function FG(t){const e=u0(t);return{type:pe.PrincipalStandard,address:e}}function zG(t){return{type:pe.PrincipalStandard,address:t}}function HG(t,e){const n=u0(t),r=fm(e);return V4(n,r)}function V4(t,e){if(ep(e.content).byteLength>=128)throw new Error("Contract name must be less than 128 bytes");return{type:pe.PrincipalContract,address:t,contractName:e}}function fE(t,e=!1){switch(t.type){case pe.BoolTrue:return!0;case pe.BoolFalse:return!1;case pe.Int:case pe.UInt:return e?t.value.toString():t.value;case pe.Buffer:return`0x${$n(t.buffer)}`;case pe.OptionalNone:return null;case pe.OptionalSome:return yh(t.value);case pe.ResponseErr:return yh(t.value);case pe.ResponseOk:return yh(t.value);case pe.PrincipalStandard:case pe.PrincipalContract:return BG(t);case pe.List:return t.list.map(r=>yh(r));case pe.Tuple:const n={};return Object.keys(t.data).forEach(r=>{n[r]=yh(t.data[r])}),n;case pe.StringASCII:return t.data;case pe.StringUTF8:return t.data}}function yh(t){switch(t.type){case pe.ResponseErr:return{type:Za(t),value:fE(t,!0),success:!1};case pe.ResponseOk:return{type:Za(t),value:fE(t,!0),success:!0};default:return{type:Za(t),value:fE(t,!0)}}}function Za(t){switch(t.type){case pe.BoolTrue:case pe.BoolFalse:return"bool";case pe.Int:return"int";case pe.UInt:return"uint";case pe.Buffer:return`(buff ${t.buffer.length})`;case pe.OptionalNone:return"(optional none)";case pe.OptionalSome:return`(optional ${Za(t.value)})`;case pe.ResponseErr:return`(response UnknownType ${Za(t.value)})`;case pe.ResponseOk:return`(response ${Za(t.value)} UnknownType)`;case pe.PrincipalStandard:case pe.PrincipalContract:return"principal";case pe.List:return`(list ${t.list.length} ${t.list.length?Za(t.list[0]):"UnknownType"})`;case pe.Tuple:return`(tuple ${Object.keys(t.data).map(e=>`(${e} ${Za(t.data[e])})`).join(" ")})`;case pe.StringASCII:return`(string-ascii ${B4(t.data).length})`;case pe.StringUTF8:return`(string-utf8 ${ep(t.data).length})`}}const jG=()=>({type:pe.BoolTrue}),VG=()=>({type:pe.BoolFalse}),AN=BigInt("0xffffffffffffffffffffffffffffffff"),WG=BigInt(0),CN=BigInt("0x7fffffffffffffffffffffffffffffff"),TN=BigInt("-170141183460469231731687303715884105728"),GG=t=>{const e=xi(t,!0);if(e>CN)throw new RangeError(`Cannot construct clarity integer from value greater than ${CN}`);if(e{const e=xi(t,!1);if(eAN)throw new RangeError(`Cannot construct unsigned clarity integer greater than ${AN}`);return{type:pe.UInt,value:e}},pm=t=>{if(t.byteLength>1048576)throw new Error("Cannot construct clarity buffer that is greater than 1MB");return{type:pe.Buffer,buffer:t}};function W4(){return{type:pe.OptionalNone}}function G4(t){return{type:pe.OptionalSome,value:t}}function qG(t){return{type:pe.ResponseErr,value:t}}function KG(t){return{type:pe.ResponseOk,value:t}}function XG(t){return{type:pe.List,list:t}}function YG(t){for(const e in t)if(!Iq(e))throw new Error(`"${e}" is not a valid Clarity name`);return{type:pe.Tuple,data:t}}const ZG=t=>({type:pe.StringASCII,data:t}),JG=t=>({type:pe.StringUTF8,data:t});vi.hmacSha256Sync=(t,...e)=>{const n=Zf.create(ro,t);return e.forEach(r=>n.update(r)),n.digest()};function kl(t){return{type:qt.PublicKey,data:Gn(t)}}function QG(t,e,n=zr.Compressed){const r=_G(e.data),i=new eo(gN(r.r),gN(r.s)),s=on.fromSignature(t,i,r.recoveryId),o=n===zr.Compressed;return s.toHex(o)}function eq(t){return{type:qt.PublicKey,data:t}}function d0(t){return!$n(t.data).startsWith("04")}function tq(t){return $n(t.data)}function Hv(t){return t.data.slice()}function q4(t){const e=jv(t),n=Ub(e.data.slice(0,32),e.compressed);return kl($n(n))}function nq(t){const e=typeof t=="string"?t:$n(t),n=on.fromHex(e).toHex(!0);return kl(n)}function jv(t){const e=SG(t),n=e.length==F4;return{data:e,compressed:n}}function rq(t,e){const[n,r]=m2(e,t.data.slice(0,32),{canonical:!0,recovered:!0});if(r==null)throw new Error("No signature recoveryId received");const s=l0(r,1)+eo.fromHex(n).toCompactHex();return $G(s)}function K4(t){return q4(t.data)}function iq(t,e,n,r){return typeof t=="string"&&(t=u0(t)),typeof e=="string"&&(e=fm(e)),typeof n=="string"&&(n=fm(n)),{type:qt.Payload,payloadType:er.ContractCall,contractAddress:t,contractName:e,functionName:n,functionArgs:r}}var IN;(function(t){t[t.BlockFound=0]="BlockFound",t[t.Extended=1]="Extended"})(IN||(IN={}));function k2(t){const e=[];switch(e.push(t.payloadType),t.payloadType){case er.TokenTransfer:e.push(fa(t.recipient)),e.push(Ll(t.amount,!1,8)),e.push(Va(t.memo));break;case er.ContractCall:e.push(Va(t.contractAddress)),e.push(Va(t.contractName)),e.push(Va(t.functionName));const n=new Uint8Array(4);od(n,t.functionArgs.length,0),e.push(n),t.functionArgs.forEach(r=>{e.push(fa(r))});break;case er.SmartContract:e.push(Va(t.contractName)),e.push(Va(t.codeBody));break;case er.VersionedSmartContract:e.push(t.clarityVersion),e.push(Va(t.contractName)),e.push(Va(t.codeBody));break;case er.PoisonMicroblock:break;case er.Coinbase:e.push(t.coinbaseBytes);break;case er.CoinbaseToAltRecipient:e.push(t.coinbaseBytes),e.push(fa(t.recipient));break;case er.NakamotoCoinbase:e.push(t.coinbaseBytes),e.push(fa(t.recipient?G4(t.recipient):W4())),e.push(t.vrfProof);break;case er.TenureChange:e.push(Gn(t.tenureHash)),e.push(Gn(t.previousTenureHash)),e.push(Gn(t.burnViewHash)),e.push(Gn(t.previousTenureEnd)),e.push(od(new Uint8Array(4),t.previousTenureBlocks)),e.push(TG(new Uint8Array(1),t.cause)),e.push(Gn(t.publicKeyHash));break}return dr(e)}class h0 extends Error{constructor(e){super(e),this.message=e,this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class Su extends h0{constructor(e){super(e)}}class pE extends h0{constructor(e){super(e)}}class X4 extends h0{constructor(e){super(e)}}class sa extends h0{constructor(e){super(e)}}class rg extends h0{constructor(e){super(e)}}var zh;(function(t){t[t.PublicKeyCompressed=0]="PublicKeyCompressed",t[t.PublicKeyUncompressed=1]="PublicKeyUncompressed",t[t.SignatureCompressed=2]="SignatureCompressed",t[t.SignatureUncompressed=3]="SignatureUncompressed"})(zh||(zh={}));function MN(t,e){return{pubKeyEncoding:t,type:qt.TransactionAuthField,contents:e}}function $2(t){return Gn(t.data)}function sq(t){const e=[];switch(t.contents.type){case qt.PublicKey:e.push(t.pubKeyEncoding===zr.Compressed?zh.PublicKeyCompressed:zh.PublicKeyUncompressed),e.push(Hv(nq(t.contents.data)));break;case qt.MessageSignature:e.push(t.pubKeyEncoding===zr.Compressed?zh.SignatureCompressed:zh.SignatureUncompressed),e.push($2(t.contents));break}return dr(e)}function Va(t){switch(t.type){case qt.Address:return f0(t);case qt.Principal:return Y4(t);case qt.LengthPrefixedString:return Mf(t);case qt.MemoString:return aq(t);case qt.AssetInfo:return Z4(t);case qt.PostCondition:return J4(t);case qt.PublicKey:return Hv(t);case qt.LengthPrefixedList:return F2(t);case qt.Payload:return k2(t);case qt.TransactionAuthField:return sq(t);case qt.MessageSignature:return $2(t)}}function oq(){return{type:qt.Address,version:hm.MainnetSingleSig,hash160:"0".repeat(40)}}function If(t,e,n,r){if(r.length===0)throw Error("Invalid number of public keys");if((e===bn.SerializeP2PKH||e===bn.SerializeP2WPKH)&&(r.length!==1||n!==1))throw Error("Invalid number of public keys or signatures");if((e===bn.SerializeP2WPKH||e===bn.SerializeP2WSH||e===bn.SerializeP2WSHNonSequential)&&!r.every(d0))throw Error("Public keys must be compressed for segwit");switch(e){case bn.SerializeP2PKH:return fy(t,xq(r[0].data));case bn.SerializeP2WPKH:return fy(t,Aq(r[0].data));case bn.SerializeP2SH:case bn.SerializeP2SHNonSequential:return fy(t,Cq(n,r.map(Hv)));case bn.SerializeP2WSH:case bn.SerializeP2WSHNonSequential:return fy(t,Tq(n,r.map(Hv)))}}function f0(t){const e=[];return e.push(Gn(l0(t.version,1))),e.push(Gn(t.hash160)),dr(e)}function NN(t){const e=O2($n(t.readBytes(1))),n=$n(t.readBytes(20));return{type:qt.Address,version:e,hash160:n}}function Y4(t){const e=[];return e.push(t.prefix),e.push(f0(t.address)),t.prefix===dx.Contract&&e.push(Mf(t.contractName)),dr(e)}function Mf(t){const e=[],n=ep(t.content),r=n.byteLength;return e.push(Gn(l0(r,t.lengthPrefixBytes))),e.push(n),dr(e)}function PN(t,e,n){e=e||1;const r=O2($n(t.readBytes(e))),i=$4(t.readBytes(r));return fm(i,e,128)}function aq(t){const e=[],n=ep(t.content),r=_q($n(n),LG*2);return e.push(Gn(r)),dr(e)}function Z4(t){const e=[];return e.push(f0(t.address)),e.push(Mf(t.contractName)),e.push(Mf(t.assetName)),dr(e)}function B2(t,e){return{type:qt.LengthPrefixedList,lengthPrefixBytes:4,values:t}}function F2(t){const e=t.values,n=[];n.push(Gn(l0(e.length,t.lengthPrefixBytes)));for(const r of e)n.push(Va(r));return dr(n)}function J4(t){const e=[];if(e.push(t.conditionType),e.push(Y4(t.principal)),(t.conditionType===_u.Fungible||t.conditionType===_u.NonFungible)&&e.push(Z4(t.assetInfo)),t.conditionType===_u.NonFungible&&e.push(fa(t.assetName)),e.push(t.conditionCode),t.conditionType===_u.STX||t.conditionType===_u.Fungible){if(t.amount>BigInt("0xffffffffffffffff"))throw new Su("The post-condition amount may not be larger than 8 bytes");e.push(Ll(t.amount,!1,8))}return dr(e)}function Ia(t,e){return dr([t,e])}function cq(t){return new Uint8Array([t.type])}function lq(t){return t.type===pe.OptionalNone?new Uint8Array([t.type]):Ia(t.type,fa(t.value))}function uq(t){const e=new Uint8Array(4);return od(e,t.buffer.length,0),Ia(t.type,qb(e,t.buffer))}function dq(t){const e=U2(mG(t.value,BigInt(UG)),H4);return Ia(t.type,e)}function hq(t){const e=U2(t.value,H4);return Ia(t.type,e)}function fq(t){return Ia(t.type,f0(t.address))}function pq(t){return Ia(t.type,qb(f0(t.address),Mf(t.contractName)))}function gq(t){return Ia(t.type,fa(t.value))}function mq(t){const e=[],n=new Uint8Array(4);od(n,t.list.length,0),e.push(n);for(const r of t.list){const i=fa(r);e.push(i)}return Ia(t.type,dr(e))}function yq(t){const e=[],n=new Uint8Array(4);od(n,Object.keys(t.data).length,0),e.push(n);const r=Object.keys(t.data).sort((i,s)=>i.localeCompare(s));for(const i of r){const s=fm(i);e.push(Mf(s));const o=fa(t.data[i]);e.push(o)}return Ia(t.type,dr(e))}function Q4(t,e){const n=[],r=e=="ascii"?B4(t.data):ep(t.data),i=new Uint8Array(4);return od(i,r.length,0),n.push(i),n.push(r),Ia(t.type,dr(n))}function wq(t){return Q4(t,"ascii")}function vq(t){return Q4(t,"utf8")}function fa(t){switch(t.type){case pe.BoolTrue:case pe.BoolFalse:return cq(t);case pe.OptionalNone:case pe.OptionalSome:return lq(t);case pe.Buffer:return uq(t);case pe.UInt:return hq(t);case pe.Int:return dq(t);case pe.PrincipalStandard:return fq(t);case pe.PrincipalContract:return pq(t);case pe.ResponseOk:case pe.ResponseErr:return gq(t);case pe.List:return mq(t);case pe.Tuple:return yq(t);case pe.StringASCII:return wq(t);case pe.StringUTF8:return vq(t);default:throw new Su("Unable to serialize. Invalid Clarity Value.")}}function bq(t){const e=Object.values(t).filter(r=>typeof r=="number"),n=new Set(e);return r=>n.has(r)}const DN=new Map;function e$(t,e){const n=DN.get(t);if(n!==void 0)return n(e);const r=bq(t);return DN.set(t,r),e$(t,e)}class RN{constructor(e){this.consumed=0,this.source=e}readBytes(e){const n=this.source.subarray(this.consumed,this.consumed+e);return this.consumed+=e,n}readUInt32BE(){return IG(this.readBytes(4),0)}readUInt8(){return CG(this.readBytes(1),0)}readUInt16BE(){return xG(this.readBytes(2),0)}readBigUIntLE(e){const n=this.readBytes(e).slice().reverse(),r=$n(n);return BigInt(`0x${r}`)}readBigUIntBE(e){const n=this.readBytes(e),r=$n(n);return BigInt(`0x${r}`)}get readOffset(){return this.consumed}set readOffset(e){this.consumed=e}get internalBytes(){return this.source}readUInt8Enum(e,n){const r=this.readUInt8();if(e$(e,r))return r;throw n(r)}}function wh(t){let e;if(typeof t=="string"){const r=t.slice(0,2).toLowerCase()==="0x";e=new RN(Gn(r?t.slice(2):t))}else t instanceof Uint8Array?e=new RN(t):e=t;switch(e.readUInt8Enum(pe,r=>{throw new pE(`Cannot recognize Clarity Type: ${r}`)})){case pe.Int:return GG(e.readBytes(16));case pe.UInt:return js(e.readBytes(16));case pe.Buffer:const r=e.readUInt32BE();return pm(e.readBytes(r));case pe.BoolTrue:return jG();case pe.BoolFalse:return VG();case pe.PrincipalStandard:const i=NN(e);return zG(i);case pe.PrincipalContract:const s=NN(e),o=PN(e);return V4(s,o);case pe.ResponseOk:return KG(wh(e));case pe.ResponseErr:return qG(wh(e));case pe.OptionalNone:return W4();case pe.OptionalSome:return G4(wh(e));case pe.List:const a=e.readUInt32BE(),c=[];for(let m=0;mt.length%2==0?t:`0${t}`,_q=(t,e)=>t.padEnd(e,"0"),Sq=(t,e)=>t?ep(t).length>e:!1;function Al(t){return a4(t)}function ON(t,e){const n=Al(t);return delete n[e],n}const gm=t=>v2(ro(t)),z2=t=>$n(Ck(t)),xq=t=>$n(gm(t)),Aq=t=>{const e=gm(t),n=qb(new Uint8Array([0]),new Uint8Array([e.length]),e),r=gm(n);return $n(r)},Cq=(t,e)=>{if(t>15||e.length>15)throw Error("P2SH multisig address can only contain up to 15 public keys");const n=[];n.push(80+t),e.forEach(s=>{n.push(s.length),n.push(s)}),n.push(80+e.length),n.push(174);const r=dr(n),i=gm(r);return $n(i)},Tq=(t,e)=>{if(t>15||e.length>15)throw Error("P2WSH multisig address can only contain up to 15 public keys");const n=[];n.push(80+t),e.forEach(c=>{n.push(c.length),n.push(c)}),n.push(80+e.length),n.push(174);const r=dr(n),i=ro(r),s=[];s.push(0),s.push(i.length),s.push(i);const o=dr(s),a=gm(o);return $n(a)};function Iq(t){return/^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/.test(t)&&t.length<128}function Mq(t){const e=fa(t);return`0x${$n(e)}`}function Nq(t){return wh(t)}const Pq=t=>{if(t.okay)return Nq(t.result);throw new Error(t.cause)};function H2(){return{type:qt.MessageSignature,data:$n(new Uint8Array(Xb))}}function j2(t,e,n,r){const i=If(0,t,1,[kl(e)]).hash160,s=d0(kl(e))?zr.Compressed:zr.Uncompressed;return{hashMode:t,signer:i,nonce:xi(n,!1),fee:xi(r,!1),keyEncoding:s,signature:H2()}}function Dq(t,e,n,r,i){const s=n.map(kl),o=If(0,t,e,s).hash160;return{hashMode:t,signer:o,nonce:xi(r,!1),fee:xi(i,!1),fields:[],signaturesRequired:e}}function $l(t){return"signature"in t}function hx(t){return t===bn.SerializeP2SH||t===bn.SerializeP2WSH}function t$(t){return t===bn.SerializeP2SHNonSequential||t===bn.SerializeP2WSHNonSequential}function UN(t){const e=Al(t);return e.nonce=0,e.fee=0,$l(e)?e.signature=H2():e.fields=[],{...e,nonce:BigInt(0),fee:BigInt(0)}}function Rq(t){const e=[t.hashMode,Gn(t.signer),Ll(t.nonce,!1,8),Ll(t.fee,!1,8),t.keyEncoding,$2(t.signature)];return dr(e)}function Oq(t){const e=[t.hashMode,Gn(t.signer),Ll(t.nonce,!1,8),Ll(t.fee,!1,8)],n=B2(t.fields);e.push(F2(n));const r=new Uint8Array(2);return AG(r,t.signaturesRequired,0),e.push(r),dr(e)}function gE(t){return $l(t)?Rq(t):Oq(t)}function n$(t,e,n,r){const s=t+$n(new Uint8Array([e]))+$n(Ll(n,!1,8))+$n(Ll(r,!1,8));if(Gn(s).byteLength!==49)throw Error("Invalid signature hash length");return z2(Gn(s))}function r$(t,e,n){const r=33+Xb,i=d0(e)?zr.Compressed:zr.Uncompressed,s=t+Eq(i.toString(16))+n.data,o=Gn(s);if(o.byteLength>r)throw Error("Invalid signature hash length");return z2(o)}function Uq(t,e,n,r,i){const s=n$(t,e,n,r),o=rq(i,s),a=K4(i),c=r$(s,a,o);return{nextSig:o,nextSigHash:c}}function V2(t,e,n,r,i,s){const o=n$(t,e,n,r),a=kl(QG(o,s,i)),c=r$(o,a,s);return{pubKey:a,nextSigHash:c}}function Lq(){const t=j2(bn.SerializeP2PKH,"",0,0);return t.signer=oq().hash160,t.keyEncoding=zr.Compressed,t.signature=H2(),t}function LN(t,e,n){return $l(t)?kq(t,e,n):$q(t,e,n)}function kq(t,e,n){const{pubKey:r,nextSigHash:i}=V2(e,n,t.fee,t.nonce,t.keyEncoding,t.signature),s=If(0,t.hashMode,1,[r]).hash160;if(s!==t.signer)throw new rg(`Signer hash does not equal hash of public key(s): ${s} != ${t.signer}`);return i}function $q(t,e,n){const r=[];let i=e,s=!1,o=0;for(const c of t.fields)switch(c.contents.type){case qt.PublicKey:d0(c.contents)||(s=!0),r.push(c.contents);break;case qt.MessageSignature:c.pubKeyEncoding===zr.Uncompressed&&(s=!0);const{pubKey:l,nextSigHash:u}=V2(i,n,t.fee,t.nonce,c.pubKeyEncoding,c.contents);if(hx(t.hashMode)&&(i=u),r.push(l),o+=1,o===65536)throw new rg("Too many signatures");break}if(hx(t.hashMode)&&o!==t.signaturesRequired||t$(t.hashMode)&&otypeof t=="string",a$=t=>t.buffer!==void 0,c$=t=>t["string-ascii"]!==void 0,l$=t=>t["string-utf8"]!==void 0,u$=t=>t.response!==void 0,d$=t=>t.optional!==void 0,h$=t=>t.tuple!==void 0,f$=t=>t.list!==void 0;function Wq(t){if(o$(t)){if(t==="uint128")return{id:un.ClarityAbiTypeUInt128,type:t};if(t==="int128")return{id:un.ClarityAbiTypeInt128,type:t};if(t==="bool")return{id:un.ClarityAbiTypeBool,type:t};if(t==="principal")return{id:un.ClarityAbiTypePrincipal,type:t};if(t==="trait_reference")return{id:un.ClarityAbiTypeTraitReference,type:t};if(t==="none")return{id:un.ClarityAbiTypeNone,type:t};throw new Error(`Unexpected Clarity ABI type primitive: ${JSON.stringify(t)}`)}else{if(a$(t))return{id:un.ClarityAbiTypeBuffer,type:t};if(u$(t))return{id:un.ClarityAbiTypeResponse,type:t};if(d$(t))return{id:un.ClarityAbiTypeOptional,type:t};if(h$(t))return{id:un.ClarityAbiTypeTuple,type:t};if(f$(t))return{id:un.ClarityAbiTypeList,type:t};if(c$(t))return{id:un.ClarityAbiTypeStringAscii,type:t};if(l$(t))return{id:un.ClarityAbiTypeStringUtf8,type:t};throw new Error(`Unexpected Clarity ABI type: ${JSON.stringify(t)}`)}}function vh(t){if(o$(t))return t==="int128"?"int":t==="uint128"?"uint":t;if(a$(t))return`(buff ${t.buffer.length})`;if(c$(t))return`(string-ascii ${t["string-ascii"].length})`;if(l$(t))return`(string-utf8 ${t["string-utf8"].length})`;if(u$(t))return`(response ${vh(t.response.ok)} ${vh(t.response.error)})`;if(d$(t))return`(optional ${vh(t.optional)})`;if(h$(t))return`(tuple ${t.tuple.map(e=>`(${e.name} ${vh(e.type)})`).join(" ")})`;if(f$(t))return`(list ${t.list.length} ${vh(t.list.type)})`;throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(t)}`)}function bh(t,e){const n=Wq(e);switch(t.type){case pe.BoolTrue:case pe.BoolFalse:return n.id===un.ClarityAbiTypeBool;case pe.Int:return n.id===un.ClarityAbiTypeInt128;case pe.UInt:return n.id===un.ClarityAbiTypeUInt128;case pe.Buffer:return n.id===un.ClarityAbiTypeBuffer&&n.type.buffer.length>=t.buffer.length;case pe.StringASCII:return n.id===un.ClarityAbiTypeStringAscii&&n.type["string-ascii"].length>=t.data.length;case pe.StringUTF8:return n.id===un.ClarityAbiTypeStringUtf8&&n.type["string-utf8"].length>=t.data.length;case pe.OptionalNone:return n.id===un.ClarityAbiTypeNone||n.id===un.ClarityAbiTypeOptional;case pe.OptionalSome:return n.id===un.ClarityAbiTypeOptional&&bh(t.value,n.type.optional);case pe.ResponseErr:return n.id===un.ClarityAbiTypeResponse&&bh(t.value,n.type.response.error);case pe.ResponseOk:return n.id===un.ClarityAbiTypeResponse&&bh(t.value,n.type.response.ok);case pe.PrincipalContract:return n.id===un.ClarityAbiTypePrincipal||n.id===un.ClarityAbiTypeTraitReference;case pe.PrincipalStandard:return n.id===un.ClarityAbiTypePrincipal;case pe.List:return n.id==un.ClarityAbiTypeList&&n.type.list.length>=t.list.length&&t.list.every(r=>bh(r,n.type.list.type));case pe.Tuple:if(n.id==un.ClarityAbiTypeTuple){const r=Al(t.data);for(let i=0;ir.name===t.functionName.content);if(n.length===1){const i=n[0].args;if(t.functionArgs.length!==i.length)throw new Error(`Clarity function expects ${i.length} argument(s) but received ${t.functionArgs.length}`);for(let s=0;sr.contents.type===qt.MessageSignature).length>=n.signaturesRequired)throw new Error("SpendingCondition has more signatures than are expected");n.fields.forEach(r=>{if(r.contents.type!==qt.MessageSignature)return;const i=r.contents,s=V2(this.sigHash,e.auth.authType,n.fee,n.nonce,zr.Compressed,i);t$(n.hashMode)||(this.sigHash=s.nextSigHash)})}}static createSponsorSigner(e,n){if(e.auth.authType!=rr.Sponsored)throw new sa("Cannot add sponsor to non-sponsored transaction");const r=Al(e);r.setSponsor(n);const i=r.verifyOrigin(),s=new this(r);return s.originDone=!0,s.sigHash=i,s.checkOversign=!0,s.checkOverlap=!0,s}signOrigin(e){if(this.checkOverlap&&this.originDone)throw new sa("Cannot sign origin after sponsor key");if(this.transaction.auth===void 0)throw new sa('"transaction.auth" is undefined');if(this.transaction.auth.spendingCondition===void 0)throw new sa('"transaction.auth.spendingCondition" is undefined');const n=this.transaction.auth.spendingCondition;if((n.hashMode===bn.SerializeP2SH||n.hashMode===bn.SerializeP2WSH)&&this.checkOversign&&n.fields.filter(i=>i.contents.type===qt.MessageSignature).length>=n.signaturesRequired)throw new Error("Origin would have too many signatures");const r=this.transaction.signNextOrigin(this.sigHash,e);($l(this.transaction.auth.spendingCondition)||hx(this.transaction.auth.spendingCondition.hashMode))&&(this.sigHash=r)}appendOrigin(e){if(this.checkOverlap&&this.originDone)throw Error("Cannot append public key to origin after sponsor key");if(this.transaction.auth===void 0)throw new Error('"transaction.auth" is undefined');if(this.transaction.auth.spendingCondition===void 0)throw new Error('"transaction.auth.spendingCondition" is undefined');this.transaction.appendPubkey(e)}signSponsor(e){if(this.transaction.auth===void 0)throw new sa('"transaction.auth" is undefined');if(this.transaction.auth.authType!==rr.Sponsored)throw new sa('"transaction.auth.authType" is not AuthType.Sponsored');const n=this.transaction.signNextSponsor(this.sigHash,e);this.sigHash=n,this.originDone=!0}getTxInComplete(){return Al(this.transaction)}resume(e){this.transaction=Al(e),this.sigHash=e.signBegin()}}class qq{constructor(e,n,r,i,s,o,a){if(this.version=e,this.auth=n,"amount"in r?this.payload={...r,amount:xi(r.amount,!1)}:this.payload=r,this.chainId=a??RG,this.postConditionMode=s??Tf.Deny,this.postConditions=i??B2([]),o)this.anchorMode=kG(o);else switch(r.payloadType){case er.Coinbase:case er.CoinbaseToAltRecipient:case er.NakamotoCoinbase:case er.PoisonMicroblock:case er.TenureChange:this.anchorMode=ai.OnChainOnly;break;case er.ContractCall:case er.SmartContract:case er.VersionedSmartContract:case er.TokenTransfer:this.anchorMode=ai.Any;break}}signBegin(){const e=Al(this);return e.auth=kN(e.auth),e.txid()}verifyBegin(){const e=Al(this);return e.auth=kN(e.auth),e.txid()}verifyOrigin(){return Bq(this.auth,this.verifyBegin())}signNextOrigin(e,n){if(this.auth.spendingCondition===void 0)throw new Error('"auth.spendingCondition" is undefined');if(this.auth.authType===void 0)throw new Error('"auth.authType" is undefined');return this.signAndAppend(this.auth.spendingCondition,e,rr.Standard,n)}signNextSponsor(e,n){if(this.auth.authType===rr.Sponsored)return this.signAndAppend(this.auth.sponsorSpendingCondition,e,rr.Sponsored,n);throw new Error('"auth.sponsorSpendingCondition" is undefined')}appendPubkey(e){const n=this.auth.spendingCondition;if(n&&!$l(n)){const r=d0(e);n.fields.push(MN(r?zr.Compressed:zr.Uncompressed,e))}else throw new Error("Can't append public key to a singlesig condition")}signAndAppend(e,n,r,i){const{nextSig:s,nextSigHash:o}=Uq(n,r,e.fee,e.nonce,i);return $l(e)?e.signature=s:e.fields.push(MN(i.data.byteLength===F4?zr.Compressed:zr.Uncompressed,s)),o}txid(){const e=this.serialize();return z2(e)}setSponsor(e){if(this.auth.authType!=rr.Sponsored)throw new sa("Cannot sponsor sign a non-sponsored transaction");this.auth=jq(this.auth,e)}setFee(e){this.auth=Fq(this.auth,e)}setNonce(e){this.auth=zq(this.auth,e)}setSponsorNonce(e){if(this.auth.authType!=rr.Sponsored)throw new sa("Cannot sponsor sign a non-sponsored transaction");this.auth=Hq(this.auth,e)}serialize(){if(this.version===void 0)throw new Su('"version" is undefined');if(this.chainId===void 0)throw new Su('"chainId" is undefined');if(this.auth===void 0)throw new Su('"auth" is undefined');if(this.anchorMode===void 0)throw new Su('"anchorMode" is undefined');if(this.payload===void 0)throw new Su('"payload" is undefined');const e=[];e.push(this.version);const n=new Uint8Array(4);return od(n,this.chainId,0),e.push(n),e.push(Vq(this.auth)),e.push(this.anchorMode),e.push(this.postConditionMode),e.push(F2(this.postConditions)),e.push(k2(this.payload)),dr(e)}}async function Kq(t,e){const n=`${e.coreApiUrl}/extended/v1/address/${t}/nonces`,i=await(await e.fetchFn(n)).json();return BigInt(i.possible_next_nonce)}async function Xq(t,e){const n=so.fromNameOrNetwork(e??new Kl),r=n.getAccountApiUrl(t);try{return await Kq(t,n)}catch{}const i=await n.fetchFn(r);if(!i.ok){let a="";try{a=await i.text()}catch{}throw new Error(`Error fetching nonce. Response ${i.status}: ${i.statusText}. Attempted to fetch ${r} and failed with the message: "${a}"`)}const s=await i.text(),o=JSON.parse(s);return BigInt(o.nonce)}async function Yq(t,e){const r={method:"GET",headers:{Accept:"application/text"}},i=so.fromNameOrNetwork(e??Qq(t)),s=i.getTransferFeeEstimateApiUrl(),o=await i.fetchFn(s,r);if(!o.ok){let u="";try{u=await o.text()}catch{}throw new Error(`Error estimating transaction fee. Response ${o.status}: ${o.statusText}. Attempted to fetch ${s} and failed with the message: "${u}"`)}const a=await o.text(),c=BigInt(t.serialize().byteLength);return BigInt(a)*c}async function Zq(t,e,n){var c;const r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({transaction_payload:$n(k2(t)),...e?{estimated_len:e}:{}})},i=so.fromNameOrNetwork(n??new Kl),s=i.getTransactionFeeEstimateApiUrl(),o=await i.fetchFn(s,r);if(!o.ok){const l=await o.text().then(u=>{try{return JSON.parse(u)}catch{return u}});throw(l==null?void 0:l.reason)==="NoEstimateAvailable"||typeof l=="string"&&l.includes("NoEstimateAvailable")?new X4(((c=l==null?void 0:l.reason_data)==null?void 0:c.message)??""):new Error(`Error estimating transaction fee. Response ${o.status}: ${o.statusText}. Attempted to fetch ${s} and failed with the message: "${l}"`)}return(await o.json()).estimations}async function Jq(t,e,n){const r={method:"GET"},i=so.fromNameOrNetwork(n),s=i.getAbiApiUrl(t,e),o=await i.fetchFn(s,r);if(!o.ok){const a=await o.text().catch(()=>"");throw new Error(`Error fetching contract ABI for contract "${e}" at address ${t}. Response ${o.status}: ${o.statusText}. Attempted to fetch ${s} and failed with the message: "${a}"`)}return JSON.parse(await o.text())}function Qq(t){switch(t.version){case Cf.Mainnet:return new Kl;case Cf.Testnet:return new Kb}}async function $N(t){const e={fee:BigInt(0),nonce:BigInt(0),network:new Kl,postConditionMode:Tf.Deny,sponsored:!1},n=Object.assign(e,t),r=iq(n.contractAddress,n.contractName,n.functionName,n.functionArgs);if(n!=null&&n.validateWithAbi){let u;if(typeof n.validateWithAbi=="boolean")if(n!=null&&n.network)u=await Jq(n.contractAddress,n.contractName,n.network);else throw new Error("Network option must be provided in order to validate with ABI");else u=n.validateWithAbi;Gq(r,u)}let i=null,s=null;if("publicKey"in n)i=j2(bn.SerializeP2PKH,n.publicKey,n.nonce,n.fee);else{const u=n.useNonSequentialMultiSig?bn.SerializeP2SHNonSequential:bn.SerializeP2SH,d=n.address?g$(n.publicKeys,n.numSignatures,u,u0(n.address).hash160):n.publicKeys;i=Dq(u,n.numSignatures,d,n.nonce,n.fee)}n.sponsored?s=s$(i):s=i$(i);const o=so.fromNameOrNetwork(n.network),a=[];n.postConditions&&n.postConditions.length>0&&n.postConditions.forEach(u=>{a.push(u)});const c=B2(a),l=new qq(o.version,s,r,c,n.postConditionMode,n.anchorMode,o.chainId);if(t.fee===void 0||t.fee===null){const u=await nK(l,o);l.setFee(u)}if(t.nonce===void 0||t.nonce===null){const u=o.version===Cf.Mainnet?hm.MainnetSingleSig:hm.TestnetSingleSig,d=bd.c32address(u,l.auth.spendingCondition.signer),h=await Xq(d,o);l.setNonce(h)}return l}async function eK(t){if("senderKey"in t){const e=tq(K4(jv(t.senderKey))),n=ON(t,"senderKey"),r=await $N({publicKey:e,...n}),i=jv(t.senderKey);return new p$(r).signOrigin(i),r}else{const e=ON(t,"signerKeys"),n=await $N(e);return rK(n,t.publicKeys.slice(),t.signerKeys,t.address),n}}async function BN(t){const e={network:new Kl},n=Object.assign(e,t),{contractName:r,contractAddress:i,functionName:s,functionArgs:o,senderAddress:a}=n,c=so.fromNameOrNetwork(n.network),l=c.getReadOnlyFunctionCallApiUrl(i,r,s),u=o.map(f=>Mq(f)),d=JSON.stringify({sender:a,arguments:u}),h=await c.fetchFn(l,{method:"POST",body:d,headers:{"Content-Type":"application/json"}});if(!h.ok){const f=await h.text().catch(()=>"");throw new Error(`Error calling read-only function. Response ${h.status}: ${h.statusText}. Attempted to fetch ${l} and failed with the message: "${f}"`)}return h.json().then(f=>Pq(f))}function tK(t){const e=t.auth.spendingCondition.hashMode;if([bn.SerializeP2SH,bn.SerializeP2WSH].includes(e)){const r=t.auth.spendingCondition,i=r.fields.filter(o=>o.contents.type===qt.MessageSignature).length,s=(r.signaturesRequired-i)*(Xb+1);return t.serialize().byteLength+s}else return t.serialize().byteLength}async function nK(t,e){try{const n=tK(t);return(await Zq(t.payload,n,e))[1].fee}catch(n){if(n instanceof X4)return await Yq(t,e);throw n}}function rK(t,e,n,r){if($l(t.auth.spendingCondition))throw new Error("Transaction is not a multi-sig transaction");const i=new p$(t),s=r?g$(e,t.auth.spendingCondition.signaturesRequired,t.auth.spendingCondition.hashMode,u0(r).hash160):e;for(const o of s){const a=n.find(c=>$n(q4(c).data)===o);a?i.signOrigin(jv(a)):i.appendOrigin(eq(Gn(o)))}}function g$(t,e,n,r){if(If(0,n,e,t.map(kl)).hash160===r)return t;const s=t.slice().sort();if(If(0,n,e,s.map(kl)).hash160===r)return s;throw new Error("Failed to find matching multi-sig address given public-keys.")}const iK="modulepreload",sK=function(t){return"/"+t},FN={},mm=function(e,n,r){let i=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),a=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.allSettled(n.map(c=>{if(c=sK(c),c in FN)return;FN[c]=!0;const l=c.endsWith(".css"),u=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=l?"stylesheet":iK,l||(d.as="script"),d.crossOrigin="",d.href=c,a&&d.setAttribute("nonce",a),document.head.appendChild(d),l)return new Promise((h,f)=>{d.addEventListener("load",h),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(o){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=o,window.dispatchEvent(a),!a.defaultPrevented)throw o}return i.then(o=>{for(const a of o||[])a.status==="rejected"&&s(a.reason);return e().catch(s)})};/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */function m$(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function oK(t,...e){if(!m$(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function y$(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(n=>typeof n=="string"):e.every(n=>Number.isSafeInteger(n)):!1}function ym(t,e){if(typeof e!="string")throw new Error(`${t}: string expected`);return!0}function W2(t){if(!Number.isSafeInteger(t))throw new Error(`invalid integer: ${t}`)}function fx(t){if(!Array.isArray(t))throw new Error("array expected")}function Vv(t,e){if(!y$(!0,e))throw new Error(`${t}: array of strings expected`)}function aK(t,e){if(!y$(!1,e))throw new Error(`${t}: array of numbers expected`)}function w$(...t){const e=s=>s,n=(s,o)=>a=>s(o(a)),r=t.map(s=>s.encode).reduceRight(n,e),i=t.map(s=>s.decode).reduce(n,e);return{encode:r,decode:i}}function v$(t){const e=typeof t=="string"?t.split(""):t,n=e.length;Vv("alphabet",e);const r=new Map(e.map((i,s)=>[i,s]));return{encode:i=>(fx(i),i.map(s=>{if(!Number.isSafeInteger(s)||s<0||s>=n)throw new Error(`alphabet.encode: digit index outside alphabet "${s}". Allowed: ${t}`);return e[s]})),decode:i=>(fx(i),i.map(s=>{ym("alphabet.decode",s);const o=r.get(s);if(o===void 0)throw new Error(`Unknown letter: "${s}". Allowed: ${t}`);return o}))}}function b$(t=""){return ym("join",t),{encode:e=>(Vv("join.decode",e),e.join(t)),decode:e=>(ym("join.decode",e),e.split(t))}}function E$(t,e="="){return W2(t),ym("padding",e),{encode(n){for(Vv("padding.encode",n);n.length*t%8;)n.push(e);return n},decode(n){Vv("padding.decode",n);let r=n.length;if(r*t%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;r>0&&n[r-1]===e;r--)if((r-1)*t%8===0)throw new Error("padding: invalid, string has too much padding");return n.slice(0,r)}}}const _$=(t,e)=>e===0?t:_$(e,t%e),Wv=(t,e)=>t+(e-_$(t,e)),mE=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function zN(t,e,n,r){if(fx(t),e<=0||e>32)throw new Error(`convertRadix2: wrong from=${e}`);if(n<=0||n>32)throw new Error(`convertRadix2: wrong to=${n}`);if(Wv(e,n)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${n} carryBits=${Wv(e,n)}`);let i=0,s=0;const o=mE[e],a=mE[n]-1,c=[];for(const l of t){if(W2(l),l>=o)throw new Error(`convertRadix2: invalid data word=${l} from=${e}`);if(i=i<32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=n;s-=n)c.push((i>>s-n&a)>>>0);const u=mE[s];if(u===void 0)throw new Error("invalid carry");i&=u-1}if(i=i<=e)throw new Error("Excess padding");if(!r&&i>0)throw new Error(`Non-zero padding: ${i}`);return r&&s>0&&c.push(i>>>0),c}function S$(t,e=!1){if(W2(t),t<=0||t>32)throw new Error("radix2: bits should be in (0..32]");if(Wv(8,t)>32||Wv(t,8)>32)throw new Error("radix2: carry overflow");return{encode:n=>{if(!m$(n))throw new Error("radix2.encode input should be Uint8Array");return zN(Array.from(n),8,t,!e)},decode:n=>(aK("radix2.decode",n),Uint8Array.from(zN(n,t,8,e)))}}const cK=w$(S$(5),v$("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),E$(5),b$("")),lK=typeof Uint8Array.from([]).toBase64=="function"&&typeof Uint8Array.fromBase64=="function",uK=(t,e)=>{ym("base64",t);const n=/^[A-Za-z0-9=+/]+$/,r="base64";if(t.length>0&&!n.test(t))throw new Error("invalid base64");return Uint8Array.fromBase64(t,{alphabet:r,lastChunkHandling:"strict"})},Yb=lK?{encode(t){return oK(t),t.toBase64()},decode(t){return uK(t)}}:w$(S$(6),v$("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),E$(6),b$("")),x$="STX_PROVIDER",A$=()=>typeof window>"u"?null:window.localStorage.getItem(x$),dK=t=>{typeof window<"u"&&window.localStorage.setItem(x$,t)},hK=()=>{if(typeof window>"u")return[];const t=window.webbtc_stx_providers||[],e=window.wbip_providers||[];return[...t,...e]},fK=(t=[])=>{if(typeof window>"u")return[];const e=hK(),n=t.filter(r=>e.find(s=>s.id===r.id)?!1:!!Zb(r.id));return e.concat(n)},pK=()=>{const t=A$();return Zb(t)},Zb=t=>t==null?void 0:t.split(".").reduce((e,n)=>e==null?void 0:e[n],window),gK="connect-ui",Gv={hydratedSelectorName:"hydrated",lazyLoad:!0,updatable:!0,watchCallback:!1};var mK=Object.defineProperty,yK=(t,e)=>{for(var n in e)mK(t,n,{get:e[n],enumerable:!0})},wK="http://www.w3.org/2000/svg",vK="http://www.w3.org/1999/xhtml",Bo=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},S_e=(t,e)=>{t.__stencil__getHostRef=()=>e,e.$lazyInstance$=t},bK=(t,e)=>{const n={$flags$:0,$hostElement$:t,$cmpMeta$:e,$instanceValues$:new Map};n.$onReadyPromise$=new Promise(i=>n.$onReadyResolve$=i),t["s-p"]=[],t["s-rc"]=[];const r=n;return t.__stencil__getHostRef=()=>r,r},HN=(t,e)=>e in t,Nf=(t,e)=>(0,console.error)(t,e),yE=new Map,EK=(t,e,n)=>{const r=t.$tagName$.replace(/-/g,"_"),i=t.$lazyBundleId$;if(!i)return;const s=yE.get(i);if(s)return s[r];{const o=a=>(yE.set(i,a),a[r]);switch(i){case"connect-modal":return mm(()=>import("./connect-modal.entry-iJHoBPe2.js"),[]).then(o,Nf)}}return mm(()=>import(`./${i}.entry.js`),[]).then(o=>(yE.set(i,o),o[r]),o=>{Nf(o,e.$hostElement$)})},qv=new Map,_K="{visibility:hidden}.hydrated{visibility:inherit}",C$="slot-fb{display:contents}slot-fb[hidden]{display:none}",Fr=typeof window<"u"?window:{},$r={$flags$:0,$resourcesUrl$:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,n,r)=>t.addEventListener(e,n,r),rel:(t,e,n,r)=>t.removeEventListener(e,n,r),ce:(t,e)=>new CustomEvent(t,e)},SK=t=>Promise.resolve(t),G2=(()=>{try{return new CSSStyleSheet,typeof new CSSStyleSheet().replaceSync=="function"}catch{}return!1})(),px=G2?!!Fr.document&&Object.getOwnPropertyDescriptor(Fr.document.adoptedStyleSheets,"length").writable:!1,gx=!1,jN=[],T$=[],xK=(t,e)=>n=>{t.push(n),gx||(gx=!0,$r.$flags$&4?q2(mx):$r.raf(mx))},VN=t=>{for(let e=0;e{VN(jN),VN(T$),(gx=jN.length>0)&&$r.raf(mx)},q2=t=>SK().then(t),AK=xK(T$),K2=t=>(t=typeof t,t==="object"||t==="function");function I$(t){var e,n,r;return(r=(n=(e=t.head)==null?void 0:e.querySelector('meta[name="csp-nonce"]'))==null?void 0:n.getAttribute("content"))!=null?r:void 0}var CK=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),TK={};yK(TK,{err:()=>M$,map:()=>IK,ok:()=>yx,unwrap:()=>MK,unwrapErr:()=>NK});var yx=t=>({isOk:!0,isErr:!1,value:t}),M$=t=>({isOk:!1,isErr:!0,value:t});function IK(t,e){if(t.isOk){const n=e(t.value);return n instanceof Promise?n.then(r=>yx(r)):yx(n)}if(t.isErr){const n=t.value;return M$(n)}throw"should never get here"}var MK=t=>{if(t.isOk)return t.value;throw t.value},NK=t=>{if(t.isErr)return t.value;throw t.value};var Sp;function PK(t){var e;const n=this.attachShadow({mode:"open"});Sp===void 0&&(Sp=(e=void 0)!=null?e:null),Sp&&(px?n.adoptedStyleSheets.push(Sp):n.adoptedStyleSheets=[...n.adoptedStyleSheets,Sp])}var gc=(t,e="")=>()=>{},DK=(t,e)=>()=>{},Hh=new WeakMap,RK=(t,e,n)=>{let r=qv.get(t);G2&&n?(r=r||new CSSStyleSheet,typeof r=="string"?r=e:r.replaceSync(e)):r=e,qv.set(t,r)},OK=(t,e,n)=>{var r;const i=N$(e),s=qv.get(i);if(!Fr.document)return i;if(t=t.nodeType===11?t:Fr.document,s)if(typeof s=="string"){t=t.head||t;let o=Hh.get(t),a;if(o||Hh.set(t,o=new Set),!o.has(i)){{a=Fr.document.createElement("style"),a.innerHTML=s;const c=(r=$r.$nonce$)!=null?r:I$(Fr.document);if(c!=null&&a.setAttribute("nonce",c),!(e.$flags$&1))if(t.nodeName==="HEAD"){const l=t.querySelectorAll("link[rel=preconnect]"),u=l.length>0?l[l.length-1].nextSibling:t.querySelector("style");t.insertBefore(a,(u==null?void 0:u.parentNode)===t?u:null)}else if("host"in t)if(G2){const l=new CSSStyleSheet;l.replaceSync(s),px?t.adoptedStyleSheets.unshift(l):t.adoptedStyleSheets=[l,...t.adoptedStyleSheets]}else{const l=t.querySelector("style");l?l.innerHTML=s+l.innerHTML:t.prepend(a)}else t.append(a);e.$flags$&1&&t.insertBefore(a,null)}e.$flags$&4&&(a.innerHTML+=C$),o&&o.add(i)}}else t.adoptedStyleSheets.includes(s)||(px?t.adoptedStyleSheets.push(s):t.adoptedStyleSheets=[...t.adoptedStyleSheets,s]);return i},UK=t=>{const e=t.$cmpMeta$,n=t.$hostElement$,r=e.$flags$,i=gc("attachStyles",e.$tagName$),s=OK(n.shadowRoot?n.shadowRoot:n.getRootNode(),e);r&10&&(n["s-sc"]=s,n.classList.add(s+"-h")),i()},N$=(t,e)=>"sc-"+t.$tagName$,LK=(t,e,...n)=>{let r=null,i=null,s=!1,o=!1;const a=[],c=u=>{for(let d=0;du[d]).join(" "))}}const l=wx(t,null);return l.$attrs$=e,a.length>0&&(l.$children$=a),l.$key$=i,l},wx=(t,e)=>{const n={$flags$:0,$tag$:t,$text$:e,$elm$:null,$children$:null};return n.$attrs$=null,n.$key$=null,n},kK={},$K=t=>t&&t.$tag$===kK,X2=t=>{const e=CK(t);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${e}))(${e}\\b)`,"g")};X2("::slotted");X2(":host");X2(":host-context");var vx=(t,e,n)=>{if(typeof t=="string"&&(e&16||e&8)&&(t.startsWith("{")&&t.endsWith("}")||t.startsWith("[")&&t.endsWith("]")))try{return JSON.parse(t)}catch{}return t!=null&&!K2(t),t},x_e=t=>{var e;return(e=Bo(t))==null?void 0:e.$hostElement$},BK=(t,e,n)=>{const r=$r.ce(e,n);return t.dispatchEvent(r),r},WN=(t,e,n,r,i,s,o)=>{if(n===r)return;let a=HN(t,e),c=e.toLowerCase();if(e==="class"){const l=t.classList,u=GN(n);let d=GN(r);l.remove(...u.filter(h=>h&&!d.includes(h))),l.add(...d.filter(h=>h&&!u.includes(h)))}else if(e!=="key")if(!a&&e[0]==="o"&&e[1]==="n"){if(e[2]==="-"?e=e.slice(3):HN(Fr,c)?e=c.slice(2):e=c[2]+e.slice(3),n||r){const l=e.endsWith(P$);e=e.replace(zK,""),n&&$r.rel(t,e,n,l),r&&$r.ael(t,e,r,l)}}else{const l=K2(r);if((a||l&&r!==null)&&!i)try{if(t.tagName.includes("-"))t[e]!==r&&(t[e]=r);else{const u=r??"";e==="list"?a=!1:(n==null||t[e]!=u)&&(typeof t.__lookupSetter__(e)=="function"?t[e]=u:t.setAttribute(e,u))}}catch{}r==null||r===!1?(r!==!1||t.getAttribute(e)==="")&&t.removeAttribute(e):(!a||s&4||i)&&!l&&t.nodeType===1&&(r=r===!0?"":r,t.setAttribute(e,r))}},FK=/\s/,GN=t=>(typeof t=="object"&&t&&"baseVal"in t&&(t=t.baseVal),!t||typeof t!="string"?[]:t.split(FK)),P$="Capture",zK=new RegExp(P$+"$"),D$=(t,e,n,r)=>{const i=e.$elm$.nodeType===11&&e.$elm$.host?e.$elm$.host:e.$elm$,s=t&&t.$attrs$||{},o=e.$attrs$||{};for(const a of qN(Object.keys(s)))a in o||WN(i,a,s[a],void 0,n,e.$flags$);for(const a of qN(Object.keys(o)))WN(i,a,s[a],o[a],n,e.$flags$)};function qN(t){return t.includes("ref")?[...t.filter(e=>e!=="ref"),"ref"]:t}var Y2,ps=!1,Kv=(t,e,n)=>{const r=e.$children$[n];let i=0,s,o;if(r.$text$!==null)s=r.$elm$=Fr.document.createTextNode(r.$text$);else{if(ps||(ps=r.$tag$==="svg"),!Fr.document)throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.");if(s=r.$elm$=Fr.document.createElementNS(ps?wK:vK,r.$tag$),ps&&r.$tag$==="foreignObject"&&(ps=!1),D$(null,r,ps),r.$children$)for(i=0;i{let o=t,a;for(o.shadowRoot&&o.tagName===Y2&&(o=o.shadowRoot);i<=s;++i)r[i]&&(a=Kv(null,n,i),a&&(r[i].$elm$=a,Uw(o,a,e)))},O$=(t,e,n)=>{for(let r=e;r<=n;++r){const i=t[r];if(i){const s=i.$elm$;s&&s.remove()}}},HK=(t,e,n,r,i=!1)=>{let s=0,o=0,a=0,c=0,l=e.length-1,u=e[0],d=e[l],h=r.length-1,f=r[0],g=r[h],m,y;for(;s<=l&&o<=h;)if(u==null)u=e[++s];else if(d==null)d=e[--l];else if(f==null)f=r[++o];else if(g==null)g=r[--h];else if(py(u,f,i))Eh(u,f,i),u=e[++s],f=r[++o];else if(py(d,g,i))Eh(d,g,i),d=e[--l],g=r[--h];else if(py(u,g,i))Eh(u,g,i),Uw(t,u.$elm$,d.$elm$.nextSibling),u=e[++s],g=r[--h];else if(py(d,f,i))Eh(d,f,i),Uw(t,d.$elm$,u.$elm$),d=e[--l],f=r[++o];else{for(a=-1,c=s;c<=l;++c)if(e[c]&&e[c].$key$!==null&&e[c].$key$===f.$key$){a=c;break}a>=0?(y=e[a],y.$tag$!==f.$tag$?m=Kv(e&&e[o],n,a):(Eh(y,f,i),e[a]=void 0,m=y.$elm$),f=r[++o]):(m=Kv(e&&e[o],n,o),f=r[++o]),m&&Uw(u.$elm$.parentNode,m,u.$elm$)}s>l?R$(t,r[h+1]==null?null:r[h+1].$elm$,n,r,o,h):o>h&&O$(e,s,l)},py=(t,e,n=!1)=>t.$tag$===e.$tag$?n?(n&&!t.$key$&&e.$key$&&(t.$key$=e.$key$),!0):t.$key$===e.$key$:!1,Eh=(t,e,n=!1)=>{const r=e.$elm$=t.$elm$,i=t.$children$,s=e.$children$,o=e.$tag$,a=e.$text$;a===null?(ps=o==="svg"?!0:o==="foreignObject"?!1:ps,D$(t,e,ps),i!==null&&s!==null?HK(r,i,e,s,n):s!==null?(t.$text$!==null&&(r.textContent=""),R$(r,null,e,s,0,s.length-1)):!n&&Gv.updatable&&i!==null&&O$(i,0,i.length-1),ps&&o==="svg"&&(ps=!1)):t.$text$!==a&&(r.data=a)},Uw=(t,e,n)=>t==null?void 0:t.insertBefore(e,n),jK=(t,e,n=!1)=>{const r=t.$hostElement$,i=t.$vnode$||wx(null,null),o=$K(e)?e:LK(null,null,e);if(Y2=r.tagName,n&&o.$attrs$)for(const a of Object.keys(o.$attrs$))r.hasAttribute(a)&&!["key","ref","style","class"].includes(a)&&(o.$attrs$[a]=r[a]);o.$tag$=null,o.$flags$|=4,t.$vnode$=o,o.$elm$=i.$elm$=r.shadowRoot||r,Eh(i,o,n)},U$=(t,e)=>{if(e&&!t.$onRenderResolve$&&e["s-p"]){const n=e["s-p"].push(new Promise(r=>t.$onRenderResolve$=()=>{e["s-p"].splice(n-1,1),r()}))}},Z2=(t,e)=>{if(t.$flags$|=16,t.$flags$&4){t.$flags$|=512;return}U$(t,t.$ancestorComponent$);const n=()=>VK(t,e);if(e){queueMicrotask(()=>{n()});return}return AK(n)},VK=(t,e)=>{const n=t.$hostElement$,r=gc("scheduleUpdate",t.$cmpMeta$.$tagName$),i=t.$lazyInstance$;if(!i)throw new Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let s;return e?s=Cl(i,"componentWillLoad",void 0,n):s=Cl(i,"componentWillUpdate",void 0,n),s=KN(s,()=>Cl(i,"componentWillRender",void 0,n)),r(),KN(s,()=>GK(t,i,e))},KN=(t,e)=>WK(t)?t.then(e).catch(n=>{console.error(n),e()}):e(),WK=t=>t instanceof Promise||t&&t.then&&typeof t.then=="function",GK=async(t,e,n)=>{var r;const i=t.$hostElement$,s=gc("update",t.$cmpMeta$.$tagName$),o=i["s-rc"];n&&UK(t);const a=gc("render",t.$cmpMeta$.$tagName$);qK(t,e,i,n),o&&(o.map(c=>c()),i["s-rc"]=void 0),a(),s();{const c=(r=i["s-p"])!=null?r:[],l=()=>KK(t);c.length===0?l():(Promise.all(c).then(l),t.$flags$|=4,c.length=0)}},qK=(t,e,n,r)=>{try{e=e.render(),t.$flags$&=-17,t.$flags$|=2,jK(t,e,r)}catch(i){Nf(i,t.$hostElement$)}return null},KK=t=>{const e=t.$cmpMeta$.$tagName$,n=t.$hostElement$,r=gc("postUpdate",e),i=t.$lazyInstance$,s=t.$ancestorComponent$;Cl(i,"componentDidRender",void 0,n),t.$flags$&64?(Cl(i,"componentDidUpdate",void 0,n),r()):(t.$flags$|=64,XK(n),Cl(i,"componentDidLoad",void 0,n),r(),t.$onReadyResolve$(n),s||L$()),t.$onRenderResolve$&&(t.$onRenderResolve$(),t.$onRenderResolve$=void 0),t.$flags$&512&&q2(()=>Z2(t,!1)),t.$flags$&=-517},L$=t=>{q2(()=>BK(Fr,"appload",{detail:{namespace:gK}}))},Cl=(t,e,n,r)=>{if(t&&t[e])try{return t[e](n)}catch(i){Nf(i,r)}},XK=t=>{var e;return t.classList.add((e=Gv.hydratedSelectorName)!=null?e:"hydrated")},YK=(t,e)=>Bo(t).$instanceValues$.get(e),wE=(t,e,n,r)=>{const i=Bo(t);if(!i)return;if(!i)throw new Error(`Couldn't find host element for "${r.$tagName$}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`);const s=i.$instanceValues$.get(e),o=i.$flags$,a=i.$lazyInstance$;n=vx(n,r.$members$[e][0]);const c=Number.isNaN(s)&&Number.isNaN(n),l=n!==s&&!c;if((!(o&8)||s===void 0)&&l&&(i.$instanceValues$.set(e,n),a&&(o&18)===2)){if(a.componentShouldUpdate&&a.componentShouldUpdate(n,s,e)===!1)return;Z2(i,!1)}},k$=(t,e,n)=>{var r,i;const s=t.prototype;if(e.$members$||Gv.watchCallback){const o=Object.entries((r=e.$members$)!=null?r:{});if(o.map(([a,[c]])=>{if(c&31||n&2&&c&32){const{get:l,set:u}=Object.getOwnPropertyDescriptor(s,a)||{};l&&(e.$members$[a][0]|=2048),u&&(e.$members$[a][0]|=4096),(n&1||!l)&&Object.defineProperty(s,a,{get(){{if(!(e.$members$[a][0]&2048))return YK(this,a);const d=Bo(this),h=d?d.$lazyInstance$:s;return h?h[a]:void 0}},configurable:!0,enumerable:!0}),Object.defineProperty(s,a,{set(d){const h=Bo(this);if(h){if(u){const f=c&32?this[a]:h.$hostElement$[a];typeof f>"u"&&h.$instanceValues$.get(a)?d=h.$instanceValues$.get(a):!h.$instanceValues$.get(a)&&f&&h.$instanceValues$.set(a,f),u.apply(this,[vx(d,c)]),d=c&32?this[a]:h.$hostElement$[a],wE(this,a,d,e);return}{if(!(n&1)||!(e.$members$[a][0]&4096)){wE(this,a,d,e),n&1&&!h.$lazyInstance$&&h.$onReadyPromise$.then(()=>{e.$members$[a][0]&4096&&h.$lazyInstance$[a]!==h.$instanceValues$.get(a)&&(h.$lazyInstance$[a]=d)});return}const f=()=>{const g=h.$lazyInstance$[a];!h.$instanceValues$.get(a)&&g&&h.$instanceValues$.set(a,g),h.$lazyInstance$[a]=vx(d,c),wE(this,a,h.$lazyInstance$[a],e)};h.$lazyInstance$?f():h.$onReadyPromise$.then(()=>f())}}}})}}),n&1){const a=new Map;s.attributeChangedCallback=function(c,l,u){$r.jmp(()=>{var d;const h=a.get(c);if(this.hasOwnProperty(h)&&Gv.lazyLoad)u=this[h],delete this[h];else{if(s.hasOwnProperty(h)&&typeof this[h]=="number"&&this[h]==u)return;if(h==null){const g=Bo(this),m=g==null?void 0:g.$flags$;if(g&&m&&!(m&8)&&m&128&&u!==l){const y=g.$lazyInstance$,p=(d=e.$watchers$)==null?void 0:d[c];p==null||p.forEach(v=>{y[v]!=null&&y[v].call(y,u,l,c)})}return}}const f=Object.getOwnPropertyDescriptor(s,h);u=u===null&&typeof this[h]=="boolean"?!1:u,u!==this[h]&&(!f.get||f.set)&&(this[h]=u)})},t.observedAttributes=Array.from(new Set([...Object.keys((i=e.$watchers$)!=null?i:{}),...o.filter(([c,l])=>l[0]&31).map(([c,l])=>{const u=l[1]||c;return a.set(u,c),u})]))}}return t},ZK=async(t,e,n,r)=>{let i;if(!(e.$flags$&32)){if(e.$flags$|=32,n.$lazyBundleId$){const c=EK(n,e);if(c&&"then"in c){const u=DK();i=await c,u()}else i=c;if(!i)throw new Error(`Constructor for "${n.$tagName$}#${e.$modeName$}" was not found`);i.isProxied||(k$(i,n,2),i.isProxied=!0);const l=gc("createInstance",n.$tagName$);e.$flags$|=8;try{new i(e)}catch(u){Nf(u,t)}e.$flags$&=-9,l(),bx(e.$lazyInstance$,t)}else{i=t.constructor;const c=t.localName;customElements.whenDefined(c).then(()=>e.$flags$|=128)}if(i&&i.style){let c;typeof i.style=="string"&&(c=i.style);const l=N$(n);if(!qv.has(l)){const u=gc("registerStyles",n.$tagName$);RK(l,c,!!(n.$flags$&1)),u()}}}const s=e.$ancestorComponent$,o=()=>Z2(e,!0);s&&s["s-rc"]?s["s-rc"].push(o):o()},bx=(t,e)=>{Cl(t,"connectedCallback",void 0,e)},JK=t=>{if(!($r.$flags$&1)){const e=Bo(t);if(!e)return;const n=e.$cmpMeta$,r=gc("connectedCallback",n.$tagName$);if(e.$flags$&1)e!=null&&e.$lazyInstance$?bx(e.$lazyInstance$,t):e!=null&&e.$onReadyPromise$&&e.$onReadyPromise$.then(()=>bx(e.$lazyInstance$,t));else{e.$flags$|=1;{let i=t;for(;i=i.parentNode||i.host;)if(i["s-p"]){U$(e,e.$ancestorComponent$=i);break}}n.$members$&&Object.entries(n.$members$).map(([i,[s]])=>{if(s&31&&t.hasOwnProperty(i)){const o=t[i];delete t[i],t[i]=o}}),ZK(t,e,n)}r()}},XN=(t,e)=>{Cl(t,"disconnectedCallback",void 0,e||t)},QK=async t=>{if(!($r.$flags$&1)){const e=Bo(t);e!=null&&e.$lazyInstance$?XN(e.$lazyInstance$,t):e!=null&&e.$onReadyPromise$&&e.$onReadyPromise$.then(()=>XN(e.$lazyInstance$,t))}Hh.has(t)&&Hh.delete(t),t.shadowRoot&&Hh.has(t.shadowRoot)&&Hh.delete(t.shadowRoot)},eX=(t,e={})=>{var n;if(!Fr.document){console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");return}const r=gc(),i=[],s=e.exclude||[],o=Fr.customElements,a=Fr.document.head,c=a.querySelector("meta[charset]"),l=Fr.document.createElement("style"),u=[];let d,h=!0;Object.assign($r,e),$r.$resourcesUrl$=new URL(e.resourcesUrl||"./",Fr.document.baseURI).href;let f=!1;if(t.map(g=>{g[1].map(m=>{const y={$flags$:m[0],$tagName$:m[1],$members$:m[2],$listeners$:m[3]};y.$flags$&4&&(f=!0),y.$members$=m[2];const p=y.$tagName$,v=class extends HTMLElement{constructor(w){if(super(w),this.hasRegisteredEventListeners=!1,w=this,bK(w,y),y.$flags$&1){if(!w.shadowRoot)PK.call(w,y);else if(w.shadowRoot.mode!=="open")throw new Error(`Unable to re-use existing shadow root for ${y.$tagName$}! Mode is set to ${w.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}connectedCallback(){Bo(this)&&(this.hasRegisteredEventListeners||(this.hasRegisteredEventListeners=!0),d&&(clearTimeout(d),d=null),h?u.push(this):$r.jmp(()=>JK(this)))}disconnectedCallback(){$r.jmp(()=>QK(this)),$r.raf(()=>{var w;const b=Bo(this);if(!b)return;const S=u.findIndex(x=>x===this);S>-1&&u.splice(S,1),((w=b==null?void 0:b.$vnode$)==null?void 0:w.$elm$)instanceof Node&&!b.$vnode$.$elm$.isConnected&&delete b.$vnode$.$elm$})}componentOnReady(){var w;return(w=Bo(this))==null?void 0:w.$onReadyPromise$}};y.$lazyBundleId$=g[0],!s.includes(p)&&!o.get(p)&&(i.push(p),o.define(p,k$(v,y,1)))})}),i.length>0&&(f&&(l.textContent+=C$),l.textContent+=i.sort()+_K,l.innerHTML.length)){l.setAttribute("data-styles","");const g=(n=$r.$nonce$)!=null?n:I$(Fr.document);g!=null&&l.setAttribute("nonce",g),a.insertBefore(l,c?c.nextSibling:a.firstChild)}h=!1,u.length?u.map(g=>g.connectedCallback()):$r.jmp(()=>d=setTimeout(L$,30)),r()};const tX=()=>{},nX=async(t,e)=>{if(!(typeof window>"u"))return await tX(),eX([["connect-modal",[[257,"connect-modal",{defaultProviders:[16,"default-providers"],installedProviders:[16,"installed-providers"],callback:[16],cancelCallback:[16,"cancel-callback"]}]]]],e)};(function(){if(typeof window<"u"&&window.Reflect!==void 0&&window.customElements!==void 0){var t=HTMLElement;window.HTMLElement=function(){return Reflect.construct(t,[],this.constructor)},HTMLElement.prototype=t.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,t)}})();var J2={exports:{}},nf=typeof Reflect=="object"?Reflect:null,YN=nf&&typeof nf.apply=="function"?nf.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},Lw;nf&&typeof nf.ownKeys=="function"?Lw=nf.ownKeys:Object.getOwnPropertySymbols?Lw=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Lw=function(e){return Object.getOwnPropertyNames(e)};function rX(t){console&&console.warn&&console.warn(t)}var $$=Number.isNaN||function(e){return e!==e};function Sn(){Sn.init.call(this)}J2.exports=Sn;J2.exports.once=aX;Sn.EventEmitter=Sn;Sn.prototype._events=void 0;Sn.prototype._eventsCount=0;Sn.prototype._maxListeners=void 0;var ZN=10;function Jb(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(Sn,"defaultMaxListeners",{enumerable:!0,get:function(){return ZN},set:function(t){if(typeof t!="number"||t<0||$$(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");ZN=t}});Sn.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Sn.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||$$(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function B$(t){return t._maxListeners===void 0?Sn.defaultMaxListeners:t._maxListeners}Sn.prototype.getMaxListeners=function(){return B$(this)};Sn.prototype.emit=function(e){for(var n=[],r=1;r0&&(o=n[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")YN(c,this,n);else for(var l=c.length,u=V$(c,l),r=0;r0&&o.length>i&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=o.length,rX(a)}return t}Sn.prototype.addListener=function(e,n){return F$(this,e,n,!1)};Sn.prototype.on=Sn.prototype.addListener;Sn.prototype.prependListener=function(e,n){return F$(this,e,n,!0)};function iX(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function z$(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=iX.bind(r);return i.listener=n,r.wrapFn=i,i}Sn.prototype.once=function(e,n){return Jb(n),this.on(e,z$(this,e,n)),this};Sn.prototype.prependOnceListener=function(e,n){return Jb(n),this.prependListener(e,z$(this,e,n)),this};Sn.prototype.removeListener=function(e,n){var r,i,s,o,a;if(Jb(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(s=-1,o=r.length-1;o>=0;o--)if(r[o]===n||r[o].listener===n){a=r[o].listener,s=o;break}if(s<0)return this;s===0?r.shift():sX(r,s),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,a||n)}return this};Sn.prototype.off=Sn.prototype.removeListener;Sn.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var s=Object.keys(r),o;for(i=0;i=0;i--)this.removeListener(e,n[i]);return this};function H$(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?oX(i):V$(i,i.length)}Sn.prototype.listeners=function(e){return H$(this,e,!0)};Sn.prototype.rawListeners=function(e){return H$(this,e,!1)};Sn.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):j$.call(t,e)};Sn.prototype.listenerCount=j$;function j$(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}Sn.prototype.eventNames=function(){return this._eventsCount>0?Lw(this._events):[]};function V$(t,e){for(var n=new Array(e),r=0;r=0;a--)(o=t[a])&&(s=(i<3?o(s):i>3?o(e,n,s):o(e,n))||s);return i>3&&s&&Object.defineProperty(e,n,s),s}function hX(t,e){return function(n,r){e(n,r,t)}}function fX(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function pX(t,e,n,r){function i(s){return s instanceof n?s:new n(function(o){o(s)})}return new(n||(n=Promise))(function(s,o){function a(u){try{l(r.next(u))}catch(d){o(d)}}function c(u){try{l(r.throw(u))}catch(d){o(d)}}function l(u){u.done?s(u.value):i(u.value).then(a,c)}l((r=r.apply(t,e||[])).next())})}function gX(t,e){var n={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(l){return function(u){return c([l,u])}}function c(l){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return n.label++,{value:l[1],done:!1};case 5:n.label++,i=l[1],l=[0];continue;case 7:l=n.ops.pop(),n.trys.pop();continue;default:if(s=n.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){n=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function G$(t,e){var n=typeof Symbol=="function"&&t[Symbol.iterator];if(!n)return t;var r=n.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return s}function wX(){for(var t=[],e=0;e1||a(h,f)})})}function a(h,f){try{c(r[h](f))}catch(g){d(s[0][3],g)}}function c(h){h.value instanceof wm?Promise.resolve(h.value.v).then(l,u):d(s[0][2],h)}function l(h){a("next",h)}function u(h){a("throw",h)}function d(h,f){h(f),s.shift(),s.length&&a(s[0][0],s[0][1])}}function EX(t){var e,n;return e={},r("next"),r("throw",function(i){throw i}),r("return"),e[Symbol.iterator]=function(){return this},e;function r(i,s){e[i]=t[i]?function(o){return(n=!n)?{value:wm(t[i](o)),done:i==="return"}:s?s(o):o}:s}}function _X(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof Sx=="function"?Sx(t):t[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(s){n[s]=t[s]&&function(o){return new Promise(function(a,c){o=t[s](o),i(a,c,o.done,o.value)})}}function i(s,o,a,c){Promise.resolve(c).then(function(l){s({value:l,done:a})},o)}}function SX(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function xX(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function AX(t){return t&&t.__esModule?t:{default:t}}function CX(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function TX(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}const IX=Object.freeze(Object.defineProperty({__proto__:null,get __assign(){return _x},__asyncDelegator:EX,__asyncGenerator:bX,__asyncValues:_X,__await:wm,__awaiter:pX,__classPrivateFieldGet:CX,__classPrivateFieldSet:TX,__createBinding:mX,__decorate:dX,__exportStar:yX,__extends:lX,__generator:gX,__importDefault:AX,__importStar:xX,__makeTemplateObject:SX,__metadata:fX,__param:hX,__read:G$,__rest:uX,__spread:wX,__spreadArrays:vX,__values:Sx},Symbol.toStringTag,{value:"Module"})),p0=XO(IX);var vE={},xp={},JN;function MX(){if(JN)return xp;JN=1,Object.defineProperty(xp,"__esModule",{value:!0}),xp.delay=void 0;function t(e){return new Promise(n=>{setTimeout(()=>{n(!0)},e)})}return xp.delay=t,xp}var nu={},bE={},ru={},QN;function NX(){return QN||(QN=1,Object.defineProperty(ru,"__esModule",{value:!0}),ru.ONE_THOUSAND=ru.ONE_HUNDRED=void 0,ru.ONE_HUNDRED=100,ru.ONE_THOUSAND=1e3),ru}var EE={},eP;function PX(){return eP||(eP=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.ONE_YEAR=t.FOUR_WEEKS=t.THREE_WEEKS=t.TWO_WEEKS=t.ONE_WEEK=t.THIRTY_DAYS=t.SEVEN_DAYS=t.FIVE_DAYS=t.THREE_DAYS=t.ONE_DAY=t.TWENTY_FOUR_HOURS=t.TWELVE_HOURS=t.SIX_HOURS=t.THREE_HOURS=t.ONE_HOUR=t.SIXTY_MINUTES=t.THIRTY_MINUTES=t.TEN_MINUTES=t.FIVE_MINUTES=t.ONE_MINUTE=t.SIXTY_SECONDS=t.THIRTY_SECONDS=t.TEN_SECONDS=t.FIVE_SECONDS=t.ONE_SECOND=void 0,t.ONE_SECOND=1,t.FIVE_SECONDS=5,t.TEN_SECONDS=10,t.THIRTY_SECONDS=30,t.SIXTY_SECONDS=60,t.ONE_MINUTE=t.SIXTY_SECONDS,t.FIVE_MINUTES=t.ONE_MINUTE*5,t.TEN_MINUTES=t.ONE_MINUTE*10,t.THIRTY_MINUTES=t.ONE_MINUTE*30,t.SIXTY_MINUTES=t.ONE_MINUTE*60,t.ONE_HOUR=t.SIXTY_MINUTES,t.THREE_HOURS=t.ONE_HOUR*3,t.SIX_HOURS=t.ONE_HOUR*6,t.TWELVE_HOURS=t.ONE_HOUR*12,t.TWENTY_FOUR_HOURS=t.ONE_HOUR*24,t.ONE_DAY=t.TWENTY_FOUR_HOURS,t.THREE_DAYS=t.ONE_DAY*3,t.FIVE_DAYS=t.ONE_DAY*5,t.SEVEN_DAYS=t.ONE_DAY*7,t.THIRTY_DAYS=t.ONE_DAY*30,t.ONE_WEEK=t.SEVEN_DAYS,t.TWO_WEEKS=t.ONE_WEEK*2,t.THREE_WEEKS=t.ONE_WEEK*3,t.FOUR_WEEKS=t.ONE_WEEK*4,t.ONE_YEAR=t.ONE_DAY*365}(EE)),EE}var tP;function q$(){return tP||(tP=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=p0;e.__exportStar(NX(),t),e.__exportStar(PX(),t)}(bE)),bE}var nP;function DX(){if(nP)return nu;nP=1,Object.defineProperty(nu,"__esModule",{value:!0}),nu.fromMiliseconds=nu.toMiliseconds=void 0;const t=q$();function e(r){return r*t.ONE_THOUSAND}nu.toMiliseconds=e;function n(r){return Math.floor(r/t.ONE_THOUSAND)}return nu.fromMiliseconds=n,nu}var rP;function RX(){return rP||(rP=1,function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=p0;e.__exportStar(MX(),t),e.__exportStar(DX(),t)}(vE)),vE}var Ud={},iP;function OX(){if(iP)return Ud;iP=1,Object.defineProperty(Ud,"__esModule",{value:!0}),Ud.Watch=void 0;class t{constructor(){this.timestamps=new Map}start(n){if(this.timestamps.has(n))throw new Error(`Watch already started for label: ${n}`);this.timestamps.set(n,{started:Date.now()})}stop(n){const r=this.get(n);if(typeof r.elapsed<"u")throw new Error(`Watch already stopped for label: ${n}`);const i=Date.now()-r.started;this.timestamps.set(n,{started:r.started,elapsed:i})}get(n){const r=this.timestamps.get(n);if(typeof r>"u")throw new Error(`No timestamp found for label: ${n}`);return r}elapsed(n){const r=this.get(n);return r.elapsed||Date.now()-r.started}}return Ud.Watch=t,Ud.default=t,Ud}var _E={},Ap={},sP;function UX(){if(sP)return Ap;sP=1,Object.defineProperty(Ap,"__esModule",{value:!0}),Ap.IWatch=void 0;class t{}return Ap.IWatch=t,Ap}var oP;function LX(){return oP||(oP=1,function(t){Object.defineProperty(t,"__esModule",{value:!0}),p0.__exportStar(UX(),t)}(_E)),_E}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=p0;e.__exportStar(RX(),t),e.__exportStar(OX(),t),e.__exportStar(LX(),t),e.__exportStar(q$(),t)})(Ie);class Ed{}let kX=class extends Ed{constructor(e){super()}};const aP=Ie.FIVE_SECONDS,_d={pulse:"heartbeat_pulse"};let $X=class K$ extends kX{constructor(e){super(e),this.events=new co.EventEmitter,this.interval=aP,this.interval=(e==null?void 0:e.interval)||aP}static async init(e){const n=new K$(e);return await n.init(),n}async init(){await this.initialize()}stop(){clearInterval(this.intervalRef)}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}off(e,n){this.events.off(e,n)}removeListener(e,n){this.events.removeListener(e,n)}async initialize(){this.intervalRef=setInterval(()=>this.pulse(),Ie.toMiliseconds(this.interval))}pulse(){this.events.emit(_d.pulse)}};const BX=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,FX=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,zX=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function HX(t,e){if(t==="__proto__"||t==="constructor"&&e&&typeof e=="object"&&"prototype"in e){jX(t);return}return e}function jX(t){console.warn(`[destr] Dropping "${t}" key to prevent prototype pollution.`)}function gy(t,e={}){if(typeof t!="string")return t;if(t[0]==='"'&&t[t.length-1]==='"'&&t.indexOf("\\")===-1)return t.slice(1,-1);const n=t.trim();if(n.length<=9)switch(n.toLowerCase()){case"true":return!0;case"false":return!1;case"undefined":return;case"null":return null;case"nan":return Number.NaN;case"infinity":return Number.POSITIVE_INFINITY;case"-infinity":return Number.NEGATIVE_INFINITY}if(!zX.test(t)){if(e.strict)throw new SyntaxError("[destr] Invalid JSON");return t}try{if(BX.test(t)||FX.test(t)){if(e.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(t,HX)}return JSON.parse(t)}catch(r){if(e.strict)throw r;return t}}function VX(t){return!t||typeof t.then!="function"?Promise.resolve(t):t}function xr(t,...e){try{return VX(t(...e))}catch(n){return Promise.reject(n)}}function WX(t){const e=typeof t;return t===null||e!=="object"&&e!=="function"}function GX(t){const e=Object.getPrototypeOf(t);return!e||e.isPrototypeOf(Object)}function kw(t){if(WX(t))return String(t);if(GX(t)||Array.isArray(t))return JSON.stringify(t);if(typeof t.toJSON=="function")return kw(t.toJSON());throw new Error("[unstorage] Cannot stringify value!")}const xx="base64:";function qX(t){return typeof t=="string"?t:xx+YX(t)}function KX(t){return typeof t!="string"||!t.startsWith(xx)?t:XX(t.slice(xx.length))}function XX(t){return globalThis.Buffer?Buffer.from(t,"base64"):Uint8Array.from(globalThis.atob(t),e=>e.codePointAt(0))}function YX(t){return globalThis.Buffer?Buffer.from(t).toString("base64"):globalThis.btoa(String.fromCodePoint(...t))}function Bi(t){var e;return t&&((e=t.split("?")[0])==null?void 0:e.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""))||""}function ZX(...t){return Bi(t.join(":"))}function my(t){return t=Bi(t),t?t+":":""}function JX(t,e){if(e===void 0)return!0;let n=0,r=t.indexOf(":");for(;r>-1;)n++,r=t.indexOf(":",r+1);return n<=e}function QX(t,e){return e?t.startsWith(e)&&t[t.length-1]!=="$":t[t.length-1]!=="$"}const eY="memory",tY=()=>{const t=new Map;return{name:eY,getInstance:()=>t,hasItem(e){return t.has(e)},getItem(e){return t.get(e)??null},getItemRaw(e){return t.get(e)??null},setItem(e,n){t.set(e,n)},setItemRaw(e,n){t.set(e,n)},removeItem(e){t.delete(e)},getKeys(){return[...t.keys()]},clear(){t.clear()},dispose(){t.clear()}}};function nY(t={}){const e={mounts:{"":t.driver||tY()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},n=l=>{for(const u of e.mountpoints)if(l.startsWith(u))return{base:u,relativeKey:l.slice(u.length),driver:e.mounts[u]};return{base:"",relativeKey:l,driver:e.mounts[""]}},r=(l,u)=>e.mountpoints.filter(d=>d.startsWith(l)||u&&l.startsWith(d)).map(d=>({relativeBase:l.length>d.length?l.slice(d.length):void 0,mountpoint:d,driver:e.mounts[d]})),i=(l,u)=>{if(e.watching){u=Bi(u);for(const d of e.watchListeners)d(l,u)}},s=async()=>{if(!e.watching){e.watching=!0;for(const l in e.mounts)e.unwatch[l]=await cP(e.mounts[l],i,l)}},o=async()=>{if(e.watching){for(const l in e.unwatch)await e.unwatch[l]();e.unwatch={},e.watching=!1}},a=(l,u,d)=>{const h=new Map,f=g=>{let m=h.get(g.base);return m||(m={driver:g.driver,base:g.base,items:[]},h.set(g.base,m)),m};for(const g of l){const m=typeof g=="string",y=Bi(m?g:g.key),p=m?void 0:g.value,v=m||!g.options?u:{...u,...g.options},w=n(y);f(w).items.push({key:y,value:p,relativeKey:w.relativeKey,options:v})}return Promise.all([...h.values()].map(g=>d(g))).then(g=>g.flat())},c={hasItem(l,u={}){l=Bi(l);const{relativeKey:d,driver:h}=n(l);return xr(h.hasItem,d,u)},getItem(l,u={}){l=Bi(l);const{relativeKey:d,driver:h}=n(l);return xr(h.getItem,d,u).then(f=>gy(f))},getItems(l,u={}){return a(l,u,d=>d.driver.getItems?xr(d.driver.getItems,d.items.map(h=>({key:h.relativeKey,options:h.options})),u).then(h=>h.map(f=>({key:ZX(d.base,f.key),value:gy(f.value)}))):Promise.all(d.items.map(h=>xr(d.driver.getItem,h.relativeKey,h.options).then(f=>({key:h.key,value:gy(f)})))))},getItemRaw(l,u={}){l=Bi(l);const{relativeKey:d,driver:h}=n(l);return h.getItemRaw?xr(h.getItemRaw,d,u):xr(h.getItem,d,u).then(f=>KX(f))},async setItem(l,u,d={}){if(u===void 0)return c.removeItem(l);l=Bi(l);const{relativeKey:h,driver:f}=n(l);f.setItem&&(await xr(f.setItem,h,kw(u),d),f.watch||i("update",l))},async setItems(l,u){await a(l,u,async d=>{if(d.driver.setItems)return xr(d.driver.setItems,d.items.map(h=>({key:h.relativeKey,value:kw(h.value),options:h.options})),u);d.driver.setItem&&await Promise.all(d.items.map(h=>xr(d.driver.setItem,h.relativeKey,kw(h.value),h.options)))})},async setItemRaw(l,u,d={}){if(u===void 0)return c.removeItem(l,d);l=Bi(l);const{relativeKey:h,driver:f}=n(l);if(f.setItemRaw)await xr(f.setItemRaw,h,u,d);else if(f.setItem)await xr(f.setItem,h,qX(u),d);else return;f.watch||i("update",l)},async removeItem(l,u={}){typeof u=="boolean"&&(u={removeMeta:u}),l=Bi(l);const{relativeKey:d,driver:h}=n(l);h.removeItem&&(await xr(h.removeItem,d,u),(u.removeMeta||u.removeMata)&&await xr(h.removeItem,d+"$",u),h.watch||i("remove",l))},async getMeta(l,u={}){typeof u=="boolean"&&(u={nativeOnly:u}),l=Bi(l);const{relativeKey:d,driver:h}=n(l),f=Object.create(null);if(h.getMeta&&Object.assign(f,await xr(h.getMeta,d,u)),!u.nativeOnly){const g=await xr(h.getItem,d+"$",u).then(m=>gy(m));g&&typeof g=="object"&&(typeof g.atime=="string"&&(g.atime=new Date(g.atime)),typeof g.mtime=="string"&&(g.mtime=new Date(g.mtime)),Object.assign(f,g))}return f},setMeta(l,u,d={}){return this.setItem(l+"$",u,d)},removeMeta(l,u={}){return this.removeItem(l+"$",u)},async getKeys(l,u={}){var y;l=my(l);const d=r(l,!0);let h=[];const f=[];let g=!0;for(const p of d){(y=p.driver.flags)!=null&&y.maxDepth||(g=!1);const v=await xr(p.driver.getKeys,p.relativeBase,u);for(const w of v){const b=p.mountpoint+Bi(w);h.some(S=>b.startsWith(S))||f.push(b)}h=[p.mountpoint,...h.filter(w=>!w.startsWith(p.mountpoint))]}const m=u.maxDepth!==void 0&&!g;return f.filter(p=>(!m||JX(p,u.maxDepth))&&QX(p,l))},async clear(l,u={}){l=my(l),await Promise.all(r(l,!1).map(async d=>{if(d.driver.clear)return xr(d.driver.clear,d.relativeBase,u);if(d.driver.removeItem){const h=await d.driver.getKeys(d.relativeBase||"",u);return Promise.all(h.map(f=>d.driver.removeItem(f,u)))}}))},async dispose(){await Promise.all(Object.values(e.mounts).map(l=>lP(l)))},async watch(l){return await s(),e.watchListeners.push(l),async()=>{e.watchListeners=e.watchListeners.filter(u=>u!==l),e.watchListeners.length===0&&await o()}},async unwatch(){e.watchListeners=[],await o()},mount(l,u){if(l=my(l),l&&e.mounts[l])throw new Error(`already mounted at ${l}`);return l&&(e.mountpoints.push(l),e.mountpoints.sort((d,h)=>h.length-d.length)),e.mounts[l]=u,e.watching&&Promise.resolve(cP(u,i,l)).then(d=>{e.unwatch[l]=d}).catch(console.error),c},async unmount(l,u=!0){var d,h;l=my(l),!(!l||!e.mounts[l])&&(e.watching&&l in e.unwatch&&((h=(d=e.unwatch)[l])==null||h.call(d),delete e.unwatch[l]),u&&await lP(e.mounts[l]),e.mountpoints=e.mountpoints.filter(f=>f!==l),delete e.mounts[l])},getMount(l=""){l=Bi(l)+":";const u=n(l);return{driver:u.driver,base:u.base}},getMounts(l="",u={}){return l=Bi(l),r(l,u.parents).map(h=>({driver:h.driver,base:h.mountpoint}))},keys:(l,u={})=>c.getKeys(l,u),get:(l,u={})=>c.getItem(l,u),set:(l,u,d={})=>c.setItem(l,u,d),has:(l,u={})=>c.hasItem(l,u),del:(l,u={})=>c.removeItem(l,u),remove:(l,u={})=>c.removeItem(l,u)};return c}function cP(t,e,n){return t.watch?t.watch((r,i)=>e(r,n+i)):()=>{}}async function lP(t){typeof t.dispose=="function"&&await xr(t.dispose)}function Sd(t){return new Promise((e,n)=>{t.oncomplete=t.onsuccess=()=>e(t.result),t.onabort=t.onerror=()=>n(t.error)})}function X$(t,e){let n;const r=()=>{if(n)return n;const i=indexedDB.open(t);return i.onupgradeneeded=()=>i.result.createObjectStore(e),n=Sd(i),n.then(s=>{s.onclose=()=>n=void 0},()=>{}),n};return(i,s)=>r().then(o=>s(o.transaction(e,i).objectStore(e)))}let SE;function g0(){return SE||(SE=X$("keyval-store","keyval")),SE}function uP(t,e=g0()){return e("readonly",n=>Sd(n.get(t)))}function rY(t,e,n=g0()){return n("readwrite",r=>(r.put(e,t),Sd(r.transaction)))}function iY(t,e=g0()){return e("readwrite",n=>(n.delete(t),Sd(n.transaction)))}function sY(t=g0()){return t("readwrite",e=>(e.clear(),Sd(e.transaction)))}function oY(t,e){return t.openCursor().onsuccess=function(){this.result&&(e(this.result),this.result.continue())},Sd(t.transaction)}function aY(t=g0()){return t("readonly",e=>{if(e.getAllKeys)return Sd(e.getAllKeys());const n=[];return oY(e,r=>n.push(r.key)).then(()=>n)})}const cY=t=>JSON.stringify(t,(e,n)=>typeof n=="bigint"?n.toString()+"n":n),lY=t=>{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,n=t.replace(e,'$1"$2n"$3');return JSON.parse(n,(r,i)=>typeof i=="string"&&i.match(/^\d+n$/)?BigInt(i.substring(0,i.length-1)):i)};function ad(t){if(typeof t!="string")throw new Error(`Cannot safe json parse value of type ${typeof t}`);try{return lY(t)}catch{return t}}function mc(t){return typeof t=="string"?t:cY(t)||""}const uY="idb-keyval";var dY=(t={})=>{const e=t.base&&t.base.length>0?`${t.base}:`:"",n=i=>e+i;let r;return t.dbName&&t.storeName&&(r=X$(t.dbName,t.storeName)),{name:uY,options:t,async hasItem(i){return!(typeof await uP(n(i),r)>"u")},async getItem(i){return await uP(n(i),r)??null},setItem(i,s){return rY(n(i),s,r)},removeItem(i){return iY(n(i),r)},getKeys(){return aY(r)},clear(){return sY(r)}}};const hY="WALLET_CONNECT_V2_INDEXED_DB",fY="keyvaluestorage";let pY=class{constructor(){this.indexedDb=nY({driver:dY({dbName:hY,storeName:fY})})}async getKeys(){return this.indexedDb.getKeys()}async getEntries(){return(await this.indexedDb.getItems(await this.indexedDb.getKeys())).map(e=>[e.key,e.value])}async getItem(e){const n=await this.indexedDb.getItem(e);if(n!==null)return n}async setItem(e,n){await this.indexedDb.setItem(e,mc(n))}async removeItem(e){await this.indexedDb.removeItem(e)}};var xE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},$w={exports:{}};(function(){let t;function e(){}t=e,t.prototype.getItem=function(n){return this.hasOwnProperty(n)?String(this[n]):null},t.prototype.setItem=function(n,r){this[n]=String(r)},t.prototype.removeItem=function(n){delete this[n]},t.prototype.clear=function(){const n=this;Object.keys(n).forEach(function(r){n[r]=void 0,delete n[r]})},t.prototype.key=function(n){return n=n||0,Object.keys(this)[n]},t.prototype.__defineGetter__("length",function(){return Object.keys(this).length}),typeof xE<"u"&&xE.localStorage?$w.exports=xE.localStorage:typeof window<"u"&&window.localStorage?$w.exports=window.localStorage:$w.exports=new e})();function gY(t){var e;return[t[0],ad((e=t[1])!=null?e:"")]}let mY=class{constructor(){this.localStorage=$w.exports}async getKeys(){return Object.keys(this.localStorage)}async getEntries(){return Object.entries(this.localStorage).map(gY)}async getItem(e){const n=this.localStorage.getItem(e);if(n!==null)return ad(n)}async setItem(e,n){this.localStorage.setItem(e,mc(n))}async removeItem(e){this.localStorage.removeItem(e)}};const yY="wc_storage_version",dP=1,wY=async(t,e,n)=>{const r=yY,i=await e.getItem(r);if(i&&i>=dP){n(e);return}const s=await t.getKeys();if(!s.length){n(e);return}const o=[];for(;s.length;){const a=s.shift();if(!a)continue;const c=a.toLowerCase();if(c.includes("wc@")||c.includes("walletconnect")||c.includes("wc_")||c.includes("wallet_connect")){const l=await t.getItem(a);await e.setItem(a,l),o.push(a)}}await e.setItem(r,dP),n(e),vY(t,o)},vY=async(t,e)=>{e.length&&e.forEach(async n=>{await t.removeItem(n)})};let bY=class{constructor(){this.initialized=!1,this.setInitialized=n=>{this.storage=n,this.initialized=!0};const e=new mY;this.storage=e;try{const n=new pY;wY(e,n,this.setInitialized)}catch{this.initialized=!0}}async getKeys(){return await this.initialize(),this.storage.getKeys()}async getEntries(){return await this.initialize(),this.storage.getEntries()}async getItem(e){return await this.initialize(),this.storage.getItem(e)}async setItem(e,n){return await this.initialize(),this.storage.setItem(e,n)}async removeItem(e){return await this.initialize(),this.storage.removeItem(e)}async initialize(){this.initialized||await new Promise(e=>{const n=setInterval(()=>{this.initialized&&(clearInterval(n),e())},20)})}};function EY(t){try{return JSON.stringify(t)}catch{return'"[Circular]"'}}var _Y=SY;function SY(t,e,n){var r=n&&n.stringify||EY,i=1;if(typeof t=="object"&&t!==null){var s=e.length+i;if(s===1)return t;var o=new Array(s);o[0]=r(t);for(var a=1;a-1?d:0,t.charCodeAt(f+1)){case 100:case 102:if(u>=c||e[u]==null)break;d=c||e[u]==null)break;d=c||e[u]===void 0)break;d",d=f+2,f++;break}l+=r(e[u]),d=f+2,f++;break;case 115:if(u>=c)break;d-1&&(s=!1);const o=["error","fatal","warn","info","debug","trace"];typeof n=="function"&&(n.error=n.fatal=n.warn=n.info=n.debug=n.trace=n),t.enabled===!1&&(t.level="silent");const a=t.level||"info",c=Object.create(n);c.log||(c.log=bm),Object.defineProperty(c,"levelVal",{get:u}),Object.defineProperty(c,"level",{get:d,set:h});const l={transmit:e,serialize:i,asObject:t.browser.asObject,levels:o,timestamp:NY(t)};c.levels=va.levels,c.level=a,c.setMaxListeners=c.getMaxListeners=c.emit=c.addListener=c.on=c.prependListener=c.once=c.prependOnceListener=c.removeListener=c.removeAllListeners=c.listeners=c.listenerCount=c.eventNames=c.write=c.flush=bm,c.serializers=r,c._serialize=i,c._stdErrSerialize=s,c.child=f,e&&(c._logEvent=Ax());function u(){return this.level==="silent"?1/0:this.levels.values[this.level]}function d(){return this._level}function h(g){if(g!=="silent"&&!this.levels.values[g])throw Error("unknown level "+g);this._level=g,Ld(l,c,"error","log"),Ld(l,c,"fatal","error"),Ld(l,c,"warn","error"),Ld(l,c,"info","log"),Ld(l,c,"debug","log"),Ld(l,c,"trace","log")}function f(g,m){if(!g)throw new Error("missing bindings for child Pino");m=m||{},i&&g.serializers&&(m.serializers=g.serializers);const y=m.serializers;if(i&&y){var p=Object.assign({},r,y),v=t.browser.serialize===!0?Object.keys(p):i;delete g.serializers,Qb([g],v,p,this._stdErrSerialize)}function w(b){this._childLevel=(b._childLevel|0)+1,this.error=kd(b,g,"error"),this.fatal=kd(b,g,"fatal"),this.warn=kd(b,g,"warn"),this.info=kd(b,g,"info"),this.debug=kd(b,g,"debug"),this.trace=kd(b,g,"trace"),p&&(this.serializers=p,this._serialize=v),e&&(this._logEvent=Ax([].concat(b._logEvent.bindings,g)))}return w.prototype=this,new w(this)}return c}va.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}};va.stdSerializers=xY;va.stdTimeFunctions=Object.assign({},{nullTime:Y$,epochTime:Z$,unixTime:PY,isoTime:DY});function Ld(t,e,n,r){const i=Object.getPrototypeOf(e);e[n]=e.levelVal>e.levels.values[n]?bm:i[n]?i[n]:vm[n]||vm[r]||bm,CY(t,e,n)}function CY(t,e,n){!t.transmit&&e[n]===bm||(e[n]=function(r){return function(){const s=t.timestamp(),o=new Array(arguments.length),a=Object.getPrototypeOf&&Object.getPrototypeOf(this)===vm?vm:this;for(var c=0;c-1&&s in n&&(t[i][s]=n[s](t[i][s]))}function kd(t,e,n){return function(){const r=new Array(1+arguments.length);r[0]=e;for(var i=1;ithis.maxSizeInBytes)throw new Error(`[LinkedList] Value too big to insert into list: ${e} with size ${n.size}`);for(;this.size+n.size>this.maxSizeInBytes;)this.shift();this.head?(this.tail&&(this.tail.next=n),this.tail=n):(this.head=n,this.tail=n),this.lengthInNodes++,this.sizeInBytes+=n.size}shift(){if(!this.head)return;const e=this.head;this.head=this.head.next,this.head||(this.tail=null),this.lengthInNodes--,this.sizeInBytes-=e.size}toArray(){const e=[];let n=this.head;for(;n!==null;)e.push(n.value),n=n.next;return e}get length(){return this.lengthInNodes}get size(){return this.sizeInBytes}toOrderedArray(){return Array.from(this)}[Symbol.iterator](){let e=this.head;return{next:()=>{if(!e)return{done:!0,value:null};const n=e.value;return e=e.next,{done:!1,value:n}}}}},J$=class{constructor(e,n=eT){this.level=e??"error",this.levelValue=_h.levels.values[this.level],this.MAX_LOG_SIZE_IN_BYTES=n,this.logs=new fP(this.MAX_LOG_SIZE_IN_BYTES)}forwardToConsole(e,n){n===_h.levels.values.error?console.error(e):n===_h.levels.values.warn?console.warn(e):n===_h.levels.values.debug?console.debug(e):n===_h.levels.values.trace?console.trace(e):console.log(e)}appendToLogs(e){this.logs.append(mc({timestamp:new Date().toISOString(),log:e}));const n=typeof e=="string"?JSON.parse(e).level:e.level;n>=this.levelValue&&this.forwardToConsole(e,n)}getLogs(){return this.logs}clearLogs(){this.logs=new fP(this.MAX_LOG_SIZE_IN_BYTES)}getLogArray(){return Array.from(this.logs)}logsToBlob(e){const n=this.getLogArray();return n.push(mc({extraMetadata:e})),new Blob(n,{type:"application/json"})}},LY=class{constructor(e,n=eT){this.baseChunkLogger=new J$(e,n)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}downloadLogsBlobInBrowser(e){const n=URL.createObjectURL(this.logsToBlob(e)),r=document.createElement("a");r.href=n,r.download=`walletconnect-logs-${new Date().toISOString()}.txt`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}},kY=class{constructor(e,n=eT){this.baseChunkLogger=new J$(e,n)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}};var $Y=Object.defineProperty,BY=Object.defineProperties,FY=Object.getOwnPropertyDescriptors,pP=Object.getOwnPropertySymbols,zY=Object.prototype.hasOwnProperty,HY=Object.prototype.propertyIsEnumerable,gP=(t,e,n)=>e in t?$Y(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Xv=(t,e)=>{for(var n in e||(e={}))zY.call(e,n)&&gP(t,n,e[n]);if(pP)for(var n of pP(e))HY.call(e,n)&&gP(t,n,e[n]);return t},Yv=(t,e)=>BY(t,FY(e));function w0(t){return Yv(Xv({},t),{level:(t==null?void 0:t.level)||OY.level})}function jY(t,e=y0){return t[e]||""}function VY(t,e,n=y0){return t[n]=e,t}function ns(t,e=y0){let n="";return typeof t.bindings>"u"?n=jY(t,e):n=t.bindings().context||"",n}function WY(t,e,n=y0){const r=ns(t,n);return r.trim()?`${r}/${e}`:e}function Ti(t,e,n=y0){const r=WY(t,e,n),i=t.child({context:r});return VY(i,r,n)}function GY(t){var e,n;const r=new LY((e=t.opts)==null?void 0:e.level,t.maxSizeInBytes);return{logger:m0(Yv(Xv({},t.opts),{level:"trace",browser:Yv(Xv({},(n=t.opts)==null?void 0:n.browser),{write:i=>r.write(i)})})),chunkLoggerController:r}}function qY(t){var e;const n=new kY((e=t.opts)==null?void 0:e.level,t.maxSizeInBytes);return{logger:m0(Yv(Xv({},t.opts),{level:"trace"}),n),chunkLoggerController:n}}function Q$(t){return typeof t.loggerOverride<"u"&&typeof t.loggerOverride!="string"?{logger:t.loggerOverride,chunkLoggerController:null}:typeof window<"u"?GY(t):qY(t)}var KY=Object.defineProperty,XY=(t,e,n)=>e in t?KY(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,mP=(t,e,n)=>XY(t,typeof e!="symbol"?e+"":e,n);let YY=class extends Ed{constructor(e){super(),this.opts=e,mP(this,"protocol","wc"),mP(this,"version",2)}};var ZY=Object.defineProperty,JY=(t,e,n)=>e in t?ZY(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,QY=(t,e,n)=>JY(t,e+"",n);let eZ=class extends Ed{constructor(e,n){super(),this.core=e,this.logger=n,QY(this,"records",new Map)}},tZ=class{constructor(e,n){this.logger=e,this.core=n}},nZ=class extends Ed{constructor(e,n){super(),this.relayer=e,this.logger=n}},rZ=class extends Ed{constructor(e){super()}},iZ=class{constructor(e,n,r,i){this.core=e,this.logger=n,this.name=r}},sZ=class extends Ed{constructor(e,n){super(),this.relayer=e,this.logger=n}},oZ=class extends Ed{constructor(e,n){super(),this.core=e,this.logger=n}},aZ=class{constructor(e,n,r){this.core=e,this.logger=n,this.store=r}},cZ=class{constructor(e,n){this.projectId=e,this.logger=n}},lZ=class{constructor(e,n,r){this.core=e,this.logger=n,this.telemetryEnabled=r}};var uZ=Object.defineProperty,dZ=(t,e,n)=>e in t?uZ(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,yP=(t,e,n)=>dZ(t,typeof e!="symbol"?e+"":e,n);let hZ=class{constructor(e){this.opts=e,yP(this,"protocol","wc"),yP(this,"version",2)}},fZ=class{constructor(e){this.client=e}};function pZ(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function eB(t,...e){if(!pZ(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function wP(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function gZ(t,e){eB(t);const n=e.outputLen;if(t.lengthnew DataView(t.buffer,t.byteOffset,t.byteLength);function mZ(t){if(typeof t!="string")throw new Error("utf8ToBytes expected string, got "+typeof t);return new Uint8Array(new TextEncoder().encode(t))}function tB(t){return typeof t=="string"&&(t=mZ(t)),eB(t),t}let yZ=class{clone(){return this._cloneInto()}};function wZ(t){const e=r=>t().update(tB(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function nB(t=32){if($d&&typeof $d.getRandomValues=="function")return $d.getRandomValues(new Uint8Array(t));if($d&&typeof $d.randomBytes=="function")return $d.randomBytes(t);throw new Error("crypto.getRandomValues must be defined")}function vZ(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const i=BigInt(32),s=BigInt(4294967295),o=Number(n>>i&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}let bZ=class extends yZ{constructor(e,n,r,i){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=CE(this.buffer)}update(e){wP(this);const{view:n,buffer:r,blockLen:i}=this;e=tB(e);const s=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let d=o;du.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d>Cx&wy)}:{h:Number(t>>Cx&wy)|0,l:Number(t&wy)|0}}function EZ(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let i=0;iBigInt(t>>>0)<>>0),SZ=(t,e,n)=>t>>>n,xZ=(t,e,n)=>t<<32-n|e>>>n,AZ=(t,e,n)=>t>>>n|e<<32-n,CZ=(t,e,n)=>t<<32-n|e>>>n,TZ=(t,e,n)=>t<<64-n|e>>>n-32,IZ=(t,e,n)=>t>>>n-32|e<<64-n,MZ=(t,e)=>e,NZ=(t,e)=>t,PZ=(t,e,n)=>t<>>32-n,DZ=(t,e,n)=>e<>>32-n,RZ=(t,e,n)=>e<>>64-n,OZ=(t,e,n)=>t<>>64-n;function UZ(t,e,n,r){const i=(e>>>0)+(r>>>0);return{h:t+n+(i/2**32|0)|0,l:i|0}}const LZ=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),kZ=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,$Z=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),BZ=(t,e,n,r,i)=>e+n+r+i+(t/2**32|0)|0,FZ=(t,e,n,r,i)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(i>>>0),zZ=(t,e,n,r,i,s)=>e+n+r+i+s+(t/2**32|0)|0,Mt={fromBig:rB,split:EZ,toBig:_Z,shrSH:SZ,shrSL:xZ,rotrSH:AZ,rotrSL:CZ,rotrBH:TZ,rotrBL:IZ,rotr32H:MZ,rotr32L:NZ,rotlSH:PZ,rotlSL:DZ,rotlBH:RZ,rotlBL:OZ,add:UZ,add3L:LZ,add3H:kZ,add4L:$Z,add4H:BZ,add5H:zZ,add5L:FZ},[HZ,jZ]=Mt.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),Nc=new Uint32Array(80),Pc=new Uint32Array(80);let VZ=class extends bZ{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:e,Al:n,Bh:r,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:h,Gh:f,Gl:g,Hh:m,Hl:y}=this;return[e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y]}set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=h|0,this.Gh=f|0,this.Gl=g|0,this.Hh=m|0,this.Hl=y|0}process(e,n){for(let w=0;w<16;w++,n+=4)Nc[w]=e.getUint32(n),Pc[w]=e.getUint32(n+=4);for(let w=16;w<80;w++){const b=Nc[w-15]|0,S=Pc[w-15]|0,x=Mt.rotrSH(b,S,1)^Mt.rotrSH(b,S,8)^Mt.shrSH(b,S,7),T=Mt.rotrSL(b,S,1)^Mt.rotrSL(b,S,8)^Mt.shrSL(b,S,7),N=Nc[w-2]|0,_=Pc[w-2]|0,E=Mt.rotrSH(N,_,19)^Mt.rotrBH(N,_,61)^Mt.shrSH(N,_,6),A=Mt.rotrSL(N,_,19)^Mt.rotrBL(N,_,61)^Mt.shrSL(N,_,6),L=Mt.add4L(T,A,Pc[w-7],Pc[w-16]),$=Mt.add4H(L,x,E,Nc[w-7],Nc[w-16]);Nc[w]=$|0,Pc[w]=L|0}let{Ah:r,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:h,Fh:f,Fl:g,Gh:m,Gl:y,Hh:p,Hl:v}=this;for(let w=0;w<80;w++){const b=Mt.rotrSH(d,h,14)^Mt.rotrSH(d,h,18)^Mt.rotrBH(d,h,41),S=Mt.rotrSL(d,h,14)^Mt.rotrSL(d,h,18)^Mt.rotrBL(d,h,41),x=d&f^~d&m,T=h&g^~h&y,N=Mt.add5L(v,S,T,jZ[w],Pc[w]),_=Mt.add5H(N,p,b,x,HZ[w],Nc[w]),E=N|0,A=Mt.rotrSH(r,i,28)^Mt.rotrBH(r,i,34)^Mt.rotrBH(r,i,39),L=Mt.rotrSL(r,i,28)^Mt.rotrBL(r,i,34)^Mt.rotrBL(r,i,39),$=r&s^r&a^s&a,W=i&o^i&c^o&c;p=m|0,v=y|0,m=f|0,y=g|0,f=d|0,g=h|0,{h:d,l:h}=Mt.add(l|0,u|0,_|0,E|0),l=a|0,u=c|0,a=s|0,c=o|0,s=r|0,o=i|0;const C=Mt.add3L(E,L,W);r=Mt.add3H(C,_,A,$),i=C|0}({h:r,l:i}=Mt.add(this.Ah|0,this.Al|0,r|0,i|0)),{h:s,l:o}=Mt.add(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=Mt.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Mt.add(this.Dh|0,this.Dl|0,l|0,u|0),{h:d,l:h}=Mt.add(this.Eh|0,this.El|0,d|0,h|0),{h:f,l:g}=Mt.add(this.Fh|0,this.Fl|0,f|0,g|0),{h:m,l:y}=Mt.add(this.Gh|0,this.Gl|0,m|0,y|0),{h:p,l:v}=Mt.add(this.Hh|0,this.Hl|0,p|0,v|0),this.set(r,i,s,o,a,c,l,u,d,h,f,g,m,y,p,v)}roundClean(){Nc.fill(0),Pc.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};const WZ=wZ(()=>new VZ);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const tT=BigInt(0),iB=BigInt(1),GZ=BigInt(2);function nT(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function rT(t){if(!nT(t))throw new Error("Uint8Array expected")}function TE(t,e){if(typeof e!="boolean")throw new Error(t+" boolean expected, got "+e)}const qZ=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function iT(t){rT(t);let e="";for(let n=0;n=Na._0&&t<=Na._9)return t-Na._0;if(t>=Na.A&&t<=Na.F)return t-(Na.A-10);if(t>=Na.a&&t<=Na.f)return t-(Na.a-10)}function oB(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let i=0,s=0;itypeof t=="bigint"&&tT<=t;function XZ(t,e,n){return IE(t)&&IE(e)&&IE(n)&&e<=t&&ttT;t>>=iB,e+=1);return e}const ZZ=t=>(GZ<typeof t=="bigint",function:t=>typeof t=="function",boolean:t=>typeof t=="boolean",string:t=>typeof t=="string",stringOrUint8Array:t=>typeof t=="string"||nT(t),isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t=="function"&&Number.isSafeInteger(t.outputLen)};function sT(t,e,n={}){const r=(i,s,o)=>{const a=JZ[s];if(typeof a!="function")throw new Error("invalid validator function");const c=t[i];if(!(o&&c===void 0)&&!a(c,t))throw new Error("param "+String(i)+" is invalid. Expected "+s+", got "+c)};for(const[i,s]of Object.entries(e))r(i,s,!1);for(const[i,s]of Object.entries(n))r(i,s,!0);return t}function EP(t){const e=new WeakMap;return(n,...r)=>{const i=e.get(n);if(i!==void 0)return i;const s=t(n,...r);return e.set(n,s),s}}const Ir=BigInt(0),nr=BigInt(1),xu=BigInt(2),QZ=BigInt(3),Ix=BigInt(4),_P=BigInt(5),SP=BigInt(8);function yr(t,e){const n=t%e;return n>=Ir?n:e+n}function eJ(t,e,n){if(eIr;)e&nr&&(r=r*t%n),t=t*t%n,e>>=nr;return r}function Yo(t,e,n){let r=t;for(;e-- >Ir;)r*=r,r%=n;return r}function xP(t,e){if(t===Ir)throw new Error("invert: expected non-zero number");if(e<=Ir)throw new Error("invert: expected positive modulus, got "+e);let n=yr(t,e),r=e,i=Ir,s=nr;for(;n!==Ir;){const o=r/n,a=r%n,c=i-s*o;r=n,n=a,i=s,s=c}if(r!==nr)throw new Error("invert: does not exist");return yr(i,e)}function tJ(t){const e=(t-nr)/xu;let n,r,i;for(n=t-nr,r=0;n%xu===Ir;n/=xu,r++);for(i=xu;i1e3)throw new Error("Cannot find square root: likely non-prime P");if(r===1){const o=(t+nr)/Ix;return function(a,c){const l=a.pow(c,o);if(!a.eql(a.sqr(l),c))throw new Error("Cannot find square root");return l}}const s=(n+nr)/xu;return function(o,a){if(o.pow(a,e)===o.neg(o.ONE))throw new Error("Cannot find square root");let c=r,l=o.pow(o.mul(o.ONE,i),n),u=o.pow(a,s),d=o.pow(a,n);for(;!o.eql(d,o.ONE);){if(o.eql(d,o.ZERO))return o.ZERO;let h=1;for(let g=o.sqr(d);h(yr(t,e)&nr)===nr,iJ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function sJ(t){const e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},n=iJ.reduce((r,i)=>(r[i]="function",r),e);return sT(t,n)}function oJ(t,e,n){if(nIr;)n&nr&&(r=t.mul(r,i)),i=t.sqr(i),n>>=nr;return r}function aJ(t,e){const n=new Array(e.length),r=e.reduce((s,o,a)=>t.is0(o)?s:(n[a]=s,t.mul(s,o)),t.ONE),i=t.inv(r);return e.reduceRight((s,o,a)=>t.is0(o)?s:(n[a]=t.mul(s,n[a]),t.mul(s,o)),i),n}function cB(t,e){const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function lB(t,e,n=!1,r={}){if(t<=Ir)throw new Error("invalid field: expected ORDER > 0, got "+t);const{nBitLength:i,nByteLength:s}=cB(t,e);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let o;const a=Object.freeze({ORDER:t,isLE:n,BITS:i,BYTES:s,MASK:ZZ(i),ZERO:Ir,ONE:nr,create:c=>yr(c,t),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return Ir<=c&&cc===Ir,isOdd:c=>(c&nr)===nr,neg:c=>yr(-c,t),eql:(c,l)=>c===l,sqr:c=>yr(c*c,t),add:(c,l)=>yr(c+l,t),sub:(c,l)=>yr(c-l,t),mul:(c,l)=>yr(c*l,t),pow:(c,l)=>oJ(a,c,l),div:(c,l)=>yr(c*xP(l,t),t),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>xP(c,t),sqrt:r.sqrt||(c=>(o||(o=nJ(t)),o(a,c))),invertBatch:c=>aJ(a,c),cmov:(c,l,u)=>u?l:c,toBytes:c=>n?Tx(c,s):aB(c,s),fromBytes:c=>{if(c.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+c.length);return n?Bw(c):KZ(c)}});return Object.freeze(a)}const AP=BigInt(0),vy=BigInt(1);function ME(t,e){const n=e.negate();return t?n:e}function uB(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function NE(t,e){uB(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1);return{windows:n,windowSize:r}}function cJ(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function lJ(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const PE=new WeakMap,dB=new WeakMap;function DE(t){return dB.get(t)||1}function uJ(t,e){return{constTimeNegate:ME,hasPrecomputes(n){return DE(n)!==1},unsafeLadder(n,r,i=t.ZERO){let s=n;for(;r>AP;)r&vy&&(i=i.add(s)),s=s.double(),r>>=vy;return i},precomputeWindow(n,r){const{windows:i,windowSize:s}=NE(r,e),o=[];let a=n,c=a;for(let l=0;l>=d,g>o&&(g-=u,i+=vy);const m=f,y=f+Math.abs(g)-1,p=h%2!==0,v=g<0;g===0?c=c.add(ME(p,r[m])):a=a.add(ME(v,r[y]))}return{p:a,f:c}},wNAFUnsafe(n,r,i,s=t.ZERO){const{windows:o,windowSize:a}=NE(n,e),c=BigInt(2**n-1),l=2**n,u=BigInt(n);for(let d=0;d>=u,f>a&&(f-=l,i+=vy),f===0)continue;let g=r[h+Math.abs(f)-1];f<0&&(g=g.negate()),s=s.add(g)}return s},getPrecomputes(n,r,i){let s=PE.get(r);return s||(s=this.precomputeWindow(r,n),n!==1&&PE.set(r,i(s))),s},wNAFCached(n,r,i){const s=DE(n);return this.wNAF(s,this.getPrecomputes(s,n,i),r)},wNAFCachedUnsafe(n,r,i,s){const o=DE(n);return o===1?this.unsafeLadder(n,r,s):this.wNAFUnsafe(o,this.getPrecomputes(o,n,i),r,s)},setWindowSize(n,r){uB(r,e),dB.set(n,r),PE.delete(n)}}}function dJ(t,e,n,r){if(cJ(n,t),lJ(r,e),n.length!==r.length)throw new Error("arrays of points and scalars must have equal length");const i=t.ZERO,s=YZ(BigInt(n.length)),o=s>12?s-3:s>4?s-2:s?2:1,a=(1<=0;d-=o){c.fill(i);for(let f=0;f>BigInt(d)&BigInt(a));c[m]=c[m].add(n[f])}let h=i;for(let f=c.length-1,g=i;f>0;f--)g=g.add(c[f]),h=h.add(g);if(u=u.add(h),d!==0)for(let f=0;f{try{return{isValid:!0,value:n.sqrt(C*n.inv(I))}}catch{return{isValid:!1,value:yo}}}),f=e.adjustScalarBytes||(C=>C),g=e.domain||((C,I,F)=>{if(TE("phflag",F),I.length||F)throw new Error("Contexts/pre-hash are not supported");return C});function m(C,I){Cp("coordinate "+C,I,yo,l)}function y(C){if(!(C instanceof w))throw new Error("ExtendedPoint expected")}const p=EP((C,I)=>{const{ex:F,ey:D,ez:k}=C,R=C.is0();I==null&&(I=R?fJ:n.inv(k));const q=u(F*I),ne=u(D*I),X=u(k*I);if(R)return{x:yo,y:Pi};if(X!==Pi)throw new Error("invZ was invalid");return{x:q,y:ne}}),v=EP(C=>{const{a:I,d:F}=e;if(C.is0())throw new Error("bad point: ZERO");const{ex:D,ey:k,ez:R,et:q}=C,ne=u(D*D),X=u(k*k),G=u(R*R),te=u(G*G),le=u(ne*I),ge=u(G*u(le+X)),Ce=u(te+u(F*u(ne*X)));if(ge!==Ce)throw new Error("bad point: equation left != right (1)");const xe=u(D*k),je=u(R*q);if(xe!==je)throw new Error("bad point: equation left != right (2)");return!0});class w{constructor(I,F,D,k){this.ex=I,this.ey=F,this.ez=D,this.et=k,m("x",I),m("y",F),m("z",D),m("t",k),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(I){if(I instanceof w)throw new Error("extended point not allowed");const{x:F,y:D}=I||{};return m("x",F),m("y",D),new w(F,D,Pi,u(F*D))}static normalizeZ(I){const F=n.invertBatch(I.map(D=>D.ez));return I.map((D,k)=>D.toAffine(F[k])).map(w.fromAffine)}static msm(I,F){return dJ(w,d,I,F)}_setWindowSize(I){x.setWindowSize(this,I)}assertValidity(){v(this)}equals(I){y(I);const{ex:F,ey:D,ez:k}=this,{ex:R,ey:q,ez:ne}=I,X=u(F*ne),G=u(R*k),te=u(D*ne),le=u(q*k);return X===G&&te===le}is0(){return this.equals(w.ZERO)}negate(){return new w(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){const{a:I}=e,{ex:F,ey:D,ez:k}=this,R=u(F*F),q=u(D*D),ne=u(by*u(k*k)),X=u(I*R),G=F+D,te=u(u(G*G)-R-q),le=X+q,ge=le-ne,Ce=X-q,xe=u(te*ge),je=u(le*Ce),ht=u(te*Ce),vt=u(ge*le);return new w(xe,je,vt,ht)}add(I){y(I);const{a:F,d:D}=e,{ex:k,ey:R,ez:q,et:ne}=this,{ex:X,ey:G,ez:te,et:le}=I;if(F===BigInt(-1)){const Jt=u((R-k)*(G+X)),Ye=u((R+k)*(G-X)),z=u(Ye-Jt);if(z===yo)return this.double();const P=u(q*by*le),re=u(ne*by*te),de=re+P,ye=Ye+Jt,he=re-P,Ke=u(de*z),Re=u(ye*he),ze=u(de*he),Dt=u(z*ye);return new w(Ke,Re,Dt,ze)}const ge=u(k*X),Ce=u(R*G),xe=u(ne*D*le),je=u(q*te),ht=u((k+R)*(X+G)-ge-Ce),vt=je-xe,Ut=je+xe,Z=u(Ce-F*ge),Yn=u(ht*vt),gt=u(Ut*Z),St=u(ht*Z),at=u(vt*Ut);return new w(Yn,gt,at,St)}subtract(I){return this.add(I.negate())}wNAF(I){return x.wNAFCached(this,I,w.normalizeZ)}multiply(I){const F=I;Cp("scalar",F,Pi,r);const{p:D,f:k}=this.wNAF(F);return w.normalizeZ([D,k])[0]}multiplyUnsafe(I,F=w.ZERO){const D=I;return Cp("scalar",D,yo,r),D===yo?S:this.is0()||D===Pi?this:x.wNAFCachedUnsafe(this,D,w.normalizeZ,F)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return x.unsafeLadder(this,r).is0()}toAffine(I){return p(this,I)}clearCofactor(){const{h:I}=e;return I===Pi?this:this.multiplyUnsafe(I)}static fromHex(I,F=!1){const{d:D,a:k}=e,R=n.BYTES;I=Pa("pointHex",I,R),TE("zip215",F);const q=I.slice(),ne=I[R-1];q[R-1]=ne&-129;const X=Bw(q),G=F?l:n.ORDER;Cp("pointHex.y",X,yo,G);const te=u(X*X),le=u(te-Pi),ge=u(D*te-k);let{isValid:Ce,value:xe}=h(le,ge);if(!Ce)throw new Error("Point.fromHex: invalid y coordinate");const je=(xe&Pi)===Pi,ht=(ne&128)!==0;if(!F&&xe===yo&&ht)throw new Error("Point.fromHex: x=0 and x_0=1");return ht!==je&&(xe=u(-xe)),w.fromAffine({x:xe,y:X})}static fromPrivateKey(I){return _(I).point}toRawBytes(){const{x:I,y:F}=this.toAffine(),D=Tx(F,n.BYTES);return D[D.length-1]|=I&Pi?128:0,D}toHex(){return iT(this.toRawBytes())}}w.BASE=new w(e.Gx,e.Gy,Pi,u(e.Gx*e.Gy)),w.ZERO=new w(yo,Pi,Pi,yo);const{BASE:b,ZERO:S}=w,x=uJ(w,a*8);function T(C){return yr(C,r)}function N(C){return T(Bw(C))}function _(C){const I=n.BYTES;C=Pa("private key",C,I);const F=Pa("hashed private key",s(C),2*I),D=f(F.slice(0,I)),k=F.slice(I,2*I),R=N(D),q=b.multiply(R),ne=q.toRawBytes();return{head:D,prefix:k,scalar:R,point:q,pointBytes:ne}}function E(C){return _(C).pointBytes}function A(C=new Uint8Array,...I){const F=bP(...I);return N(s(g(F,Pa("context",C),!!i)))}function L(C,I,F={}){C=Pa("message",C),i&&(C=i(C));const{prefix:D,scalar:k,pointBytes:R}=_(I),q=A(F.context,D,C),ne=b.multiply(q).toRawBytes(),X=A(F.context,ne,R,C),G=T(q+X*k);Cp("signature.s",G,yo,r);const te=bP(ne,Tx(G,n.BYTES));return Pa("result",te,n.BYTES*2)}const $=pJ;function W(C,I,F,D=$){const{context:k,zip215:R}=D,q=n.BYTES;C=Pa("signature",C,2*q),I=Pa("message",I),F=Pa("publicKey",F,q),R!==void 0&&TE("zip215",R),i&&(I=i(I));const ne=Bw(C.slice(q,2*q));let X,G,te;try{X=w.fromHex(F,R),G=w.fromHex(C.slice(0,q),R),te=b.multiplyUnsafe(ne)}catch{return!1}if(!R&&X.isSmallOrder())return!1;const le=A(k,G.toRawBytes(),X.toRawBytes(),I);return G.add(X.multiplyUnsafe(le)).subtract(te).clearCofactor().equals(w.ZERO)}return b._setWindowSize(8),{CURVE:e,getPublicKey:E,sign:L,verify:W,ExtendedPoint:w,utils:{getExtendedPublicKey:_,randomPrivateKey:()=>o(n.BYTES),precompute(C=8,I=w.BASE){return I._setWindowSize(C),I.multiply(BigInt(3)),I}}}}BigInt(0),BigInt(1);const oT=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),CP=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");BigInt(0);const yJ=BigInt(1),TP=BigInt(2);BigInt(3);const wJ=BigInt(5),vJ=BigInt(8);function bJ(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),i=BigInt(80),s=oT,o=t*t%s*t%s,a=Yo(o,TP,s)*o%s,c=Yo(a,yJ,s)*t%s,l=Yo(c,wJ,s)*c%s,u=Yo(l,e,s)*l%s,d=Yo(u,n,s)*u%s,h=Yo(d,r,s)*d%s,f=Yo(h,i,s)*h%s,g=Yo(f,i,s)*h%s,m=Yo(g,e,s)*l%s;return{pow_p_5_8:Yo(m,TP,s)*t%s,b2:o}}function EJ(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}function _J(t,e){const n=oT,r=yr(e*e*e,n),i=yr(r*r*e,n),s=bJ(t*i).pow_p_5_8;let o=yr(t*r*s,n);const a=yr(e*o*o,n),c=o,l=yr(o*CP,n),u=a===t,d=a===yr(-t,n),h=a===yr(-t*CP,n);return u&&(o=c),(d||h)&&(o=l),rJ(o,n)&&(o=yr(-o,n)),{isValid:u||d,value:o}}const SJ=lB(oT,void 0,!0),xJ={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:SJ,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:vJ,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:WZ,randomBytes:nB,adjustScalarBytes:EJ,uvRatio:_J},hB=mJ(xJ),AJ="EdDSA",CJ="JWT",Zv=".",e1="base64url",fB="utf8",pB="utf8",TJ=":",IJ="did",MJ="key",IP="base58btc",NJ="z",PJ="K36",DJ=32;function aT(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function gB(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?aT(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function mB(t,e){e||(e=t.reduce((i,s)=>i+s.length,0));const n=gB(e);let r=0;for(const i of t)n.set(i,r),r+=i.length;return aT(n)}function RJ(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r>>0,b=new Uint8Array(w);p!==v;){for(var S=g[p],x=0,T=w-1;(S!==0||x>>0,b[T]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");y=x,p++}for(var N=w-y;N!==w&&b[N]===0;)N++;for(var _=c.repeat(m);N>>0,w=new Uint8Array(v);g[m];){var b=n[g.charCodeAt(m)];if(b===255)return;for(var S=0,x=v-1;(b!==0||S>>0,w[x]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");p=S,m++}if(g[m]!==" "){for(var T=v-p;T!==v&&w[T]===0;)T++;for(var N=new Uint8Array(y+(v-T)),_=y;T!==v;)N[_++]=w[T++];return N}}}function f(g){var m=h(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:f}}var OJ=RJ,UJ=OJ;const yB=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},LJ=t=>new TextEncoder().encode(t),kJ=t=>new TextDecoder().decode(t);let $J=class{constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},BJ=class{constructor(e,n,r){if(this.name=e,this.prefix=n,n.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=n.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return wB(this,e)}},FJ=class{constructor(e){this.decoders=e}or(e){return wB(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};const wB=(t,e)=>new FJ({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});let zJ=class{constructor(e,n,r,i){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=i,this.encoder=new $J(e,n,r),this.decoder=new BJ(e,n,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};const t1=({name:t,prefix:e,encode:n,decode:r})=>new zJ(t,e,n,r),v0=({prefix:t,name:e,alphabet:n})=>{const{encode:r,decode:i}=UJ(n,e);return t1({prefix:t,name:e,encode:r,decode:s=>yB(i(s))})},HJ=(t,e,n,r)=>{const i={};for(let u=0;u=8&&(a-=8,o[l++]=255&c>>a)}if(a>=n||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},jJ=(t,e,n)=>{const r=e[e.length-1]==="=",i=(1<n;)o-=n,s+=e[i&a>>o];if(o&&(s+=e[i&a<t1({prefix:e,name:t,encode(i){return jJ(i,r,n)},decode(i){return HJ(i,r,n,t)}}),VJ=t1({prefix:"\0",name:"identity",encode:t=>kJ(t),decode:t=>LJ(t)});var WJ=Object.freeze({__proto__:null,identity:VJ});const GJ=Wr({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var qJ=Object.freeze({__proto__:null,base2:GJ});const KJ=Wr({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var XJ=Object.freeze({__proto__:null,base8:KJ});const YJ=v0({prefix:"9",name:"base10",alphabet:"0123456789"});var ZJ=Object.freeze({__proto__:null,base10:YJ});const JJ=Wr({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),QJ=Wr({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var eQ=Object.freeze({__proto__:null,base16:JJ,base16upper:QJ});const tQ=Wr({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),nQ=Wr({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),rQ=Wr({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),iQ=Wr({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),sQ=Wr({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),oQ=Wr({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),aQ=Wr({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),cQ=Wr({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),lQ=Wr({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var uQ=Object.freeze({__proto__:null,base32:tQ,base32upper:nQ,base32pad:rQ,base32padupper:iQ,base32hex:sQ,base32hexupper:oQ,base32hexpad:aQ,base32hexpadupper:cQ,base32z:lQ});const dQ=v0({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),hQ=v0({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var fQ=Object.freeze({__proto__:null,base36:dQ,base36upper:hQ});const pQ=v0({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),gQ=v0({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var mQ=Object.freeze({__proto__:null,base58btc:pQ,base58flickr:gQ});const yQ=Wr({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),wQ=Wr({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),vQ=Wr({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),bQ=Wr({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var EQ=Object.freeze({__proto__:null,base64:yQ,base64pad:wQ,base64url:vQ,base64urlpad:bQ});const vB=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),_Q=vB.reduce((t,e,n)=>(t[n]=e,t),[]),SQ=vB.reduce((t,e,n)=>(t[e.codePointAt(0)]=n,t),[]);function xQ(t){return t.reduce((e,n)=>(e+=_Q[n],e),"")}function AQ(t){const e=[];for(const n of t){const r=SQ[n.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${n}`);e.push(r)}return new Uint8Array(e)}const CQ=t1({prefix:"🚀",name:"base256emoji",encode:xQ,decode:AQ});var TQ=Object.freeze({__proto__:null,base256emoji:CQ}),IQ=bB,MP=128,MQ=-128,NQ=Math.pow(2,31);function bB(t,e,n){e=e||[],n=n||0;for(var r=n;t>=NQ;)e[n++]=t&255|MP,t/=128;for(;t&MQ;)e[n++]=t&255|MP,t>>>=7;return e[n]=t|0,bB.bytes=n-r+1,e}var PQ=Mx,DQ=128,NP=127;function Mx(t,r){var n=0,r=r||0,i=0,s=r,o,a=t.length;do{if(s>=a)throw Mx.bytes=0,new RangeError("Could not decode varint");o=t[s++],n+=i<28?(o&NP)<=DQ);return Mx.bytes=s-r,n}var RQ=Math.pow(2,7),OQ=Math.pow(2,14),UQ=Math.pow(2,21),LQ=Math.pow(2,28),kQ=Math.pow(2,35),$Q=Math.pow(2,42),BQ=Math.pow(2,49),FQ=Math.pow(2,56),zQ=Math.pow(2,63),HQ=function(t){return t(EB.encode(t,e,n),e),DP=t=>EB.encodingLength(t),Nx=(t,e)=>{const n=e.byteLength,r=DP(t),i=r+DP(n),s=new Uint8Array(i+n);return PP(t,s,0),PP(n,s,r),s.set(e,i),new VQ(t,n,e,s)};let VQ=class{constructor(e,n,r,i){this.code=e,this.size=n,this.digest=r,this.bytes=i}};const _B=({name:t,code:e,encode:n})=>new WQ(t,e,n);let WQ=class{constructor(e,n,r){this.name=e,this.code=n,this.encode=r}digest(e){if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?Nx(this.code,n):n.then(r=>Nx(this.code,r))}else throw Error("Unknown type, must be binary type")}};const SB=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),GQ=_B({name:"sha2-256",code:18,encode:SB("SHA-256")}),qQ=_B({name:"sha2-512",code:19,encode:SB("SHA-512")});var KQ=Object.freeze({__proto__:null,sha256:GQ,sha512:qQ});const xB=0,XQ="identity",AB=yB,YQ=t=>Nx(xB,AB(t)),ZQ={code:xB,name:XQ,encode:AB,digest:YQ};var JQ=Object.freeze({__proto__:null,identity:ZQ});new TextEncoder,new TextDecoder;const RP={...WJ,...qJ,...XJ,...ZJ,...eQ,...uQ,...fQ,...mQ,...EQ,...TQ};({...KQ,...JQ});function CB(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const OP=CB("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),RE=CB("ascii","a",t=>{let e="a";for(let n=0;n{t=t.substring(1);const e=gB(t.length);for(let n=0;n"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new cee:typeof navigator<"u"?pee(navigator.userAgent):mee()}function fee(t){return t!==""&&dee.reduce(function(e,n){var r=n[0],i=n[1];if(e)return e;var s=i.exec(t);return!!s&&[r,s]},!1)}function pee(t){var e=fee(t);if(!e)return null;var n=e[0],r=e[1];if(n==="searchbot")return new aee;var i=r[1]&&r[1].split(".").join("_").split("_").slice(0,3);i?i.length<$P&&(i=kP(kP([],i,!0),yee($P-i.length),!0)):i=[];var s=i.join("."),o=gee(t),a=uee.exec(t);return a&&a[1]?new oee(n,s,o,a[1]):new iee(n,s,o)}function gee(t){for(var e=0,n=BP.length;e-1){const y=g.getAttribute("href");if(y)if(y.toLowerCase().indexOf("https:")===-1&&y.toLowerCase().indexOf("http:")===-1&&y.indexOf("//")!==0){let p=e.protocol+"//"+e.host;if(y.indexOf("/")===0)p+=y;else{const v=e.pathname.split("/");v.pop();const w=v.join("/");p+=w+"/"+y}h.push(p)}else if(y.indexOf("//")===0){const p=e.protocol+y;h.push(p)}else h.push(y)}}return h}function r(...d){const h=t.getElementsByTagName("meta");for(let f=0;fg.getAttribute(y)).filter(y=>y?d.includes(y):!1);if(m.length&&m){const y=g.getAttribute("content");if(y)return y}}return""}function i(){let d=r("name","og:site_name","og:title","twitter:title");return d||(d=t.title),d}function s(){return r("description","og:description","twitter:description","keywords")}const o=i(),a=s(),c=e.origin,l=n();return{description:a,url:c,icons:l,name:o}}NB=lT.getWindowMetadata=Iee;function Em(t,{strict:e=!0}={}){return!t||typeof t!="string"?!1:e?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x")}function Dx(t){return Em(t,{strict:!1})?Math.ceil((t.length-2)/2):t.length}const PB="2.31.0";let Tp={getDocsUrl:({docsBaseUrl:t,docsPath:e="",docsSlug:n})=>e?`${t??"https://viem.sh"}${e}${n?`#${n}`:""}`:void 0,version:`viem@${PB}`},r1=class Rx extends Error{constructor(e,n={}){var a;const r=(()=>{var c;return n.cause instanceof Rx?n.cause.details:(c=n.cause)!=null&&c.message?n.cause.message:n.details})(),i=n.cause instanceof Rx&&n.cause.docsPath||n.docsPath,s=(a=Tp.getDocsUrl)==null?void 0:a.call(Tp,{...n,docsPath:i}),o=[e||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...s?[`Docs: ${s}`]:[],...r?[`Details: ${r}`]:[],...Tp.version?[`Version: ${Tp.version}`]:[]].join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=e,this.version=PB}walk(e){return DB(this,e)}};function DB(t,e){return e!=null&&e(t)?t:t&&typeof t=="object"&&"cause"in t&&t.cause!==void 0?DB(t.cause,e):e?null:t}let RB=class extends r1{constructor({size:e,targetSize:n,type:r}){super(`${r.charAt(0).toUpperCase()}${r.slice(1).toLowerCase()} size (${e}) exceeds padding size (${n}).`,{name:"SizeExceedsPaddingSizeError"})}};function rp(t,{dir:e,size:n=32}={}){return typeof t=="string"?Mee(t,{dir:e,size:n}):Nee(t,{dir:e,size:n})}function Mee(t,{dir:e,size:n=32}={}){if(n===null)return t;const r=t.replace("0x","");if(r.length>n*2)throw new RB({size:Math.ceil(r.length/2),targetSize:n,type:"hex"});return`0x${r[e==="right"?"padEnd":"padStart"](n*2,"0")}`}function Nee(t,{dir:e,size:n=32}={}){if(n===null)return t;if(t.length>n)throw new RB({size:t.length,targetSize:n,type:"bytes"});const r=new Uint8Array(n);for(let i=0;ie)throw new Dee({givenSize:Dx(t),maxSize:e})}function Ox(t,e={}){const{signed:n}=e;e.size&&ip(t,{size:e.size});const r=BigInt(t);if(!n)return r;const i=(t.length-2)/2,s=(1n<e.toString(16).padStart(2,"0"));function Ux(t,e={}){return typeof t=="number"||typeof t=="bigint"?UB(t,e):typeof t=="string"?kee(t,e):typeof t=="boolean"?Uee(t,e):OB(t,e)}function Uee(t,e={}){const n=`0x${Number(t)}`;return typeof e.size=="number"?(ip(n,{size:e.size}),rp(n,{size:e.size})):n}function OB(t,e={}){let n="";for(let i=0;is||i=Da.zero&&t<=Da.nine)return t-Da.zero;if(t>=Da.A&&t<=Da.F)return t-(Da.A-10);if(t>=Da.a&&t<=Da.f)return t-(Da.a-10)}function LB(t,e={}){let n=t;e.size&&(ip(n,{size:e.size}),n=rp(n,{dir:"right",size:e.size}));let r=n.slice(2);r.length%2&&(r=`0${r}`);const i=r.length/2,s=new Uint8Array(i);for(let o=0,a=0;o>HP&Ey)}:{h:Number(t>>HP&Ey)|0,l:Number(t&Ey)|0}}function jee(t,e=!1){const n=t.length;let r=new Uint32Array(n),i=new Uint32Array(n);for(let s=0;st<>>32-n,Wee=(t,e,n)=>e<>>32-n,Gee=(t,e,n)=>e<>>64-n,qee=(t,e,n)=>t<>>64-n,Bd=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function Kee(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Qv(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function _m(t,...e){if(!Kee(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function sSe(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Qv(t.outputLen),Qv(t.blockLen)}function jP(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Xee(t,e){_m(t);const n=e.outputLen;if(t.length>>e}const Zee=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Jee(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function Qee(t){for(let e=0;et:Qee;function ete(t){if(typeof t!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(t))}function BB(t){return typeof t=="string"&&(t=ete(t)),_m(t),t}function cSe(...t){let e=0;for(let r=0;rt().update(BB(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function lSe(t=32){if(Bd&&typeof Bd.getRandomValues=="function")return Bd.getRandomValues(new Uint8Array(t));if(Bd&&typeof Bd.randomBytes=="function")return Uint8Array.from(Bd.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}const rte=BigInt(0),Ip=BigInt(1),ite=BigInt(2),ste=BigInt(7),ote=BigInt(256),ate=BigInt(113),FB=[],zB=[],HB=[];for(let t=0,e=Ip,n=1,r=0;t<24;t++){[n,r]=[r,(2*n+3*r)%5],FB.push(2*(5*r+n)),zB.push((t+1)*(t+2)/2%64);let i=rte;for(let s=0;s<7;s++)e=(e<>ste)*ate)%ote,e&ite&&(i^=Ip<<(Ip<n>32?Gee(t,e,n):Vee(t,e,n),GP=(t,e,n)=>n>32?qee(t,e,n):Wee(t,e,n);function ute(t,e=24){const n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)n[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=n[c],u=n[c+1],d=WP(l,u,1)^n[a],h=GP(l,u,1)^n[a+1];for(let f=0;f<50;f+=10)t[o+f]^=d,t[o+f+1]^=h}let i=t[2],s=t[3];for(let o=0;o<24;o++){const a=zB[o],c=WP(i,s,a),l=GP(i,s,a),u=FB[o];i=t[u],s=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)n[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~n[(a+2)%10]&n[(a+4)%10]}t[0]^=cte[r],t[1]^=lte[r]}$B(n)}class uT extends tte{constructor(e,n,r,i=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=n,this.outputLen=r,this.enableXOF=i,this.rounds=s,Qv(r),!(0=r&&this.keccak();const o=Math.min(r-this.posOut,s-i);e.set(n.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Qv(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Xee(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,$B(this.state)}_cloneInto(e){const{blockLen:n,suffix:r,outputLen:i,rounds:s,enableXOF:o}=this;return e||(e=new uT(n,r,i,o,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}}const dte=(t,e,n)=>nte(()=>new uT(e,t,n)),hte=dte(1,136,256/8);function VB(t,e){const n=e||"hex",r=hte(Em(t,{strict:!1})?Bee(t):t);return n==="bytes"?r:Ux(r)}let fte=class extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){const n=super.get(e);return super.has(e)&&n!==void 0&&(this.delete(e),super.set(e,n)),n}set(e,n){if(super.set(e,n),this.maxSize&&this.size>this.maxSize){const r=this.keys().next().value;r&&this.delete(r)}return this}};const OE=new fte(8192);function pte(t,e){if(OE.has(`${t}.${e}`))return OE.get(`${t}.${e}`);const n=t.substring(2).toLowerCase(),r=VB(kB(n),"bytes"),i=n.split("");for(let o=0;o<40;o+=2)r[o>>1]>>4>=8&&i[o]&&(i[o]=i[o].toUpperCase()),(r[o>>1]&15)>=8&&i[o+1]&&(i[o+1]=i[o+1].toUpperCase());const s=`0x${i.join("")}`;return OE.set(`${t}.${e}`,s),s}function gte(t){const e=VB(`0x${t.substring(4)}`).substring(26);return pte(`0x${e}`)}async function mte({hash:t,signature:e}){const n=Em(t)?t:Ux(t),{secp256k1:r}=await mm(async()=>{const{secp256k1:o}=await import("./secp256k1-BE_Tifw7.js");return{secp256k1:o}},[]);return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:l,s:u,v:d,yParity:h}=e,f=Number(h??d),g=qP(f);return new r.Signature(Ox(l),Ox(u)).addRecoveryBit(g)}const o=Em(e)?e:Ux(e);if(Dx(o)!==65)throw new Error("invalid signature length");const a=Ree(`0x${o.slice(130)}`),c=qP(a);return r.Signature.fromCompact(o.substring(2,130)).addRecoveryBit(c)})().recoverPublicKey(n.substring(2)).toHex(!1)}`}function qP(t){if(t===0||t===1)return t;if(t===27)return 0;if(t===28)return 1;throw new Error("Invalid yParityOrV value")}async function yte({hash:t,signature:e}){return gte(await mte({hash:t,signature:e}))}function wte(t){if(t.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let l=0;l>>0,m=new Uint8Array(g);for(;h!==f;){let v=l[h],w=0;for(let b=g-1;(v!==0||w>>0,m[b]=v%n>>>0,v=v/n>>>0;if(v!==0)throw new Error("Non-zero carry");d=w,h++}let y=g-d;for(;y!==g&&m[y]===0;)y++;let p=r.repeat(u);for(;y>>0,g=new Uint8Array(f);for(;u255)return;let w=e[v];if(w===255)return;let b=0;for(let S=f-1;(w!==0||b>>0,g[S]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");h=b,u++}let m=f-h;for(;m!==f&&g[m]===0;)m++;const y=new Uint8Array(d+(f-m));let p=d;for(;m!==f;)y[p++]=g[m++];return y}function c(l){const u=a(l);if(u)return u;throw new Error("Non-base"+n+" character")}return{encode:o,decodeUnsafe:a,decode:c}}var vte="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";const sp=wte(vte);function bte(t){const e=t.length;let n=0,r=0;for(;r=55296&&i<=56319&&r>6&31|192;else{if(o>=55296&&o<=56319&&s>18&7|240,e[i++]=o>>12&63|128,e[i++]=o>>6&63|128):(e[i++]=o>>12&15|224,e[i++]=o>>6&63|128)}else{e[i++]=o;continue}e[i++]=o&63|128}}const _te=new TextEncoder,Ste=50;function xte(t,e,n){_te.encodeInto(t,e.subarray(n))}function Ate(t,e,n){t.length>Ste?xte(t,e,n):Ete(t,e,n)}const Cte=4096;function WB(t,e,n){let r=e;const i=r+n,s=[];let o="";for(;r65535&&(d-=65536,s.push(d>>>10&1023|55296),d=56320|d&1023),s.push(d)}else s.push(a);s.length>=Cte&&(o+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(o+=String.fromCharCode(...s)),o}const Tte=new TextDecoder,Ite=200;function Mte(t,e,n){const r=t.subarray(e,e+n);return Tte.decode(r)}function Nte(t,e,n){return n>Ite?Mte(t,e,n):WB(t,e,n)}class _y{constructor(e,n){this.type=e,this.data=n}}class gs extends Error{constructor(e){super(e);const n=Object.create(gs.prototype);Object.setPrototypeOf(this,n),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:gs.name})}}const Mp=4294967295;function Pte(t,e,n){const r=n/4294967296,i=n;t.setUint32(e,r),t.setUint32(e+4,i)}function GB(t,e,n){const r=Math.floor(n/4294967296),i=n;t.setUint32(e,r),t.setUint32(e+4,i)}function qB(t,e){const n=t.getInt32(e),r=t.getUint32(e+4);return n*4294967296+r}function Dte(t,e){const n=t.getUint32(e),r=t.getUint32(e+4);return n*4294967296+r}const Rte=-1,Ote=4294967296-1,Ute=17179869184-1;function Lte({sec:t,nsec:e}){if(t>=0&&e>=0&&t<=Ute)if(e===0&&t<=Ote){const n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,t),n}else{const n=t/4294967296,r=t&4294967295,i=new Uint8Array(8),s=new DataView(i.buffer);return s.setUint32(0,e<<2|n&3),s.setUint32(4,r),i}else{const n=new Uint8Array(12),r=new DataView(n.buffer);return r.setUint32(0,e),GB(r,4,t),n}}function kte(t){const e=t.getTime(),n=Math.floor(e/1e3),r=(e-n*1e3)*1e6,i=Math.floor(r/1e9);return{sec:n+i,nsec:r-i*1e9}}function $te(t){if(t instanceof Date){const e=kte(t);return Lte(e)}else return null}function Bte(t){const e=new DataView(t.buffer,t.byteOffset,t.byteLength);switch(t.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{const n=e.getUint32(0),r=e.getUint32(4),i=(n&3)*4294967296+r,s=n>>>2;return{sec:i,nsec:s}}case 12:{const n=qB(e,4),r=e.getUint32(0);return{sec:n,nsec:r}}default:throw new gs(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${t.length}`)}}function Fte(t){const e=Bte(t);return new Date(e.sec*1e3+e.nsec/1e6)}const zte={type:Rte,encode:$te,decode:Fte};class eb{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(zte)}register({type:e,encode:n,decode:r}){if(e>=0)this.encoders[e]=n,this.decoders[e]=r;else{const i=-1-e;this.builtInEncoders[i]=n,this.builtInDecoders[i]=r}}tryToEncode(e,n){for(let r=0;rthis.maxDepth)throw new Error(`Too deep objects in depth ${n}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,n)}ensureBufferSizeToWrite(e){const n=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){const r=bte(e);this.ensureBufferSizeToWrite(5+r),this.writeStringHeader(r),Ate(e,this.bytes,this.pos),this.pos+=r}encodeObject(e,n){const r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,n);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,n);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){const n=e.byteLength;if(n<256)this.writeU8(196),this.writeU8(n);else if(n<65536)this.writeU8(197),this.writeU16(n);else if(n<4294967296)this.writeU8(198),this.writeU32(n);else throw new Error(`Too large binary: ${n}`);const r=Lx(e);this.writeU8a(r)}encodeArray(e,n){const r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(const i of e)this.doEncode(i,n+1)}countWithoutUndefined(e,n){let r=0;for(const i of n)e[i]!==void 0&&r++;return r}encodeMap(e,n){const r=Object.keys(e);this.sortKeys&&r.sort();const i=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(i<16)this.writeU8(128+i);else if(i<65536)this.writeU8(222),this.writeU16(i);else if(i<4294967296)this.writeU8(223),this.writeU32(i);else throw new Error(`Too large map object: ${i}`);for(const s of r){const o=e[s];this.ignoreUndefined&&o===void 0||(this.encodeString(s),this.doEncode(o,n+1))}}encodeExtension(e){if(typeof e.data=="function"){const r=e.data(this.pos+6),i=r.length;if(i>=4294967296)throw new Error(`Too large extension object: ${i}`);this.writeU8(201),this.writeU32(i),this.writeI8(e.type),this.writeU8a(r);return}const n=e.data.length;if(n===1)this.writeU8(212);else if(n===2)this.writeU8(213);else if(n===4)this.writeU8(214);else if(n===8)this.writeU8(215);else if(n===16)this.writeU8(216);else if(n<256)this.writeU8(199),this.writeU8(n);else if(n<65536)this.writeU8(200),this.writeU16(n);else if(n<4294967296)this.writeU8(201),this.writeU32(n);else throw new Error(`Too large extension object: ${n}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){const n=e.length;this.ensureBufferSizeToWrite(n),this.bytes.set(e,this.pos),this.pos+=n}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),Pte(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),GB(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};function Gte(t,e){return new Wte(e).encodeSharedRef(t)}function UE(t){return`${t<0?"-":""}0x${Math.abs(t).toString(16).padStart(2,"0")}`}const qte=16,Kte=16;class Xte{constructor(e=qte,n=Kte){this.hit=0,this.miss=0,this.maxKeyLength=e,this.maxLengthPerKey=n,this.caches=[];for(let r=0;r0&&e<=this.maxKeyLength}find(e,n,r){const i=this.caches[r-1];e:for(const s of i){const o=s.bytes;for(let a=0;a=this.maxLengthPerKey?r[Math.random()*r.length|0]=i:r.push(i)}decode(e,n,r){const i=this.find(e,n,r);if(i!=null)return this.hit++,i;this.miss++;const s=WB(e,n,r),o=Uint8Array.prototype.slice.call(e,n,n+r);return this.store(o,s),s}}const kx="array",Ig="map_key",XB="map_value",Yte=t=>{if(typeof t=="string"||typeof t=="number")return t;throw new gs("The type of key must be string or number but "+typeof t)};class Zte{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){const n=this.getUninitializedStateFromPool();n.type=kx,n.position=0,n.size=e,n.array=new Array(e)}pushMapState(e){const n=this.getUninitializedStateFromPool();n.type=Ig,n.readCount=0,n.size=e,n.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){const e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===kx){const r=e;r.size=0,r.array=void 0,r.position=0,r.type=void 0}if(e.type===Ig||e.type===XB){const r=e;r.size=0,r.map=void 0,r.readCount=0,r.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}const Np=-1,dT=new DataView(new ArrayBuffer(0)),Jte=new Uint8Array(dT.buffer);try{dT.getInt8(0)}catch(t){if(!(t instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}const KP=new RangeError("Insufficient data"),Qte=new Xte;let ene=class YB{constructor(e){this.totalPos=0,this.pos=0,this.view=dT,this.bytes=Jte,this.headByte=Np,this.stack=new Zte,this.entered=!1,this.extensionCodec=(e==null?void 0:e.extensionCodec)??eb.defaultCodec,this.context=e==null?void 0:e.context,this.useBigInt64=(e==null?void 0:e.useBigInt64)??!1,this.rawStrings=(e==null?void 0:e.rawStrings)??!1,this.maxStrLength=(e==null?void 0:e.maxStrLength)??Mp,this.maxBinLength=(e==null?void 0:e.maxBinLength)??Mp,this.maxArrayLength=(e==null?void 0:e.maxArrayLength)??Mp,this.maxMapLength=(e==null?void 0:e.maxMapLength)??Mp,this.maxExtLength=(e==null?void 0:e.maxExtLength)??Mp,this.keyDecoder=(e==null?void 0:e.keyDecoder)!==void 0?e.keyDecoder:Qte,this.mapKeyConverter=(e==null?void 0:e.mapKeyConverter)??Yte}clone(){return new YB({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=Np,this.stack.reset()}setBuffer(e){const n=Lx(e);this.bytes=n,this.view=new DataView(n.buffer,n.byteOffset,n.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===Np&&!this.hasRemaining(1))this.setBuffer(e);else{const n=this.bytes.subarray(this.pos),r=Lx(e),i=new Uint8Array(n.length+r.length);i.set(n),i.set(r,n.length),this.setBuffer(i)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){const{view:n,pos:r}=this;return new RangeError(`Extra ${n.byteLength-r} of ${n.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);const n=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return n}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let n=!1,r;for await(const a of e){if(n)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{r=this.doDecodeSync(),n=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(n){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}const{headByte:i,pos:s,totalPos:o}=this;throw new RangeError(`Insufficient data in parsing ${UE(i)} at ${o} (${s} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,n){if(this.entered){yield*this.clone().decodeMultiAsync(e,n);return}try{this.entered=!0;let r=n,i=-1;for await(const s of e){if(n&&i===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),r&&(i=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--i!==0;);}catch(o){if(!(o instanceof RangeError))throw o}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){const e=this.readHeadByte();let n;if(e>=224)n=e-256;else if(e<192)if(e<128)n=e;else if(e<144){const i=e-128;if(i!==0){this.pushMapState(i),this.complete();continue e}else n={}}else if(e<160){const i=e-144;if(i!==0){this.pushArrayState(i),this.complete();continue e}else n=[]}else{const i=e-160;n=this.decodeString(i,0)}else if(e===192)n=null;else if(e===194)n=!1;else if(e===195)n=!0;else if(e===202)n=this.readF32();else if(e===203)n=this.readF64();else if(e===204)n=this.readU8();else if(e===205)n=this.readU16();else if(e===206)n=this.readU32();else if(e===207)this.useBigInt64?n=this.readU64AsBigInt():n=this.readU64();else if(e===208)n=this.readI8();else if(e===209)n=this.readI16();else if(e===210)n=this.readI32();else if(e===211)this.useBigInt64?n=this.readI64AsBigInt():n=this.readI64();else if(e===217){const i=this.lookU8();n=this.decodeString(i,1)}else if(e===218){const i=this.lookU16();n=this.decodeString(i,2)}else if(e===219){const i=this.lookU32();n=this.decodeString(i,4)}else if(e===220){const i=this.readU16();if(i!==0){this.pushArrayState(i),this.complete();continue e}else n=[]}else if(e===221){const i=this.readU32();if(i!==0){this.pushArrayState(i),this.complete();continue e}else n=[]}else if(e===222){const i=this.readU16();if(i!==0){this.pushMapState(i),this.complete();continue e}else n={}}else if(e===223){const i=this.readU32();if(i!==0){this.pushMapState(i),this.complete();continue e}else n={}}else if(e===196){const i=this.lookU8();n=this.decodeBinary(i,1)}else if(e===197){const i=this.lookU16();n=this.decodeBinary(i,2)}else if(e===198){const i=this.lookU32();n=this.decodeBinary(i,4)}else if(e===212)n=this.decodeExtension(1,0);else if(e===213)n=this.decodeExtension(2,0);else if(e===214)n=this.decodeExtension(4,0);else if(e===215)n=this.decodeExtension(8,0);else if(e===216)n=this.decodeExtension(16,0);else if(e===199){const i=this.lookU8();n=this.decodeExtension(i,1)}else if(e===200){const i=this.lookU16();n=this.decodeExtension(i,2)}else if(e===201){const i=this.lookU32();n=this.decodeExtension(i,4)}else throw new gs(`Unrecognized type byte: ${UE(e)}`);this.complete();const r=this.stack;for(;r.length>0;){const i=r.top();if(i.type===kx)if(i.array[i.position]=n,i.position++,i.position===i.size)n=i.array,r.release(i);else continue e;else if(i.type===Ig){if(n==="__proto__")throw new gs("The key __proto__ is not allowed");i.key=this.mapKeyConverter(n),i.type=XB;continue e}else if(i.map[i.key]=n,i.readCount++,i.readCount===i.size)n=i.map,r.release(i);else{i.key=null,i.type=Ig;continue e}}return n}}readHeadByte(){return this.headByte===Np&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Np}readArraySize(){const e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new gs(`Unrecognized array type byte: ${UE(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new gs(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new gs(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,n){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,n):this.decodeBinary(e,n)}decodeUtf8String(e,n){var s;if(e>this.maxStrLength)throw new gs(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength0?this.stack.top().type===Ig:!1}decodeBinary(e,n){if(e>this.maxBinLength)throw new gs(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+n))throw KP;const r=this.pos+n,i=this.bytes.subarray(r,r+e);return this.pos+=n+e,i}decodeExtension(e,n){if(e>this.maxExtLength)throw new gs(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);const r=this.view.getInt8(this.pos+n),i=this.decodeBinary(e,n+1);return this.extensionCodec.decode(i,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){const e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){const e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){const e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){const e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){const e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){const e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){const e=Dte(this.view,this.pos);return this.pos+=8,e}readI64(){const e=qB(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){const e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){const e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){const e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){const e=this.view.getFloat64(this.pos);return this.pos+=8,e}};function tne(t,e){return new ene(e).decode(t)}function hT(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function ZB(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?hT(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function Mg(t,e){e||(e=t.reduce((i,s)=>i+s.length,0));const n=ZB(e);let r=0;for(const i of t)n.set(i,r),r+=i.length;return hT(n)}function nne(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r>>0,b=new Uint8Array(w);p!==v;){for(var S=g[p],x=0,T=w-1;(S!==0||x>>0,b[T]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");y=x,p++}for(var N=w-y;N!==w&&b[N]===0;)N++;for(var _=c.repeat(m);N>>0,w=new Uint8Array(v);g[m];){var b=n[g.charCodeAt(m)];if(b===255)return;for(var S=0,x=v-1;(b!==0||S>>0,w[x]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");p=S,m++}if(g[m]!==" "){for(var T=v-p;T!==v&&w[T]===0;)T++;for(var N=new Uint8Array(y+(v-T)),_=y;T!==v;)N[_++]=w[T++];return N}}}function f(g){var m=h(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:f}}var rne=nne,ine=rne;const sne=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},one=t=>new TextEncoder().encode(t),ane=t=>new TextDecoder().decode(t);class cne{constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class lne{constructor(e,n,r){if(this.name=e,this.prefix=n,n.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=n.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return JB(this,e)}}class une{constructor(e){this.decoders=e}or(e){return JB(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const JB=(t,e)=>new une({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class dne{constructor(e,n,r,i){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=i,this.encoder=new cne(e,n,r),this.decoder=new lne(e,n,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const i1=({name:t,prefix:e,encode:n,decode:r})=>new dne(t,e,n,r),b0=({prefix:t,name:e,alphabet:n})=>{const{encode:r,decode:i}=ine(n,e);return i1({prefix:t,name:e,encode:r,decode:s=>sne(i(s))})},hne=(t,e,n,r)=>{const i={};for(let u=0;u=8&&(a-=8,o[l++]=255&c>>a)}if(a>=n||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},fne=(t,e,n)=>{const r=e[e.length-1]==="=",i=(1<n;)o-=n,s+=e[i&a>>o];if(o&&(s+=e[i&a<i1({prefix:e,name:t,encode(i){return fne(i,r,n)},decode(i){return hne(i,r,n,t)}}),pne=i1({prefix:"\0",name:"identity",encode:t=>ane(t),decode:t=>one(t)}),gne=Object.freeze(Object.defineProperty({__proto__:null,identity:pne},Symbol.toStringTag,{value:"Module"})),mne=Gr({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1}),yne=Object.freeze(Object.defineProperty({__proto__:null,base2:mne},Symbol.toStringTag,{value:"Module"})),wne=Gr({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3}),vne=Object.freeze(Object.defineProperty({__proto__:null,base8:wne},Symbol.toStringTag,{value:"Module"})),bne=b0({prefix:"9",name:"base10",alphabet:"0123456789"}),Ene=Object.freeze(Object.defineProperty({__proto__:null,base10:bne},Symbol.toStringTag,{value:"Module"})),_ne=Gr({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Sne=Gr({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4}),xne=Object.freeze(Object.defineProperty({__proto__:null,base16:_ne,base16upper:Sne},Symbol.toStringTag,{value:"Module"})),Ane=Gr({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Cne=Gr({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Tne=Gr({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Ine=Gr({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Mne=Gr({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Nne=Gr({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Pne=Gr({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Dne=Gr({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Rne=Gr({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5}),One=Object.freeze(Object.defineProperty({__proto__:null,base32:Ane,base32hex:Mne,base32hexpad:Pne,base32hexpadupper:Dne,base32hexupper:Nne,base32pad:Tne,base32padupper:Ine,base32upper:Cne,base32z:Rne},Symbol.toStringTag,{value:"Module"})),Une=b0({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Lne=b0({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}),kne=Object.freeze(Object.defineProperty({__proto__:null,base36:Une,base36upper:Lne},Symbol.toStringTag,{value:"Module"})),$ne=b0({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Bne=b0({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"}),Fne=Object.freeze(Object.defineProperty({__proto__:null,base58btc:$ne,base58flickr:Bne},Symbol.toStringTag,{value:"Module"})),zne=Gr({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Hne=Gr({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),jne=Gr({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Vne=Gr({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6}),Wne=Object.freeze(Object.defineProperty({__proto__:null,base64:zne,base64pad:Hne,base64url:jne,base64urlpad:Vne},Symbol.toStringTag,{value:"Module"})),QB=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),Gne=QB.reduce((t,e,n)=>(t[n]=e,t),[]),qne=QB.reduce((t,e,n)=>(t[e.codePointAt(0)]=n,t),[]);function Kne(t){return t.reduce((e,n)=>(e+=Gne[n],e),"")}function Xne(t){const e=[];for(const n of t){const r=qne[n.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${n}`);e.push(r)}return new Uint8Array(e)}const Yne=i1({prefix:"🚀",name:"base256emoji",encode:Kne,decode:Xne}),Zne=Object.freeze(Object.defineProperty({__proto__:null,base256emoji:Yne},Symbol.toStringTag,{value:"Module"}));new TextEncoder;new TextDecoder;const XP={...gne,...yne,...vne,...Ene,...xne,...One,...kne,...Fne,...Wne,...Zne};function e8(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const YP=e8("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),LE=e8("ascii","a",t=>{let e="a";for(let n=0;n{t=t.substring(1);const e=ZB(t.length);for(let n=0;n=4294967296&&i++,t[e]=r,t[e+1]=i}function ZP(t,e,n,r){let i=t[e]+n;n<0&&(i+=4294967296);let s=t[e+1]+r;i>=4294967296&&s++,t[e]=i,t[e+1]=s}function r8(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Dc(t,e,n,r,i,s){const o=ig[i],a=ig[i+1],c=ig[s],l=ig[s+1];xy(At,t,e),ZP(At,t,o,a);let u=At[r]^At[t],d=At[r+1]^At[t+1];At[r]=d,At[r+1]=u,xy(At,n,r),u=At[e]^At[n],d=At[e+1]^At[n+1],At[e]=u>>>24^d<<8,At[e+1]=d>>>24^u<<8,xy(At,t,e),ZP(At,t,c,l),u=At[r]^At[t],d=At[r+1]^At[t+1],At[r]=u>>>16^d<<16,At[r+1]=d>>>16^u<<16,xy(At,n,r),u=At[e]^At[n],d=At[e+1]^At[n+1],At[e]=d>>>31^u<<1,At[e+1]=u>>>31^d<<1}const i8=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),ire=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],Jr=new Uint8Array(ire.map(function(t){return t*2})),At=new Uint32Array(32),ig=new Uint32Array(32);function s8(t,e){let n=0;for(n=0;n<16;n++)At[n]=t.h[n],At[n+16]=i8[n];for(At[24]=At[24]^t.t,At[25]=At[25]^t.t/4294967296,e&&(At[28]=~At[28],At[29]=~At[29]),n=0;n<32;n++)ig[n]=r8(t.b,4*n);for(n=0;n<12;n++)Dc(0,8,16,24,Jr[n*16+0],Jr[n*16+1]),Dc(2,10,18,26,Jr[n*16+2],Jr[n*16+3]),Dc(4,12,20,28,Jr[n*16+4],Jr[n*16+5]),Dc(6,14,22,30,Jr[n*16+6],Jr[n*16+7]),Dc(0,10,20,30,Jr[n*16+8],Jr[n*16+9]),Dc(2,12,22,24,Jr[n*16+10],Jr[n*16+11]),Dc(4,14,16,26,Jr[n*16+12],Jr[n*16+13]),Dc(6,8,18,28,Jr[n*16+14],Jr[n*16+15]);for(n=0;n<16;n++)t.h[n]=t.h[n]^At[n]^At[n+16]}const Rc=new Uint8Array([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,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]);function o8(t,e,n,r){if(t===0||t>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(e&&e.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");if(n&&n.length!==16)throw new Error("Illegal salt, expected Uint8Array with length is 16");if(r&&r.length!==16)throw new Error("Illegal personal, expected Uint8Array with length is 16");const i={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:t};Rc.fill(0),Rc[0]=t,e&&(Rc[1]=e.length),Rc[2]=1,Rc[3]=1,n&&Rc.set(n,32),r&&Rc.set(r,48);for(let s=0;s<16;s++)i.h[s]=i8[s]^r8(Rc,s*4);return e&&(fT(i,e),i.c=128),i}function fT(t,e){for(let n=0;n>2]>>8*(n&3);return e}function c8(t,e,n,r,i){n=n||64,t=Fw.normalizeInput(t),r&&(r=Fw.normalizeInput(r)),i&&(i=Fw.normalizeInput(i));const s=o8(n,e,r,i);return fT(s,t),a8(s)}function sre(t,e,n,r,i){const s=c8(t,e,n,r,i);return Fw.toHex(s)}var ore={blake2b:c8,blake2bHex:sre,blake2bInit:o8,blake2bUpdate:fT,blake2bFinal:a8};const l8=n8;function are(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function Oc(t,e,n,r,i,s){sn[t]=sn[t]+sn[e]+i,sn[r]=Ay(sn[r]^sn[t],16),sn[n]=sn[n]+sn[r],sn[e]=Ay(sn[e]^sn[n],12),sn[t]=sn[t]+sn[e]+s,sn[r]=Ay(sn[r]^sn[t],8),sn[n]=sn[n]+sn[r],sn[e]=Ay(sn[e]^sn[n],7)}function Ay(t,e){return t>>>e^t<<32-e}const u8=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Qr=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0]),sn=new Uint32Array(16),Pr=new Uint32Array(16);function d8(t,e){let n=0;for(n=0;n<8;n++)sn[n]=t.h[n],sn[n+8]=u8[n];for(sn[12]^=t.t,sn[13]^=t.t/4294967296,e&&(sn[14]=~sn[14]),n=0;n<16;n++)Pr[n]=are(t.b,4*n);for(n=0;n<10;n++)Oc(0,4,8,12,Pr[Qr[n*16+0]],Pr[Qr[n*16+1]]),Oc(1,5,9,13,Pr[Qr[n*16+2]],Pr[Qr[n*16+3]]),Oc(2,6,10,14,Pr[Qr[n*16+4]],Pr[Qr[n*16+5]]),Oc(3,7,11,15,Pr[Qr[n*16+6]],Pr[Qr[n*16+7]]),Oc(0,5,10,15,Pr[Qr[n*16+8]],Pr[Qr[n*16+9]]),Oc(1,6,11,12,Pr[Qr[n*16+10]],Pr[Qr[n*16+11]]),Oc(2,7,8,13,Pr[Qr[n*16+12]],Pr[Qr[n*16+13]]),Oc(3,4,9,14,Pr[Qr[n*16+14]],Pr[Qr[n*16+15]]);for(n=0;n<8;n++)t.h[n]^=sn[n]^sn[n+8]}function h8(t,e){if(!(t>0&&t<=32))throw new Error("Incorrect output length, should be in [1, 32]");const n=e?e.length:0;if(e&&!(n>0&&n<=32))throw new Error("Incorrect key length, should be in [1, 32]");const r={h:new Uint32Array(u8),b:new Uint8Array(64),c:0,t:0,outlen:t};return r.h[0]^=16842752^n<<8^t,n>0&&(pT(r,e),r.c=64),r}function pT(t,e){for(let n=0;n>2]>>8*(n&3)&255;return e}function p8(t,e,n){n=n||32,t=l8.normalizeInput(t);const r=h8(n,e);return pT(r,t),f8(r)}function cre(t,e,n){const r=p8(t,e,n);return l8.toHex(r)}var lre={blake2s:p8,blake2sHex:cre,blake2sInit:h8,blake2sUpdate:pT,blake2sFinal:f8};const Pp=ore,Dp=lre;var ure={blake2b:Pp.blake2b,blake2bHex:Pp.blake2bHex,blake2bInit:Pp.blake2bInit,blake2bUpdate:Pp.blake2bUpdate,blake2bFinal:Pp.blake2bFinal,blake2s:Dp.blake2s,blake2sHex:Dp.blake2sHex,blake2sInit:Dp.blake2sInit,blake2sUpdate:Dp.blake2sUpdate,blake2sFinal:Dp.blake2sFinal},dre={};const hre=":";function rf(t){const[e,n]=t.split(hre);return{namespace:e,reference:n}}function g8(t,e){return t.includes(":")?[t]:e.chains||[]}var fre=Object.defineProperty,pre=Object.defineProperties,gre=Object.getOwnPropertyDescriptors,JP=Object.getOwnPropertySymbols,mre=Object.prototype.hasOwnProperty,yre=Object.prototype.propertyIsEnumerable,$x=(t,e,n)=>e in t?fre(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,QP=(t,e)=>{for(var n in e||(e={}))mre.call(e,n)&&$x(t,n,e[n]);if(JP)for(var n of JP(e))yre.call(e,n)&&$x(t,n,e[n]);return t},wre=(t,e)=>pre(t,gre(e)),e3=(t,e,n)=>$x(t,typeof e!="symbol"?e+"":e,n);const vre="ReactNative",Es={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},bre="js";function tb(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function Xl(){return!cd()&&!!cT()&&navigator.product===vre}function Ere(){return Xl()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="android"}function _re(){return Xl()&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"&&(global==null?void 0:global.Platform.OS)==="ios"}function op(){return!tb()&&!!cT()&&!!cd()}function E0(){return Xl()?Es.reactNative:tb()?Es.node:op()?Es.browser:Es.unknown}function t3(){var t;try{return Xl()&&typeof global<"u"&&typeof(global==null?void 0:global.Application)<"u"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function Sre(t,e){const n=new URLSearchParams(t);for(const r of Object.keys(e).sort())if(e.hasOwnProperty(r)){const i=e[r];i!==void 0&&n.set(r,i)}return n.toString()}function xre(t){var e,n;const r=m8();try{return t!=null&&t.url&&r.url&&new URL(t.url).host!==new URL(r.url).host&&(console.warn(`The configured WalletConnect 'metadata.url':${t.url} differs from the actual page url:${r.url}. This is probably unintended and can lead to issues.`),t.url=r.url),(e=t==null?void 0:t.icons)!=null&&e.length&&t.icons.length>0&&(t.icons=t.icons.filter(i=>i!=="")),wre(QP(QP({},r),t),{url:(t==null?void 0:t.url)||r.url,name:(t==null?void 0:t.name)||r.name,description:(t==null?void 0:t.description)||r.description,icons:(n=t==null?void 0:t.icons)!=null&&n.length&&t.icons.length>0?t.icons:r.icons})}catch(i){return console.warn("Error populating app metadata",i),t||r}}function m8(){return NB()||{name:"",description:"",url:"",icons:[""]}}function Are(){if(E0()===Es.reactNative&&typeof global<"u"&&typeof(global==null?void 0:global.Platform)<"u"){const{OS:n,Version:r}=global.Platform;return[n,r].join("-")}const t=hee();if(t===null)return"unknown";const e=t.os?t.os.replace(" ","").toLowerCase():"unknown";return t.type==="browser"?[e,t.name,t.version].join("-"):[e,t.version].join("-")}function Cre(){var t;const e=E0();return e===Es.browser?[e,((t=MB())==null?void 0:t.host)||"unknown"].join(":"):e}function y8(t,e,n){const r=Are(),i=Cre();return[[t,e].join("-"),[bre,n].join("-"),r,i].join("/")}function Tre({protocol:t,version:e,relayUrl:n,sdkVersion:r,auth:i,projectId:s,useOnCloseEvent:o,bundleId:a,packageName:c}){const l=n.split("?"),u=y8(t,e,r),d={auth:i,ua:u,projectId:s,useOnCloseEvent:o,packageName:c||void 0,bundleId:a||void 0},h=Sre(l[1]||"",d);return l[0]+"?"+h}function Ou(t,e){return t.filter(n=>e.includes(n)).length===t.length}function Bx(t){return Object.fromEntries(t.entries())}function Fx(t){return new Map(Object.entries(t))}function yu(t=Ie.FIVE_MINUTES,e){const n=Ie.toMiliseconds(t||Ie.FIVE_MINUTES);let r,i,s,o;return{resolve:a=>{s&&r&&(clearTimeout(s),r(a),o=Promise.resolve(a))},reject:a=>{s&&i&&(clearTimeout(s),i(a))},done:()=>new Promise((a,c)=>{if(o)return a(o);s=setTimeout(()=>{const l=new Error(e);o=Promise.reject(l),c(l)},n),r=a,i=c})}}function hl(t,e,n){return new Promise(async(r,i)=>{const s=setTimeout(()=>i(new Error(n)),e);try{const o=await t;r(o)}catch(o){i(o)}clearTimeout(s)})}function w8(t,e){if(typeof e=="string"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()==="topic"){if(typeof e!="string")throw new Error('Value must be "string" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()==="id"){if(typeof e!="number")throw new Error('Value must be "number" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function Ire(t){return w8("topic",t)}function Mre(t){return w8("id",t)}function v8(t){const[e,n]=t.split(":"),r={id:void 0,topic:void 0};if(e==="topic"&&typeof n=="string")r.topic=n;else if(e==="id"&&Number.isInteger(Number(n)))r.id=Number(n);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${n}`);return r}function gr(t,e){return Ie.fromMiliseconds(Date.now()+Ie.toMiliseconds(t))}function Jc(t){return Date.now()>=Ie.toMiliseconds(t)}function hn(t,e){return`${t}${e?`:${e}`:""}`}function ba(t=[],e=[]){return[...new Set([...t,...e])]}async function Nre({id:t,topic:e,wcDeepLink:n}){var r;try{if(!n)return;const i=typeof n=="string"?JSON.parse(n):n,s=i==null?void 0:i.href;if(typeof s!="string")return;const o=Pre(s,t,e),a=E0();if(a===Es.browser){if(!((r=cd())!=null&&r.hasFocus())){console.warn("Document does not have focus, skipping deeplink.");return}Dre(o)}else a===Es.reactNative&&typeof(global==null?void 0:global.Linking)<"u"&&await global.Linking.openURL(o)}catch(i){console.error(i)}}function Pre(t,e,n){const r=`requestId=${e}&sessionTopic=${n}`;t.endsWith("/")&&(t=t.slice(0,-1));let i=`${t}`;if(t.startsWith("https://t.me")){const s=t.includes("?")?"&startapp=":"?startapp=";i=`${i}${s}${Lre(r,!0)}`}else i=`${i}/wc?${r}`;return i}function Dre(t){let e="_self";Ure()?e="_top":(Ore()||t.startsWith("https://")||t.startsWith("http://"))&&(e="_blank"),window.open(t,e,"noreferrer noopener")}async function Rre(t,e){let n="";try{if(op()&&(n=localStorage.getItem(e),n))return n;n=await t.getItem(e)}catch(r){console.error(r)}return n}function n3(t,e){if(!t.includes(e))return null;const n=t.split(/([&,?,=])/),r=n.indexOf(e);return n[r+2]}function r3(){return typeof crypto<"u"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function gT(){return typeof process<"u"&&dre.IS_VITEST==="true"}function Ore(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function Ure(){try{return window.self!==window.top}catch{return!1}}function Lre(t,e=!1){const n=Buffer.from(t).toString("base64");return e?n.replace(/[=]/g,""):n}function b8(t){return Buffer.from(t,"base64").toString("utf-8")}function kre(t){return new Promise(e=>setTimeout(e,t))}let $re=class{constructor({limit:e}){e3(this,"limit"),e3(this,"set"),this.limit=e,this.set=new Set}add(e){if(!this.set.has(e)){if(this.set.size>=this.limit){const n=this.set.values().next().value;n&&this.set.delete(n)}this.set.add(e)}}has(e){return this.set.has(e)}};const Cy=BigInt(2**32-1),i3=BigInt(32);function E8(t,e=!1){return e?{h:Number(t&Cy),l:Number(t>>i3&Cy)}:{h:Number(t>>i3&Cy)|0,l:Number(t&Cy)|0}}function _8(t,e=!1){const n=t.length;let r=new Uint32Array(n),i=new Uint32Array(n);for(let s=0;st>>>n,o3=(t,e,n)=>t<<32-n|e>>>n,Qc=(t,e,n)=>t>>>n|e<<32-n,el=(t,e,n)=>t<<32-n|e>>>n,sg=(t,e,n)=>t<<64-n|e>>>n-32,og=(t,e,n)=>t>>>n-32|e<<64-n,Bre=(t,e)=>e,Fre=(t,e)=>t,zre=(t,e,n)=>t<>>32-n,Hre=(t,e,n)=>e<>>32-n,jre=(t,e,n)=>e<>>64-n,Vre=(t,e,n)=>t<>>64-n;function Ao(t,e,n,r){const i=(e>>>0)+(r>>>0);return{h:t+n+(i/2**32|0)|0,l:i|0}}const mT=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),yT=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Wre=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),Gre=(t,e,n,r,i)=>e+n+r+i+(t/2**32|0)|0,qre=(t,e,n,r,i)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(i>>>0),Kre=(t,e,n,r,i,s)=>e+n+r+i+s+(t/2**32|0)|0,Fd=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function wT(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function yc(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function oo(t,...e){if(!wT(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function vT(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");yc(t.outputLen),yc(t.blockLen)}function Bl(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function bT(t,e){oo(t);const n=e.outputLen;if(t.length>>e}const S8=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function x8(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}const Wa=S8?t=>t:t=>x8(t);function Xre(t){for(let e=0;et:Xre,A8=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Yre=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function xm(t){if(oo(t),A8)return t.toHex();let e="";for(let n=0;n=Ra._0&&t<=Ra._9)return t-Ra._0;if(t>=Ra.A&&t<=Ra.F)return t-(Ra.A-10);if(t>=Ra.a&&t<=Ra.f)return t-(Ra.a-10)}function ET(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(A8)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(n);for(let i=0,s=0;it().update(Fo(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Jre(t){const e=(r,i)=>t(i).update(Fo(r)).digest(),n=t({});return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}function ap(t=32){if(Fd&&typeof Fd.getRandomValues=="function")return Fd.getRandomValues(new Uint8Array(t));if(Fd&&typeof Fd.randomBytes=="function")return Uint8Array.from(Fd.randomBytes(t));throw new Error("crypto.getRandomValues must be defined")}const Qre=BigInt(0),Rp=BigInt(1),eie=BigInt(2),tie=BigInt(7),nie=BigInt(256),rie=BigInt(113),C8=[],T8=[],I8=[];for(let t=0,e=Rp,n=1,r=0;t<24;t++){[n,r]=[r,(2*n+3*r)%5],C8.push(2*(5*r+n)),T8.push((t+1)*(t+2)/2%64);let i=Qre;for(let s=0;s<7;s++)e=(e<>tie)*rie)%nie,e&eie&&(i^=Rp<<(Rp<n>32?jre(t,e,n):zre(t,e,n),l3=(t,e,n)=>n>32?Vre(t,e,n):Hre(t,e,n);function oie(t,e=24){const n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let o=0;o<10;o++)n[o]=t[o]^t[o+10]^t[o+20]^t[o+30]^t[o+40];for(let o=0;o<10;o+=2){const a=(o+8)%10,c=(o+2)%10,l=n[c],u=n[c+1],d=c3(l,u,1)^n[a],h=l3(l,u,1)^n[a+1];for(let f=0;f<50;f+=10)t[o+f]^=d,t[o+f+1]^=h}let i=t[2],s=t[3];for(let o=0;o<24;o++){const a=T8[o],c=c3(i,s,a),l=l3(i,s,a),u=C8[o];i=t[u],s=t[u+1],t[u]=c,t[u+1]=l}for(let o=0;o<50;o+=10){for(let a=0;a<10;a++)n[a]=t[o+a];for(let a=0;a<10;a++)t[o+a]^=~n[(a+2)%10]&n[(a+4)%10]}t[0]^=iie[r],t[1]^=sie[r]}ao(n)}let aie=class N8 extends s1{constructor(e,n,r,i=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=n,this.outputLen=r,this.enableXOF=i,this.rounds=s,yc(r),!(0=r&&this.keccak();const o=Math.min(r-this.posOut,s-i);e.set(n.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return yc(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(bT(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,ao(this.state)}_cloneInto(e){const{blockLen:n,suffix:r,outputLen:i,rounds:s,enableXOF:o}=this;return e||(e=new N8(n,r,i,o,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=r,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}};const cie=(t,e,n)=>_0(()=>new aie(e,t,n)),lie=cie(1,136,256/8);function uie(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const i=BigInt(32),s=BigInt(4294967295),o=Number(n>>i&s),a=Number(n&s),c=r?4:0,l=r?0:4;t.setUint32(e+c,o,r),t.setUint32(e+l,a,r)}function die(t,e,n){return t&e^~t&n}function hie(t,e,n){return t&e^t&n^e&n}let P8=class extends s1{constructor(e,n,r,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=i,this.buffer=new Uint8Array(e),this.view=kE(this.buffer)}update(e){Bl(this),e=Fo(e),oo(e);const{view:n,buffer:r,blockLen:i}=this,s=e.length;for(let o=0;oi-o&&(this.process(r,0),o=0);for(let d=o;du.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d>>3,m=Zo(f,17)^Zo(f,19)^f>>>10;Lc[d]=m+Lc[d-7]+g+Lc[d-16]|0}let{A:r,B:i,C:s,D:o,E:a,F:c,G:l,H:u}=this;for(let d=0;d<64;d++){const h=Zo(a,6)^Zo(a,11)^Zo(a,25),f=u+h+die(a,c,l)+fie[d]+Lc[d]|0,g=(Zo(r,2)^Zo(r,13)^Zo(r,22))+hie(r,i,s)|0;u=l,l=c,c=a,a=o+f|0,o=s,s=i,i=r,r=f+g|0}r=r+this.A|0,i=i+this.B|0,s=s+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(r,i,s,o,a,c,l,u)}roundClean(){ao(Lc)}destroy(){this.set(0,0,0,0,0,0,0,0),ao(this.buffer)}};const D8=_8(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),gie=D8[0],mie=D8[1],kc=new Uint32Array(80),$c=new Uint32Array(80);let _T=class extends P8{constructor(e=64){super(128,e,16,!1),this.Ah=ti[0]|0,this.Al=ti[1]|0,this.Bh=ti[2]|0,this.Bl=ti[3]|0,this.Ch=ti[4]|0,this.Cl=ti[5]|0,this.Dh=ti[6]|0,this.Dl=ti[7]|0,this.Eh=ti[8]|0,this.El=ti[9]|0,this.Fh=ti[10]|0,this.Fl=ti[11]|0,this.Gh=ti[12]|0,this.Gl=ti[13]|0,this.Hh=ti[14]|0,this.Hl=ti[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:i,Ch:s,Cl:o,Dh:a,Dl:c,Eh:l,El:u,Fh:d,Fl:h,Gh:f,Gl:g,Hh:m,Hl:y}=this;return[e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y]}set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=i|0,this.Ch=s|0,this.Cl=o|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=d|0,this.Fl=h|0,this.Gh=f|0,this.Gl=g|0,this.Hh=m|0,this.Hl=y|0}process(e,n){for(let w=0;w<16;w++,n+=4)kc[w]=e.getUint32(n),$c[w]=e.getUint32(n+=4);for(let w=16;w<80;w++){const b=kc[w-15]|0,S=$c[w-15]|0,x=Qc(b,S,1)^Qc(b,S,8)^s3(b,S,7),T=el(b,S,1)^el(b,S,8)^o3(b,S,7),N=kc[w-2]|0,_=$c[w-2]|0,E=Qc(N,_,19)^sg(N,_,61)^s3(N,_,6),A=el(N,_,19)^og(N,_,61)^o3(N,_,6),L=Wre(T,A,$c[w-7],$c[w-16]),$=Gre(L,x,E,kc[w-7],kc[w-16]);kc[w]=$|0,$c[w]=L|0}let{Ah:r,Al:i,Bh:s,Bl:o,Ch:a,Cl:c,Dh:l,Dl:u,Eh:d,El:h,Fh:f,Fl:g,Gh:m,Gl:y,Hh:p,Hl:v}=this;for(let w=0;w<80;w++){const b=Qc(d,h,14)^Qc(d,h,18)^sg(d,h,41),S=el(d,h,14)^el(d,h,18)^og(d,h,41),x=d&f^~d&m,T=h&g^~h&y,N=qre(v,S,T,mie[w],$c[w]),_=Kre(N,p,b,x,gie[w],kc[w]),E=N|0,A=Qc(r,i,28)^sg(r,i,34)^sg(r,i,39),L=el(r,i,28)^og(r,i,34)^og(r,i,39),$=r&s^r&a^s&a,W=i&o^i&c^o&c;p=m|0,v=y|0,m=f|0,y=g|0,f=d|0,g=h|0,{h:d,l:h}=Ao(l|0,u|0,_|0,E|0),l=a|0,u=c|0,a=s|0,c=o|0,s=r|0,o=i|0;const C=mT(E,L,W);r=yT(C,_,A,$),i=C|0}({h:r,l:i}=Ao(this.Ah|0,this.Al|0,r|0,i|0)),{h:s,l:o}=Ao(this.Bh|0,this.Bl|0,s|0,o|0),{h:a,l:c}=Ao(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Ao(this.Dh|0,this.Dl|0,l|0,u|0),{h:d,l:h}=Ao(this.Eh|0,this.El|0,d|0,h|0),{h:f,l:g}=Ao(this.Fh|0,this.Fl|0,f|0,g|0),{h:m,l:y}=Ao(this.Gh|0,this.Gl|0,m|0,y|0),{h:p,l:v}=Ao(this.Hh|0,this.Hl|0,p|0,v|0),this.set(r,i,s,o,a,c,l,u,d,h,f,g,m,y,p,v)}roundClean(){ao(kc,$c)}destroy(){ao(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},yie=class extends _T{constructor(){super(48),this.Ah=ei[0]|0,this.Al=ei[1]|0,this.Bh=ei[2]|0,this.Bl=ei[3]|0,this.Ch=ei[4]|0,this.Cl=ei[5]|0,this.Dh=ei[6]|0,this.Dl=ei[7]|0,this.Eh=ei[8]|0,this.El=ei[9]|0,this.Fh=ei[10]|0,this.Fl=ei[11]|0,this.Gh=ei[12]|0,this.Gl=ei[13]|0,this.Hh=ei[14]|0,this.Hl=ei[15]|0}};const ni=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class wie extends _T{constructor(){super(32),this.Ah=ni[0]|0,this.Al=ni[1]|0,this.Bh=ni[2]|0,this.Bl=ni[3]|0,this.Ch=ni[4]|0,this.Cl=ni[5]|0,this.Dh=ni[6]|0,this.Dl=ni[7]|0,this.Eh=ni[8]|0,this.El=ni[9]|0,this.Fh=ni[10]|0,this.Fl=ni[11]|0,this.Gh=ni[12]|0,this.Gl=ni[13]|0,this.Hh=ni[14]|0,this.Hl=ni[15]|0}}const o1=_0(()=>new pie),vie=_0(()=>new _T),bie=_0(()=>new yie),Eie=_0(()=>new wie),_ie=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9]),hr=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Be=new Uint32Array(32);function Bc(t,e,n,r,i,s){const o=i[s],a=i[s+1];let c=Be[2*t],l=Be[2*t+1],u=Be[2*e],d=Be[2*e+1],h=Be[2*n],f=Be[2*n+1],g=Be[2*r],m=Be[2*r+1],y=mT(c,u,o);l=yT(y,l,d,a),c=y|0,{Dh:m,Dl:g}={Dh:m^l,Dl:g^c},{Dh:m,Dl:g}={Dh:Bre(m,g),Dl:Fre(m)},{h:f,l:h}=Ao(f,h,m,g),{Bh:d,Bl:u}={Bh:d^f,Bl:u^h},{Bh:d,Bl:u}={Bh:Qc(d,u,24),Bl:el(d,u,24)},Be[2*t]=c,Be[2*t+1]=l,Be[2*e]=u,Be[2*e+1]=d,Be[2*n]=h,Be[2*n+1]=f,Be[2*r]=g,Be[2*r+1]=m}function Fc(t,e,n,r,i,s){const o=i[s],a=i[s+1];let c=Be[2*t],l=Be[2*t+1],u=Be[2*e],d=Be[2*e+1],h=Be[2*n],f=Be[2*n+1],g=Be[2*r],m=Be[2*r+1],y=mT(c,u,o);l=yT(y,l,d,a),c=y|0,{Dh:m,Dl:g}={Dh:m^l,Dl:g^c},{Dh:m,Dl:g}={Dh:Qc(m,g,16),Dl:el(m,g,16)},{h:f,l:h}=Ao(f,h,m,g),{Bh:d,Bl:u}={Bh:d^f,Bl:u^h},{Bh:d,Bl:u}={Bh:sg(d,u,63),Bl:og(d,u,63)},Be[2*t]=c,Be[2*t+1]=l,Be[2*e]=u,Be[2*e+1]=d,Be[2*n]=h,Be[2*n+1]=f,Be[2*r]=g,Be[2*r+1]=m}function Sie(t,e={},n,r,i){if(yc(n),t<0||t>n)throw new Error("outputLen bigger than keyLen");const{key:s,salt:o,personalization:a}=e;if(s!==void 0&&(s.length<1||s.length>n))throw new Error("key length must be undefined or 1.."+n);if(o!==void 0&&o.length!==r)throw new Error("salt must be undefined or "+r);if(a!==void 0&&a.length!==i)throw new Error("personalization must be undefined or "+i)}class xie extends s1{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,this.length=0,this.pos=0,yc(e),yc(n),this.blockLen=e,this.outputLen=n,this.buffer=new Uint8Array(e),this.buffer32=Sm(this.buffer)}update(e){Bl(this),e=Fo(e),oo(e);const{blockLen:n,buffer:r,buffer32:i}=this,s=e.length,o=e.byteOffset,a=e.buffer;for(let c=0;ci[o]=Wa(s))}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){const{buffer:n,length:r,finished:i,destroyed:s,outputLen:o,pos:a}=this;return e||(e=new this.constructor({dkLen:o})),e.set(...this.get()),e.buffer.set(n),e.destroyed=s,e.finished=i,e.length=r,e.pos=a,e.outputLen=o,e}clone(){return this._cloneInto()}}class Aie extends xie{constructor(e={}){const n=e.dkLen===void 0?64:e.dkLen;super(128,n),this.v0l=hr[0]|0,this.v0h=hr[1]|0,this.v1l=hr[2]|0,this.v1h=hr[3]|0,this.v2l=hr[4]|0,this.v2h=hr[5]|0,this.v3l=hr[6]|0,this.v3h=hr[7]|0,this.v4l=hr[8]|0,this.v4h=hr[9]|0,this.v5l=hr[10]|0,this.v5h=hr[11]|0,this.v6l=hr[12]|0,this.v6h=hr[13]|0,this.v7l=hr[14]|0,this.v7h=hr[15]|0,Sie(n,e,64,16,16);let{key:r,personalization:i,salt:s}=e,o=0;if(r!==void 0&&(r=Fo(r),o=r.length),this.v0l^=this.outputLen|o<<8|65536|1<<24,s!==void 0){s=Fo(s);const a=Sm(s);this.v4l^=Wa(a[0]),this.v4h^=Wa(a[1]),this.v5l^=Wa(a[2]),this.v5h^=Wa(a[3])}if(i!==void 0){i=Fo(i);const a=Sm(i);this.v6l^=Wa(a[0]),this.v6h^=Wa(a[1]),this.v7l^=Wa(a[2]),this.v7h^=Wa(a[3])}if(r!==void 0){const a=new Uint8Array(this.blockLen);a.set(r),this.update(a)}}get(){let{v0l:e,v0h:n,v1l:r,v1h:i,v2l:s,v2h:o,v3l:a,v3h:c,v4l:l,v4h:u,v5l:d,v5h:h,v6l:f,v6h:g,v7l:m,v7h:y}=this;return[e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y]}set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){this.v0l=e|0,this.v0h=n|0,this.v1l=r|0,this.v1h=i|0,this.v2l=s|0,this.v2h=o|0,this.v3l=a|0,this.v3h=c|0,this.v4l=l|0,this.v4h=u|0,this.v5l=d|0,this.v5h=h|0,this.v6l=f|0,this.v6h=g|0,this.v7l=m|0,this.v7h=y|0}compress(e,n,r){this.get().forEach((c,l)=>Be[l]=c),Be.set(hr,16);let{h:i,l:s}=E8(BigInt(this.length));Be[24]=hr[8]^s,Be[25]=hr[9]^i,r&&(Be[28]=~Be[28],Be[29]=~Be[29]);let o=0;const a=_ie;for(let c=0;c<12;c++)Bc(0,4,8,12,e,n+2*a[o++]),Fc(0,4,8,12,e,n+2*a[o++]),Bc(1,5,9,13,e,n+2*a[o++]),Fc(1,5,9,13,e,n+2*a[o++]),Bc(2,6,10,14,e,n+2*a[o++]),Fc(2,6,10,14,e,n+2*a[o++]),Bc(3,7,11,15,e,n+2*a[o++]),Fc(3,7,11,15,e,n+2*a[o++]),Bc(0,5,10,15,e,n+2*a[o++]),Fc(0,5,10,15,e,n+2*a[o++]),Bc(1,6,11,12,e,n+2*a[o++]),Fc(1,6,11,12,e,n+2*a[o++]),Bc(2,7,8,13,e,n+2*a[o++]),Fc(2,7,8,13,e,n+2*a[o++]),Bc(3,4,9,14,e,n+2*a[o++]),Fc(3,4,9,14,e,n+2*a[o++]);this.v0l^=Be[0]^Be[16],this.v0h^=Be[1]^Be[17],this.v1l^=Be[2]^Be[18],this.v1h^=Be[3]^Be[19],this.v2l^=Be[4]^Be[20],this.v2h^=Be[5]^Be[21],this.v3l^=Be[6]^Be[22],this.v3h^=Be[7]^Be[23],this.v4l^=Be[8]^Be[24],this.v4h^=Be[9]^Be[25],this.v5l^=Be[10]^Be[26],this.v5h^=Be[11]^Be[27],this.v6l^=Be[12]^Be[28],this.v6h^=Be[13]^Be[29],this.v7l^=Be[14]^Be[30],this.v7h^=Be[15]^Be[31],ao(Be)}destroy(){this.destroyed=!0,ao(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Cie=Jre(t=>new Aie(t)),Tie="https://rpc.walletconnect.org/v1";function R8(t){const e=`Ethereum Signed Message: +${t.length}`,n=new TextEncoder().encode(e+t);return"0x"+Buffer.from(lie(n)).toString("hex")}async function Iie(t,e,n,r,i,s){switch(n.t){case"eip191":return await Mie(t,e,n.s);case"eip1271":return await Nie(t,e,n.s,r,i,s);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`)}}async function Mie(t,e,n){return(await yte({hash:R8(e),signature:n})).toLowerCase()===t.toLowerCase()}async function Nie(t,e,n,r,i,s){const o=rf(r);if(!o.namespace||!o.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const a="0x1626ba7e",c="0000000000000000000000000000000000000000000000000000000000000040",l=n.substring(2),u=(l.length/2).toString(16).padStart(64,"0"),d=(e.startsWith("0x")?e:R8(e)).substring(2),h=a+d+c+u+l,f=await fetch(`${s||Tie}/?chainId=${r}&projectId=${i}`,{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({id:Pie(),jsonrpc:"2.0",method:"eth_call",params:[{to:t,data:h},"latest"]})}),{result:g}=await f.json();return g?g.slice(0,a.length).toLowerCase()===a.toLowerCase():!1}catch(a){return console.error("isValidEip1271Signature: ",a),!1}}function Pie(){return Date.now()+Math.floor(Math.random()*1e3)}function Die(t){const e=atob(t),n=new Uint8Array(e.length);for(let o=0;os.charCodeAt(0)),r=new Uint8Array(n.length+e.length);r.set(n),r.set(e,n.length);const i=Cie(r,{dkLen:32});return sp.encode(i)}function u3(t){const e=new Uint8Array(o1(Oie(t)));return sp.encode(e)}function Oie(t){if(t instanceof Uint8Array)return t;if(Array.isArray(t))return new Uint8Array(t);if(typeof t=="object"&&t!=null&&t.data)return new Uint8Array(Object.values(t.data));if(typeof t=="object"&&t)return new Uint8Array(Object.values(t));throw new Error("getNearUint8ArrayFromBytes: Unexpected result type from bytes array")}function d3(t){const e=Buffer.from(t,"base64"),n=tne(e).txn;if(!n)throw new Error("Invalid signed transaction: missing 'txn' field");const r=Gte(n),i=Buffer.from("TX"),s=Buffer.concat([i,Buffer.from(r)]),o=Eie(s);return cK.encode(o).replace(/=+$/,"")}function $E(t){const e=[];let n=BigInt(t);for(;n>=BigInt(128);)e.push(Number(n&BigInt(127)|BigInt(128))),n>>=BigInt(7);return e.push(Number(n)),Buffer.from(e)}function Uie(t){const e=Buffer.from(t.signed.bodyBytes,"base64"),n=Buffer.from(t.signed.authInfoBytes,"base64"),r=Buffer.from(t.signature.signature,"base64"),i=[];i.push(Buffer.from([10])),i.push($E(e.length)),i.push(e),i.push(Buffer.from([18])),i.push($E(n.length)),i.push(n),i.push(Buffer.from([26])),i.push($E(r.length)),i.push(r);const s=Buffer.concat(i),o=o1(s);return Buffer.from(o).toString("hex").toUpperCase()}var Lie=Object.defineProperty,kie=Object.defineProperties,$ie=Object.getOwnPropertyDescriptors,h3=Object.getOwnPropertySymbols,Bie=Object.prototype.hasOwnProperty,Fie=Object.prototype.propertyIsEnumerable,f3=(t,e,n)=>e in t?Lie(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,zie=(t,e)=>{for(var n in e||(e={}))Bie.call(e,n)&&f3(t,n,e[n]);if(h3)for(var n of h3(e))Fie.call(e,n)&&f3(t,n,e[n]);return t},Hie=(t,e)=>kie(t,$ie(e));const jie="did:pkh:",ST=t=>t==null?void 0:t.split(":"),Vie=t=>{const e=t&&ST(t);if(e)return t.includes(jie)?e[3]:e[1]},zx=t=>{const e=t&&ST(t);if(e)return e[2]+":"+e[3]},nb=t=>{const e=t&&ST(t);if(e)return e.pop()};async function p3(t){const{cacao:e,projectId:n}=t,{s:r,p:i}=e,s=O8(i,i.iss),o=nb(i.iss);return await Iie(o,s,r,zx(i.iss),n)}const O8=(t,e)=>{const n=`${t.domain} wants you to sign in with your Ethereum account:`,r=nb(e);if(!t.aud&&!t.uri)throw new Error("Either `aud` or `uri` is required to construct the message");let i=t.statement||void 0;const s=`URI: ${t.aud||t.uri}`,o=`Version: ${t.version}`,a=`Chain ID: ${Vie(e)}`,c=`Nonce: ${t.nonce}`,l=`Issued At: ${t.iat}`,u=t.exp?`Expiration Time: ${t.exp}`:void 0,d=t.nbf?`Not Before: ${t.nbf}`:void 0,h=t.requestId?`Request ID: ${t.requestId}`:void 0,f=t.resources?`Resources:${t.resources.map(m=>` +- ${m}`).join("")}`:void 0,g=zw(t.resources);if(g){const m=Am(g);i=Qie(i,m)}return[n,r,"",i,"",s,o,a,c,l,u,d,h,f].filter(m=>m!=null).join(` +`)};function Wie(t){return Buffer.from(JSON.stringify(t)).toString("base64")}function Gie(t){return JSON.parse(Buffer.from(t,"base64").toString("utf-8"))}function ld(t){if(!t)throw new Error("No recap provided, value is undefined");if(!t.att)throw new Error("No `att` property found");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error("No resources found in `att` property");e.forEach(n=>{const r=t.att[n];if(Array.isArray(r))throw new Error(`Resource must be an object: ${n}`);if(typeof r!="object")throw new Error(`Resource must be an object: ${n}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${n}`);Object.keys(r).forEach(i=>{const s=r[i];if(!Array.isArray(s))throw new Error(`Ability limits ${i} must be an array of objects, found: ${s}`);if(!s.length)throw new Error(`Value of ${i} is empty array, must be an array with objects`);s.forEach(o=>{if(typeof o!="object")throw new Error(`Ability limits (${i}) must be an array of objects, found: ${o}`)})})})}function qie(t,e,n,r={}){return n==null||n.sort((i,s)=>i.localeCompare(s)),{att:{[t]:Kie(e,n,r)}}}function Kie(t,e,n={}){e=e==null?void 0:e.sort((i,s)=>i.localeCompare(s));const r=e.map(i=>({[`${t}/${i}`]:[n]}));return Object.assign({},...r)}function U8(t){return ld(t),`urn:recap:${Wie(t).replace(/=/g,"")}`}function Am(t){const e=Gie(t.replace("urn:recap:",""));return ld(e),e}function Xie(t,e,n){const r=qie(t,e,n);return U8(r)}function Yie(t){return t&&t.includes("urn:recap:")}function Zie(t,e){const n=Am(t),r=Am(e),i=Jie(n,r);return U8(i)}function Jie(t,e){ld(t),ld(e);const n=Object.keys(t.att).concat(Object.keys(e.att)).sort((i,s)=>i.localeCompare(s)),r={att:{}};return n.forEach(i=>{var s,o;Object.keys(((s=t.att)==null?void 0:s[i])||{}).concat(Object.keys(((o=e.att)==null?void 0:o[i])||{})).sort((a,c)=>a.localeCompare(c)).forEach(a=>{var c,l;r.att[i]=Hie(zie({},r.att[i]),{[a]:((c=t.att[i])==null?void 0:c[a])||((l=e.att[i])==null?void 0:l[a])})})}),r}function Qie(t="",e){ld(e);const n="I further authorize the stated URI to perform the following actions on my behalf: ";if(t.includes(n))return t;const r=[];let i=0;Object.keys(e.att).forEach(a=>{const c=Object.keys(e.att[a]).map(d=>({ability:d.split("/")[0],action:d.split("/")[1]}));c.sort((d,h)=>d.action.localeCompare(h.action));const l={};c.forEach(d=>{l[d.ability]||(l[d.ability]=[]),l[d.ability].push(d.action)});const u=Object.keys(l).map(d=>(i++,`(${i}) '${d}': '${l[d].join("', '")}' for '${a}'.`));r.push(u.join(", ").replace(".,","."))});const s=r.join(" "),o=`${n}${s}`;return`${t?t+" ":""}${o}`}function g3(t){var e;const n=Am(t);ld(n);const r=(e=n.att)==null?void 0:e.eip155;return r?Object.keys(r).map(i=>i.split("/")[1]):[]}function m3(t){const e=Am(t);ld(e);const n=[];return Object.values(e.att).forEach(r=>{Object.values(r).forEach(i=>{var s;(s=i==null?void 0:i[0])!=null&&s.chains&&n.push(i[0].chains)})}),[...new Set(n.flat())]}function zw(t){if(!t)return;const e=t==null?void 0:t[t.length-1];return Yie(e)?e:void 0}/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */function L8(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function Hx(t){if(typeof t!="boolean")throw new Error(`boolean expected, not ${t}`)}function BE(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function Hi(t,...e){if(!L8(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function y3(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function ese(t,e){Hi(t);const n=e.outputLen;if(t.length{function n(r,...i){if(Hi(r),!nse)throw new Error("Non little-endian hardware is not yet supported");if(t.nonceLength!==void 0){const l=i[0];if(!l)throw new Error("nonce / iv required");t.varSizeNonce?Hi(l):Hi(l,t.nonceLength)}const s=t.tagLength;s&&i[1]!==void 0&&Hi(i[1]);const o=e(r,...i),a=(l,u)=>{if(u!==void 0){if(l!==2)throw new Error("cipher output not supported");Hi(u)}};let c=!1;return{encrypt(l,u){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,Hi(l),a(o.encrypt.length,u),o.encrypt(l,u)},decrypt(l,u){if(Hi(l),s&&l.length>i&s),a=Number(n&s);t.setUint32(e+4,o,r),t.setUint32(e+0,a,r)}function ase(t,e,n){Hx(n);const r=new Uint8Array(16),i=tse(r);return v3(i,0,BigInt(e),n),v3(i,8,BigInt(t),n),r}function cse(t){return t.byteOffset%4===0}function Vx(t){return Uint8Array.from(t)}const k8=t=>Uint8Array.from(t.split("").map(e=>e.charCodeAt(0))),lse=k8("expand 16-byte k"),use=k8("expand 32-byte k"),dse=Tl(lse),hse=Tl(use);function tn(t,e){return t<>>32-e}function Wx(t){return t.byteOffset%4===0}const Ty=64,fse=16,$8=2**32-1,b3=new Uint32Array;function pse(t,e,n,r,i,s,o,a){const c=i.length,l=new Uint8Array(Ty),u=Tl(l),d=Wx(i)&&Wx(s),h=d?Tl(i):b3,f=d?Tl(s):b3;for(let g=0;g=$8)throw new Error("arx: counter overflow");const m=Math.min(Ty,c-g);if(d&&m===Ty){const y=g/4;if(g%4!==0)throw new Error("arx: invalid block position");for(let p=0,v;p{Hi(a),Hi(c),Hi(l);const h=l.length;if(u===void 0&&(u=new Uint8Array(h)),Hi(u),BE(d),d<0||d>=$8)throw new Error("arx: counter overflow");if(u.lengtht[e++]&255|(t[e++]&255)<<8;class mse{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=jx(e),Hi(e,32);const n=Dr(e,0),r=Dr(e,2),i=Dr(e,4),s=Dr(e,6),o=Dr(e,8),a=Dr(e,10),c=Dr(e,12),l=Dr(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|i<<6)&7939,this.r[3]=(i>>>7|s<<9)&8191,this.r[4]=(s>>>4|o<<12)&255,this.r[5]=o>>>1&8190,this.r[6]=(o>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let u=0;u<8;u++)this.pad[u]=Dr(e,16+2*u)}process(e,n,r=!1){const i=r?0:2048,{h:s,r:o}=this,a=o[0],c=o[1],l=o[2],u=o[3],d=o[4],h=o[5],f=o[6],g=o[7],m=o[8],y=o[9],p=Dr(e,n+0),v=Dr(e,n+2),w=Dr(e,n+4),b=Dr(e,n+6),S=Dr(e,n+8),x=Dr(e,n+10),T=Dr(e,n+12),N=Dr(e,n+14);let _=s[0]+(p&8191),E=s[1]+((p>>>13|v<<3)&8191),A=s[2]+((v>>>10|w<<6)&8191),L=s[3]+((w>>>7|b<<9)&8191),$=s[4]+((b>>>4|S<<12)&8191),W=s[5]+(S>>>1&8191),C=s[6]+((S>>>14|x<<2)&8191),I=s[7]+((x>>>11|T<<5)&8191),F=s[8]+((T>>>8|N<<8)&8191),D=s[9]+(N>>>5|i),k=0,R=k+_*a+E*(5*y)+A*(5*m)+L*(5*g)+$*(5*f);k=R>>>13,R&=8191,R+=W*(5*h)+C*(5*d)+I*(5*u)+F*(5*l)+D*(5*c),k+=R>>>13,R&=8191;let q=k+_*c+E*a+A*(5*y)+L*(5*m)+$*(5*g);k=q>>>13,q&=8191,q+=W*(5*f)+C*(5*h)+I*(5*d)+F*(5*u)+D*(5*l),k+=q>>>13,q&=8191;let ne=k+_*l+E*c+A*a+L*(5*y)+$*(5*m);k=ne>>>13,ne&=8191,ne+=W*(5*g)+C*(5*f)+I*(5*h)+F*(5*d)+D*(5*u),k+=ne>>>13,ne&=8191;let X=k+_*u+E*l+A*c+L*a+$*(5*y);k=X>>>13,X&=8191,X+=W*(5*m)+C*(5*g)+I*(5*f)+F*(5*h)+D*(5*d),k+=X>>>13,X&=8191;let G=k+_*d+E*u+A*l+L*c+$*a;k=G>>>13,G&=8191,G+=W*(5*y)+C*(5*m)+I*(5*g)+F*(5*f)+D*(5*h),k+=G>>>13,G&=8191;let te=k+_*h+E*d+A*u+L*l+$*c;k=te>>>13,te&=8191,te+=W*a+C*(5*y)+I*(5*m)+F*(5*g)+D*(5*f),k+=te>>>13,te&=8191;let le=k+_*f+E*h+A*d+L*u+$*l;k=le>>>13,le&=8191,le+=W*c+C*a+I*(5*y)+F*(5*m)+D*(5*g),k+=le>>>13,le&=8191;let ge=k+_*g+E*f+A*h+L*d+$*u;k=ge>>>13,ge&=8191,ge+=W*l+C*c+I*a+F*(5*y)+D*(5*m),k+=ge>>>13,ge&=8191;let Ce=k+_*m+E*g+A*f+L*h+$*d;k=Ce>>>13,Ce&=8191,Ce+=W*u+C*l+I*c+F*a+D*(5*y),k+=Ce>>>13,Ce&=8191;let xe=k+_*y+E*m+A*g+L*f+$*h;k=xe>>>13,xe&=8191,xe+=W*d+C*u+I*l+F*c+D*a,k+=xe>>>13,xe&=8191,k=(k<<2)+k|0,k=k+R|0,R=k&8191,k=k>>>13,q+=k,s[0]=R,s[1]=q,s[2]=ne,s[3]=X,s[4]=G,s[5]=te,s[6]=le,s[7]=ge,s[8]=Ce,s[9]=xe}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let i=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=i,i=e[a]>>>13,e[a]&=8191;e[0]+=i*5,i=e[0]>>>13,e[0]&=8191,e[1]+=i,i=e[1]>>>13,e[1]&=8191,e[2]+=i,r[0]=e[0]+5,i=r[0]>>>13,r[0]&=8191;for(let a=1;a<10;a++)r[a]=e[a]+i,i=r[a]>>>13,r[a]&=8191;r[9]-=8192;let s=(i^1)-1;for(let a=0;a<10;a++)r[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|r[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let o=e[0]+n[0];e[0]=o&65535;for(let a=1;a<8;a++)o=(e[a]+n[a]|0)+(o>>>16)|0,e[a]=o&65535;Pf(r)}update(e){y3(this),e=jx(e),Hi(e);const{buffer:n,blockLen:r}=this,i=e.length;for(let s=0;s>>0,e[s++]=r[o]>>>8;return e}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}function yse(t){const e=(r,i)=>t(i).update(jx(r)).digest(),n=t(new Uint8Array(32));return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}const wse=yse(t=>new mse(t));function vse(t,e,n,r,i,s=20){let o=t[0],a=t[1],c=t[2],l=t[3],u=e[0],d=e[1],h=e[2],f=e[3],g=e[4],m=e[5],y=e[6],p=e[7],v=i,w=n[0],b=n[1],S=n[2],x=o,T=a,N=c,_=l,E=u,A=d,L=h,$=f,W=g,C=m,I=y,F=p,D=v,k=w,R=b,q=S;for(let X=0;X{t.update(e);const n=e.length%16;n&&t.update(Ese.subarray(n))},_se=new Uint8Array(32);function _3(t,e,n,r,i){const s=t(e,n,_se),o=wse.create(s);i&&E3(o,i),E3(o,r);const a=ase(r.length,i?i.length:0,!0);o.update(a);const c=o.digest();return Pf(s,a),c}const Sse=t=>(e,n,r)=>({encrypt(i,s){const o=i.length;s=w3(o+16,s,!1),s.set(i);const a=s.subarray(0,-16);t(e,n,a,a,1);const c=_3(t,e,n,a,r);return s.set(c,o),Pf(c),s},decrypt(i,s){s=w3(i.length-16,s,!1);const o=i.subarray(0,-16),a=i.subarray(-16),c=_3(t,e,n,o,r);if(!sse(a,c))throw new Error("invalid tag");return s.set(i.subarray(0,-16)),t(e,n,s,s,1),Pf(c),s}}),B8=ose({blockSize:64,nonceLength:12,tagLength:16},Sse(bse));let F8=class extends s1{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,vT(e);const r=Fo(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,s=new Uint8Array(i);s.set(r.length>i?e.create().update(r).digest():r);for(let o=0;onew F8(t,e).update(n).digest();a1.create=(t,e)=>new F8(t,e);function xse(t,e,n){return vT(t),n===void 0&&(n=new Uint8Array(t.outputLen)),a1(t,Fo(n),Fo(e))}const FE=Uint8Array.from([0]),S3=Uint8Array.of();function Ase(t,e,n,r=32){vT(t),yc(r);const i=t.outputLen;if(r>255*i)throw new Error("Length should be <= 255*HashLen");const s=Math.ceil(r/i);n===void 0&&(n=S3);const o=new Uint8Array(s*i),a=a1.create(t,e),c=a._cloneInto(),l=new Uint8Array(a.outputLen);for(let u=0;uAse(t,xse(t,e,n),r,i),c1=o1,xT=BigInt(0),Gx=BigInt(1);function rb(t,e){if(typeof e!="boolean")throw new Error(t+" boolean expected, got "+e)}function Iy(t){const e=t.toString(16);return e.length&1?"0"+e:e}function z8(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?xT:BigInt("0x"+t)}function l1(t){return z8(xm(t))}function ib(t){return oo(t),z8(xm(Uint8Array.from(t).reverse()))}function AT(t,e){return ET(t.toString(16).padStart(e*2,"0"))}function CT(t,e){return AT(t,e).reverse()}function zi(t,e,n){let r;if(typeof e=="string")try{r=ET(e)}catch(s){throw new Error(t+" must be hex string or Uint8Array, cause: "+s)}else if(wT(e))r=Uint8Array.from(e);else throw new Error(t+" must be hex string or Uint8Array");const i=r.length;if(typeof n=="number"&&i!==n)throw new Error(t+" of length "+n+" expected, got "+i);return r}const zE=t=>typeof t=="bigint"&&xT<=t;function Tse(t,e,n){return zE(t)&&zE(e)&&zE(n)&&e<=t&&txT;t>>=Gx,e+=1);return e}const u1=t=>(Gx<new Uint8Array(h),i=h=>Uint8Array.of(h);let s=r(t),o=r(t),a=0;const c=()=>{s.fill(1),o.fill(0),a=0},l=(...h)=>n(o,s,...h),u=(h=r(0))=>{o=l(i(0),h),s=l(),h.length!==0&&(o=l(i(1),h),s=l())},d=()=>{if(a++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const f=[];for(;h{c(),u(h);let g;for(;!(g=f(d()));)u();return c(),g}}function d1(t,e,n={}){if(!t||typeof t!="object")throw new Error("expected valid options object");function r(i,s,o){const a=t[i];if(o&&a===void 0)return;const c=typeof a;if(c!==s||a===null)throw new Error(`param "${i}" is invalid: expected ${s}, got ${c}`)}Object.entries(e).forEach(([i,s])=>r(i,s,!1)),Object.entries(n).forEach(([i,s])=>r(i,s,!0))}function x3(t){const e=new WeakMap;return(n,...r)=>{const i=e.get(n);if(i!==void 0)return i;const s=t(n,...r);return e.set(n,s),s}}const Gi=BigInt(0),Ei=BigInt(1),Lu=BigInt(2),Nse=BigInt(3),H8=BigInt(4),j8=BigInt(5),V8=BigInt(8);function Ws(t,e){const n=t%e;return n>=Gi?n:e+n}function xo(t,e,n){let r=t;for(;e-- >Gi;)r*=r,r%=n;return r}function A3(t,e){if(t===Gi)throw new Error("invert: expected non-zero number");if(e<=Gi)throw new Error("invert: expected positive modulus, got "+e);let n=Ws(t,e),r=e,i=Gi,s=Ei;for(;n!==Gi;){const o=r/n,a=r%n,c=i-s*o;r=n,n=a,i=s,s=c}if(r!==Ei)throw new Error("invert: does not exist");return Ws(i,e)}function W8(t,e){const n=(t.ORDER+Ei)/H8,r=t.pow(e,n);if(!t.eql(t.sqr(r),e))throw new Error("Cannot find square root");return r}function Pse(t,e){const n=(t.ORDER-j8)/V8,r=t.mul(e,Lu),i=t.pow(r,n),s=t.mul(e,i),o=t.mul(t.mul(s,Lu),i),a=t.mul(s,t.sub(o,t.ONE));if(!t.eql(t.sqr(a),e))throw new Error("Cannot find square root");return a}function Dse(t){if(t1e3)throw new Error("Cannot find square root: probably non-prime P");if(n===1)return W8;let s=i.pow(r,e);const o=(e+Ei)/Lu;return function(a,c){if(a.is0(c))return c;if(C3(a,c)!==1)throw new Error("Cannot find square root");let l=n,u=a.mul(a.ONE,s),d=a.pow(c,e),h=a.pow(c,o);for(;!a.eql(d,a.ONE);){if(a.is0(d))return a.ZERO;let f=1,g=a.sqr(d);for(;!a.eql(g,a.ONE);)if(f++,g=a.sqr(g),f===l)throw new Error("Cannot find square root");const m=Ei<(r[i]="function",r),e);return d1(t,n),t}function Lse(t,e,n){if(nGi;)n&Ei&&(r=t.mul(r,i)),i=t.sqr(i),n>>=Ei;return r}function G8(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),i=e.reduce((o,a,c)=>t.is0(a)?o:(r[c]=o,t.mul(o,a)),t.ONE),s=t.inv(i);return e.reduceRight((o,a,c)=>t.is0(a)?o:(r[c]=t.mul(o,r[c]),t.mul(o,a)),s),r}function C3(t,e){const n=(t.ORDER-Ei)/Lu,r=t.pow(e,n),i=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),o=t.eql(r,t.neg(t.ONE));if(!i&&!s&&!o)throw new Error("invalid Legendre symbol result");return i?1:s?0:-1}function kse(t,e){e!==void 0&&yc(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function cp(t,e,n=!1,r={}){if(t<=Gi)throw new Error("invalid field: expected ORDER > 0, got "+t);let i,s;if(typeof e=="object"&&e!=null){if(r.sqrt||n)throw new Error("cannot specify opts in two arguments");const u=e;u.BITS&&(i=u.BITS),u.sqrt&&(s=u.sqrt),typeof u.isLE=="boolean"&&(n=u.isLE)}else typeof e=="number"&&(i=e),r.sqrt&&(s=r.sqrt);const{nBitLength:o,nByteLength:a}=kse(t,i);if(a>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let c;const l=Object.freeze({ORDER:t,isLE:n,BITS:o,BYTES:a,MASK:u1(o),ZERO:Gi,ONE:Ei,create:u=>Ws(u,t),isValid:u=>{if(typeof u!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof u);return Gi<=u&&uu===Gi,isValidNot0:u=>!l.is0(u)&&l.isValid(u),isOdd:u=>(u&Ei)===Ei,neg:u=>Ws(-u,t),eql:(u,d)=>u===d,sqr:u=>Ws(u*u,t),add:(u,d)=>Ws(u+d,t),sub:(u,d)=>Ws(u-d,t),mul:(u,d)=>Ws(u*d,t),pow:(u,d)=>Lse(l,u,d),div:(u,d)=>Ws(u*A3(d,t),t),sqrN:u=>u*u,addN:(u,d)=>u+d,subN:(u,d)=>u-d,mulN:(u,d)=>u*d,inv:u=>A3(u,t),sqrt:s||(u=>(c||(c=Rse(t)),c(l,u))),toBytes:u=>n?CT(u,a):AT(u,a),fromBytes:u=>{if(u.length!==a)throw new Error("Field.fromBytes: expected "+a+" bytes, got "+u.length);return n?ib(u):l1(u)},invertBatch:u=>G8(l,u),cmov:(u,d,h)=>h?d:u});return Object.freeze(l)}function q8(t){if(typeof t!="bigint")throw new Error("field order must be bigint");const e=t.toString(2).length;return Math.ceil(e/8)}function K8(t){const e=q8(t);return e+Math.ceil(e/2)}function $se(t,e,n=!1){const r=t.length,i=q8(e),s=K8(e);if(r<16||r1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const o=n?ib(t):l1(t),a=Ws(o,e-Ei)+Ei;return n?CT(a,i):AT(a,i)}const Df=BigInt(0),ku=BigInt(1);function Ng(t,e){const n=e.negate();return t?n:e}function Bse(t,e,n){const r=s=>s.pz,i=G8(t.Fp,n.map(r));return n.map((s,o)=>s.toAffine(i[o])).map(t.fromAffine)}function X8(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+t)}function HE(t,e){X8(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),i=2**t,s=u1(t),o=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:i,shiftBy:o}}function T3(t,e,n){const{windowSize:r,mask:i,maxNumber:s,shiftBy:o}=n;let a=Number(t&i),c=t>>o;a>r&&(a-=s,c+=ku);const l=e*r,u=l+Math.abs(a)-1,d=a===0,h=a<0,f=e%2!==0;return{nextN:c,offset:u,isZero:d,isNeg:h,isNegF:f,offsetF:l}}function Fse(t,e){if(!Array.isArray(t))throw new Error("array expected");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error("invalid point at index "+r)})}function zse(t,e){if(!Array.isArray(t))throw new Error("array of scalars expected");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error("invalid scalar at index "+r)})}const jE=new WeakMap,Y8=new WeakMap;function VE(t){return Y8.get(t)||1}function I3(t){if(t!==Df)throw new Error("invalid wNAF")}function Hse(t,e){return{constTimeNegate:Ng,hasPrecomputes(n){return VE(n)!==1},unsafeLadder(n,r,i=t.ZERO){let s=n;for(;r>Df;)r&ku&&(i=i.add(s)),s=s.double(),r>>=ku;return i},precomputeWindow(n,r){const{windows:i,windowSize:s}=HE(r,e),o=[];let a=n,c=a;for(let l=0;lDf||r>Df;)n&ku&&(s=s.add(i)),r&ku&&(o=o.add(i)),i=i.double(),n>>=ku,r>>=ku;return{p1:s,p2:o}}function Vse(t,e,n,r){Fse(n,t),zse(r,e);const i=n.length,s=r.length;if(i!==s)throw new Error("arrays of points and scalars must have equal length");const o=t.ZERO,a=Ise(BigInt(i));let c=1;a>12?c=a-3:a>4?c=a-2:a>0&&(c=2);const l=u1(c),u=new Array(Number(l)+1).fill(o),d=Math.floor((e.BITS-1)/c)*c;let h=o;for(let f=d;f>=0;f-=c){u.fill(o);for(let m=0;m>BigInt(f)&l);u[p]=u[p].add(n[m])}let g=o;for(let m=u.length-1,y=o;m>0;m--)y=y.add(u[m]),g=g.add(y);if(h=h.add(g),f!==0)for(let m=0;mDf))throw new Error(`CURVE.${o} must be positive bigint`)}const r=M3(e.p,n.Fp),i=M3(e.n,n.Fn),s=["Gx","Gy","a","b"];for(const o of s)if(!r.isValid(e[o]))throw new Error(`CURVE.${o} must be valid field element of CURVE.Fp`);return{Fp:r,Fn:i}}BigInt(0),BigInt(1),BigInt(2),BigInt(8);const Op=BigInt(0),zd=BigInt(1),My=BigInt(2);function Gse(t){return d1(t,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...t})}function qse(t){const e=Gse(t),{P:n,type:r,adjustScalarBytes:i,powPminus2:s,randomBytes:o}=e,a=r==="x25519";if(!a&&r!=="x448")throw new Error("invalid type");const c=o||ap,l=a?255:448,u=a?32:56,d=BigInt(a?9:5),h=BigInt(a?121665:39081),f=a?My**BigInt(254):My**BigInt(447),g=a?BigInt(8)*My**BigInt(251)-zd:BigInt(4)*My**BigInt(445)-zd,m=f+g+zd,y=_=>Ws(_,n),p=v(d);function v(_){return CT(y(_),u)}function w(_){const E=zi("u coordinate",_,u);return a&&(E[31]&=127),y(ib(E))}function b(_){return ib(i(zi("scalar",_,u)))}function S(_,E){const A=N(w(E),b(_));if(A===Op)throw new Error("invalid private or public key received");return v(A)}function x(_){return S(_,p)}function T(_,E,A){const L=y(_*(E-A));return E=y(E-L),A=y(A+L),{x_2:E,x_3:A}}function N(_,E){qx("u",_,Op,n),qx("scalar",E,f,m);const A=E,L=_;let $=zd,W=Op,C=_,I=zd,F=Op;for(let k=BigInt(l-1);k>=Op;k--){const R=A>>k&zd;F^=R,{x_2:$,x_3:C}=T(F,$,C),{x_2:W,x_3:I}=T(F,W,I),F=R;const q=$+W,ne=y(q*q),X=$-W,G=y(X*X),te=ne-G,le=C+I,ge=C-I,Ce=y(ge*q),xe=y(le*X),je=Ce+xe,ht=Ce-xe;C=y(je*je),I=y(L*y(ht*ht)),$=y(ne*G),W=y(te*(ne+y(h*te)))}({x_2:$,x_3:C}=T(F,$,C)),{x_2:W,x_3:I}=T(F,W,I);const D=s(W);return y($*D)}return{scalarMult:S,scalarMultBase:x,getSharedSecret:(_,E)=>S(_,E),getPublicKey:_=>x(_),utils:{randomPrivateKey:()=>c(u)},GuBytes:p.slice()}}BigInt(0);const Kse=BigInt(1),N3=BigInt(2),Xse=BigInt(3),Yse=BigInt(5);BigInt(8);const Z8={p:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Zse(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),i=BigInt(80),s=Z8.p,o=t*t%s*t%s,a=xo(o,N3,s)*o%s,c=xo(a,Kse,s)*t%s,l=xo(c,Yse,s)*c%s,u=xo(l,e,s)*l%s,d=xo(u,n,s)*u%s,h=xo(d,r,s)*d%s,f=xo(h,i,s)*h%s,g=xo(f,i,s)*h%s,m=xo(g,e,s)*l%s;return{pow_p_5_8:xo(m,N3,s)*t%s,b2:o}}function Jse(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Kx=(()=>{const t=Z8.p;return qse({P:t,type:"x25519",powPminus2:e=>{const{pow_p_5_8:n,b2:r}=Zse(e);return Ws(xo(n,Xse,t)*r,t)},adjustScalarBytes:Jse})})();function P3(t){t.lowS!==void 0&&rb("lowS",t.lowS),t.prehash!==void 0&&rb("prehash",t.prehash)}class Qse extends Error{constructor(e=""){super(e)}}const Ya={Err:Qse,_tlv:{encode:(t,e)=>{const{Err:n}=Ya;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length&1)throw new n("tlv.encode: unpadded data");const r=e.length/2,i=Iy(r);if(i.length/2&128)throw new n("tlv.encode: long form length too big");const s=r>127?Iy(i.length/2|128):"";return Iy(t)+s+i+e},decode(t,e){const{Err:n}=Ya;let r=0;if(t<0||t>256)throw new n("tlv.encode: wrong tag");if(e.length<2||e[r++]!==t)throw new n("tlv.decode: wrong tlv");const i=e[r++],s=!!(i&128);let o=0;if(!s)o=i;else{const c=i&127;if(!c)throw new n("tlv.decode(long): indefinite length not supported");if(c>4)throw new n("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+c);if(l.length!==c)throw new n("tlv.decode: length bytes not complete");if(l[0]===0)throw new n("tlv.decode(long): zero leftmost byte");for(const u of l)o=o<<8|u;if(r+=c,o<128)throw new n("tlv.decode(long): not minimal encoding")}const a=e.subarray(r,r+o);if(a.length!==o)throw new n("tlv.decode: wrong value length");return{v:a,l:e.subarray(r+o)}}},_int:{encode(t){const{Err:e}=Ya;if(t{const{px:E,py:A,pz:L}=N;if(n.eql(L,n.ONE))return{x:E,y:A};const $=N.is0();_==null&&(_=$?n.ONE:n.inv(L));const W=n.mul(E,_),C=n.mul(A,_),I=n.mul(L,_);if($)return{x:n.ZERO,y:n.ZERO};if(!n.eql(I,n.ONE))throw new Error("invZ was invalid");return{x:W,y:C}}),w=x3(N=>{if(N.is0()){if(e.allowInfinityPoint&&!n.is0(N.py))return;throw new Error("bad point: ZERO")}const{x:_,y:E}=N.toAffine();if(!n.isValid(_)||!n.isValid(E))throw new Error("bad point: x or y not field elements");if(!f(_,E))throw new Error("bad point: equation left != right");if(!N.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function b(N,_,E,A,L){return E=new S(n.mul(E.px,N),E.py,E.pz),_=Ng(A,_),E=Ng(L,E),_.add(E)}class S{constructor(_,E,A){this.px=y("x",_),this.py=y("y",E,!0),this.pz=y("z",A),Object.freeze(this)}static fromAffine(_){const{x:E,y:A}=_||{};if(!_||!n.isValid(E)||!n.isValid(A))throw new Error("invalid affine point");if(_ instanceof S)throw new Error("projective point not allowed");return n.is0(E)&&n.is0(A)?S.ZERO:new S(E,A,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(_){return Bse(S,"pz",_)}static fromBytes(_){return oo(_),S.fromHex(_)}static fromHex(_){const E=S.fromAffine(d(zi("pointHex",_)));return E.assertValidity(),E}static fromPrivateKey(_){const E=J8(r,e.allowedPrivateKeyLengths,e.wrapPrivateKey);return S.BASE.multiply(E(_))}static msm(_,E){return Vse(S,r,_,E)}precompute(_=8,E=!0){return T.setWindowSize(this,_),E||this.multiply(Ny),this}_setWindowSize(_){this.precompute(_)}assertValidity(){w(this)}hasEvenY(){const{y:_}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(_)}equals(_){p(_);const{px:E,py:A,pz:L}=this,{px:$,py:W,pz:C}=_,I=n.eql(n.mul(E,C),n.mul($,L)),F=n.eql(n.mul(A,C),n.mul(W,L));return I&&F}negate(){return new S(this.px,n.neg(this.py),this.pz)}double(){const{a:_,b:E}=t,A=n.mul(E,Ny),{px:L,py:$,pz:W}=this;let C=n.ZERO,I=n.ZERO,F=n.ZERO,D=n.mul(L,L),k=n.mul($,$),R=n.mul(W,W),q=n.mul(L,$);return q=n.add(q,q),F=n.mul(L,W),F=n.add(F,F),C=n.mul(_,F),I=n.mul(A,R),I=n.add(C,I),C=n.sub(k,I),I=n.add(k,I),I=n.mul(C,I),C=n.mul(q,C),F=n.mul(A,F),R=n.mul(_,R),q=n.sub(D,R),q=n.mul(_,q),q=n.add(q,F),F=n.add(D,D),D=n.add(F,D),D=n.add(D,R),D=n.mul(D,q),I=n.add(I,D),R=n.mul($,W),R=n.add(R,R),D=n.mul(R,q),C=n.sub(C,D),F=n.mul(R,k),F=n.add(F,F),F=n.add(F,F),new S(C,I,F)}add(_){p(_);const{px:E,py:A,pz:L}=this,{px:$,py:W,pz:C}=_;let I=n.ZERO,F=n.ZERO,D=n.ZERO;const k=t.a,R=n.mul(t.b,Ny);let q=n.mul(E,$),ne=n.mul(A,W),X=n.mul(L,C),G=n.add(E,A),te=n.add($,W);G=n.mul(G,te),te=n.add(q,ne),G=n.sub(G,te),te=n.add(E,L);let le=n.add($,C);return te=n.mul(te,le),le=n.add(q,X),te=n.sub(te,le),le=n.add(A,L),I=n.add(W,C),le=n.mul(le,I),I=n.add(ne,X),le=n.sub(le,I),D=n.mul(k,te),I=n.mul(R,X),D=n.add(I,D),I=n.sub(ne,D),D=n.add(ne,D),F=n.mul(I,D),ne=n.add(q,q),ne=n.add(ne,q),X=n.mul(k,X),te=n.mul(R,te),ne=n.add(ne,X),X=n.sub(q,X),X=n.mul(k,X),te=n.add(te,X),q=n.mul(ne,te),F=n.add(F,q),q=n.mul(le,te),I=n.mul(G,I),I=n.sub(I,q),q=n.mul(G,ne),D=n.mul(le,D),D=n.add(D,q),new S(I,F,D)}subtract(_){return this.add(_.negate())}is0(){return this.equals(S.ZERO)}multiply(_){const{endo:E}=e;if(!r.isValidNot0(_))throw new Error("invalid scalar: out of range");let A,L;const $=W=>T.wNAFCached(this,W,S.normalizeZ);if(E){const{k1neg:W,k1:C,k2neg:I,k2:F}=E.splitScalar(_),{p:D,f:k}=$(C),{p:R,f:q}=$(F);L=k.add(q),A=b(E.beta,D,R,W,I)}else{const{p:W,f:C}=$(_);A=W,L=C}return S.normalizeZ([A,L])[0]}multiplyUnsafe(_){const{endo:E}=e,A=this;if(!r.isValid(_))throw new Error("invalid scalar: out of range");if(_===Pg||A.is0())return S.ZERO;if(_===Dg)return A;if(T.hasPrecomputes(this))return this.multiply(_);if(E){const{k1neg:L,k1:$,k2neg:W,k2:C}=E.splitScalar(_),{p1:I,p2:F}=jse(S,A,$,C);return b(E.beta,I,F,L,W)}else return T.wNAFCachedUnsafe(A,_)}multiplyAndAddUnsafe(_,E,A){const L=this.multiplyUnsafe(E).add(_.multiplyUnsafe(A));return L.is0()?void 0:L}toAffine(_){return v(this,_)}isTorsionFree(){const{isTorsionFree:_}=e;return i===Dg?!0:_?_(S,this):T.wNAFCachedUnsafe(this,s).is0()}clearCofactor(){const{clearCofactor:_}=e;return i===Dg?this:_?_(S,this):this.multiplyUnsafe(i)}toBytes(_=!0){return rb("isCompressed",_),this.assertValidity(),u(S,this,_)}toRawBytes(_=!0){return this.toBytes(_)}toHex(_=!0){return xm(this.toBytes(_))}toString(){return``}}S.BASE=new S(t.Gx,t.Gy,n.ONE),S.ZERO=new S(n.ZERO,n.ONE,n.ZERO),S.Fp=n,S.Fn=r;const x=r.BITS,T=Hse(S,e.endo?Math.ceil(x/2):x);return S}function Q8(t){return Uint8Array.of(t?2:3)}function ioe(t,e,n={}){d1(e,{hash:"function"},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const r=e.randomBytes||ap,i=e.hmac||((A,...L)=>a1(e.hash,A,Uu(...L))),{Fp:s,Fn:o}=t,{ORDER:a,BITS:c}=o;function l(A){const L=a>>Dg;return A>L}function u(A){return l(A)?o.neg(A):A}function d(A,L){if(!o.isValidNot0(L))throw new Error(`invalid signature ${A}: out of range 1..CURVE.n`)}class h{constructor(L,$,W){d("r",L),d("s",$),this.r=L,this.s=$,W!=null&&(this.recovery=W),Object.freeze(this)}static fromCompact(L){const $=o.BYTES,W=zi("compactSignature",L,$*2);return new h(o.fromBytes(W.subarray(0,$)),o.fromBytes(W.subarray($,$*2)))}static fromDER(L){const{r:$,s:W}=Ya.toSig(zi("DER",L));return new h($,W)}assertValidity(){}addRecoveryBit(L){return new h(this.r,this.s,L)}recoverPublicKey(L){const $=s.ORDER,{r:W,s:C,recovery:I}=this;if(I==null||![0,1,2,3].includes(I))throw new Error("recovery id invalid");if(a*eoe<$&&I>1)throw new Error("recovery id is ambiguous for h>1 curve");const F=I===2||I===3?W+a:W;if(!s.isValid(F))throw new Error("recovery id 2 or 3 invalid");const D=s.toBytes(F),k=t.fromHex(Uu(Q8((I&1)===0),D)),R=o.inv(F),q=w(zi("msgHash",L)),ne=o.create(-q*R),X=o.create(C*R),G=t.BASE.multiplyUnsafe(ne).add(k.multiplyUnsafe(X));if(G.is0())throw new Error("point at infinify");return G.assertValidity(),G}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new h(this.r,o.neg(this.s),this.recovery):this}toBytes(L){if(L==="compact")return Uu(o.toBytes(this.r),o.toBytes(this.s));if(L==="der")return ET(Ya.hexFromSig(this));throw new Error("invalid format")}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return xm(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return xm(this.toBytes("compact"))}}const f=J8(o,n.allowedPrivateKeyLengths,n.wrapPrivateKey),g={isValidPrivateKey(A){try{return f(A),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{const A=a;return $se(r(K8(A)),A)},precompute(A=8,L=t.BASE){return L.precompute(A,!1)}};function m(A,L=!0){return t.fromPrivateKey(A).toBytes(L)}function y(A){if(typeof A=="bigint")return!1;if(A instanceof t)return!0;const L=zi("key",A).length,$=s.BYTES,W=$+1,C=2*$+1;if(!(n.allowedPrivateKeyLengths||o.BYTES===W))return L===W||L===C}function p(A,L,$=!0){if(y(A)===!0)throw new Error("first arg must be private key");if(y(L)===!1)throw new Error("second arg must be public key");return t.fromHex(L).multiply(f(A)).toBytes($)}const v=e.bits2int||function(A){if(A.length>8192)throw new Error("input is too large");const L=l1(A),$=A.length*8-c;return $>0?L>>BigInt($):L},w=e.bits2int_modN||function(A){return o.create(v(A))},b=u1(c);function S(A){return qx("num < 2^"+c,A,Pg,b),o.toBytes(A)}function x(A,L,$=T){if(["recovered","canonical"].some(G=>G in $))throw new Error("sign() legacy options not supported");const{hash:W}=e;let{lowS:C,prehash:I,extraEntropy:F}=$;C==null&&(C=!0),A=zi("msgHash",A),P3($),I&&(A=zi("prehashed msgHash",W(A)));const D=w(A),k=f(L),R=[S(k),S(D)];if(F!=null&&F!==!1){const G=F===!0?r(s.BYTES):F;R.push(zi("extraEntropy",G))}const q=Uu(...R),ne=D;function X(G){const te=v(G);if(!o.isValidNot0(te))return;const le=o.inv(te),ge=t.BASE.multiply(te).toAffine(),Ce=o.create(ge.x);if(Ce===Pg)return;const xe=o.create(le*o.create(ne+Ce*k));if(xe===Pg)return;let je=(ge.x===Ce?0:2)|Number(ge.y&Dg),ht=xe;return C&&l(xe)&&(ht=u(xe),je^=1),new h(Ce,ht,je)}return{seed:q,k2sig:X}}const T={lowS:e.lowS,prehash:!1},N={lowS:e.lowS,prehash:!1};function _(A,L,$=T){const{seed:W,k2sig:C}=x(A,L,$);return Mse(e.hash.outputLen,o.BYTES,i)(W,C)}t.BASE.precompute(8);function E(A,L,$,W=N){const C=A;L=zi("msgHash",L),$=zi("publicKey",$),P3(W);const{lowS:I,prehash:F,format:D}=W;if("strict"in W)throw new Error("options.strict was renamed to lowS");if(D!==void 0&&!["compact","der","js"].includes(D))throw new Error('format must be "compact", "der" or "js"');const k=typeof C=="string"||wT(C),R=!k&&!D&&typeof C=="object"&&C!==null&&typeof C.r=="bigint"&&typeof C.s=="bigint";if(!k&&!R)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let q,ne;try{if(R)if(D===void 0||D==="js")q=new h(C.r,C.s);else throw new Error("invalid format");if(k){try{D!=="compact"&&(q=h.fromDER(C))}catch(je){if(!(je instanceof Ya.Err))throw je}!q&&D!=="der"&&(q=h.fromCompact(C))}ne=t.fromHex($)}catch{return!1}if(!q||I&&q.hasHighS())return!1;F&&(L=e.hash(L));const{r:X,s:G}=q,te=w(L),le=o.inv(G),ge=o.create(te*le),Ce=o.create(X*le),xe=t.BASE.multiplyUnsafe(ge).add(ne.multiplyUnsafe(Ce));return xe.is0()?!1:o.create(xe.x)===X}return Object.freeze({getPublicKey:m,getSharedSecret:p,sign:_,verify:E,utils:g,Point:t,Signature:h})}function soe(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=cp(e.n,t.nBitLength),i={Fp:n,Fn:r,allowedPrivateKeyLengths:t.allowedPrivateKeyLengths,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,wrapPrivateKey:t.wrapPrivateKey,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:i}}function ooe(t){const{CURVE:e,curveOpts:n}=soe(t),r={hash:t.hash,hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,ecdsaOpts:r}}function aoe(t,e){return Object.assign({},e,{ProjectivePoint:e.Point,CURVE:t})}function coe(t){const{CURVE:e,curveOpts:n,ecdsaOpts:r}=ooe(t),i=roe(e,n),s=ioe(i,r,n);return aoe(t,s)}function Xx(t,e){const n=r=>coe({...t,hash:r});return{...n(e),create:n}}const e5={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")},t5={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"),n:BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"),h:BigInt(1),a:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc"),b:BigInt("0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"),Gx:BigInt("0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"),Gy:BigInt("0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f")},n5={p:BigInt("0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),n:BigInt("0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"),h:BigInt(1),a:BigInt("0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"),b:BigInt("0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00"),Gx:BigInt("0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66"),Gy:BigInt("0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650")},loe=cp(e5.p),uoe=cp(t5.p),doe=cp(n5.p),hoe=Xx({...e5,Fp:loe,lowS:!1},o1);Xx({...t5,Fp:uoe,lowS:!1},bie),Xx({...n5,Fp:doe,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},vie);const foe=hoe,r5="base10",_i="base16",Uo="base64pad",sl="base64url",S0="utf8",i5=0,sc=1,x0=2,poe=0,D3=1,Rg=12,TT=32;function goe(){const t=Kx.utils.randomPrivateKey(),e=Kx.getPublicKey(t);return{privateKey:Zi(t,_i),publicKey:Zi(e,_i)}}function Yx(){const t=ap(TT);return Zi(t,_i)}function moe(t,e){const n=Kx.getSharedSecret(Js(t,_i),Js(e,_i)),r=Cse(c1,n,void 0,void 0,TT);return Zi(r,_i)}function Hw(t){const e=c1(Js(t,_i));return Zi(e,_i)}function oa(t){const e=c1(Js(t,S0));return Zi(e,_i)}function s5(t){return Js(`${t}`,r5)}function ud(t){return Number(Zi(t,r5))}function o5(t){return t.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function a5(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4;return e+"=".repeat(n)}function yoe(t){const e=s5(typeof t.type<"u"?t.type:i5);if(ud(e)===sc&&typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const n=typeof t.senderPublicKey<"u"?Js(t.senderPublicKey,_i):void 0,r=typeof t.iv<"u"?Js(t.iv,_i):ap(Rg),i=Js(t.symKey,_i),s=B8(i,r).encrypt(Js(t.message,S0)),o=c5({type:e,sealed:s,iv:r,senderPublicKey:n});return t.encoding===sl?o5(o):o}function woe(t){const e=Js(t.symKey,_i),{sealed:n,iv:r}=Cm({encoded:t.encoded,encoding:t.encoding}),i=B8(e,r).decrypt(n);if(i===null)throw new Error("Failed to decrypt");return Zi(i,S0)}function voe(t,e){const n=s5(x0),r=ap(Rg),i=Js(t,S0),s=c5({type:n,sealed:i,iv:r});return e===sl?o5(s):s}function boe(t,e){const{sealed:n}=Cm({encoded:t,encoding:e});return Zi(n,S0)}function c5(t){if(ud(t.type)===x0)return Zi(Mg([t.type,t.sealed]),Uo);if(ud(t.type)===sc){if(typeof t.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return Zi(Mg([t.type,t.senderPublicKey,t.iv,t.sealed]),Uo)}return Zi(Mg([t.type,t.iv,t.sealed]),Uo)}function Cm(t){const e=(t.encoding||Uo)===sl?a5(t.encoded):t.encoded,n=Js(e,Uo),r=n.slice(poe,D3),i=D3;if(ud(r)===sc){const c=i+TT,l=c+Rg,u=n.slice(i,c),d=n.slice(c,l),h=n.slice(l);return{type:r,sealed:h,iv:d,senderPublicKey:u}}if(ud(r)===x0){const c=n.slice(i),l=ap(Rg);return{type:r,sealed:c,iv:l}}const s=i+Rg,o=n.slice(i,s),a=n.slice(s);return{type:r,sealed:a,iv:o}}function Eoe(t,e){const n=Cm({encoded:t,encoding:e==null?void 0:e.encoding});return l5({type:ud(n.type),senderPublicKey:typeof n.senderPublicKey<"u"?Zi(n.senderPublicKey,_i):void 0,receiverPublicKey:e==null?void 0:e.receiverPublicKey})}function l5(t){const e=(t==null?void 0:t.type)||i5;if(e===sc){if(typeof(t==null?void 0:t.senderPublicKey)>"u")throw new Error("missing sender public key");if(typeof(t==null?void 0:t.receiverPublicKey)>"u")throw new Error("missing receiver public key")}return{type:e,senderPublicKey:t==null?void 0:t.senderPublicKey,receiverPublicKey:t==null?void 0:t.receiverPublicKey}}function R3(t){return t.type===sc&&typeof t.senderPublicKey=="string"&&typeof t.receiverPublicKey=="string"}function O3(t){return t.type===x0}function _oe(t){const e=Buffer.from(t.x,"base64"),n=Buffer.from(t.y,"base64");return Mg([new Uint8Array([4]),e,n])}function Soe(t,e){const[n,r,i]=t.split("."),s=Buffer.from(a5(i),"base64");if(s.length!==64)throw new Error("Invalid signature length");const o=s.slice(0,32),a=s.slice(32,64),c=`${n}.${r}`,l=c1(c),u=_oe(e);if(!foe.verify(Mg([o,a]),l,u))throw new Error("Invalid signature");return Px(t).payload}const xoe="irn";function sb(t){return(t==null?void 0:t.relay)||{protocol:xoe}}function ag(t){const e=Jne[t];if(typeof e>"u")throw new Error(`Relay Protocol not supported: ${t}`);return e}function Aoe(t,e="-"){const n={},r="relay"+e;return Object.keys(t).forEach(i=>{if(i.startsWith(r)){const s=i.replace(r,""),o=t[i];n[s]=o}}),n}function U3(t){if(!t.includes("wc:")){const l=b8(t);l!=null&&l.includes("wc:")&&(t=l)}t=t.includes("wc://")?t.replace("wc://",""):t,t=t.includes("wc:")?t.replace("wc:",""):t;const e=t.indexOf(":"),n=t.indexOf("?")!==-1?t.indexOf("?"):void 0,r=t.substring(0,e),i=t.substring(e+1,n).split("@"),s=typeof n<"u"?t.substring(n):"",o=new URLSearchParams(s),a={};o.forEach((l,u)=>{a[u]=l});const c=typeof a.methods=="string"?a.methods.split(","):void 0;return{protocol:r,topic:Coe(i[0]),version:parseInt(i[1],10),symKey:a.symKey,relay:Aoe(a),methods:c,expiryTimestamp:a.expiryTimestamp?parseInt(a.expiryTimestamp,10):void 0}}function Coe(t){return t.startsWith("//")?t.substring(2):t}function Toe(t,e="-"){const n="relay",r={};return Object.keys(t).forEach(i=>{const s=i,o=n+e+s;t[s]&&(r[o]=t[s])}),r}function L3(t){const e=new URLSearchParams,n=Toe(t.relay);Object.keys(n).sort().forEach(i=>{e.set(i,n[i])}),e.set("symKey",t.symKey),t.expiryTimestamp&&e.set("expiryTimestamp",t.expiryTimestamp.toString()),t.methods&&e.set("methods",t.methods.join(","));const r=e.toString();return`${t.protocol}:${t.topic}@${t.version}?${r}`}function Py(t,e,n){return`${t}?wc_ev=${n}&topic=${e}`}var Ioe=Object.defineProperty,Moe=Object.defineProperties,Noe=Object.getOwnPropertyDescriptors,k3=Object.getOwnPropertySymbols,Poe=Object.prototype.hasOwnProperty,Doe=Object.prototype.propertyIsEnumerable,$3=(t,e,n)=>e in t?Ioe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Roe=(t,e)=>{for(var n in e||(e={}))Poe.call(e,n)&&$3(t,n,e[n]);if(k3)for(var n of k3(e))Doe.call(e,n)&&$3(t,n,e[n]);return t},Ooe=(t,e)=>Moe(t,Noe(e));function lp(t){const e=[];return t.forEach(n=>{const[r,i]=n.split(":");e.push(`${r}:${i}`)}),e}function Uoe(t){const e=[];return Object.values(t).forEach(n=>{e.push(...lp(n.accounts))}),e}function Loe(t,e){const n=[];return Object.values(t).forEach(r=>{lp(r.accounts).includes(e)&&n.push(...r.methods)}),n}function koe(t,e){const n=[];return Object.values(t).forEach(r=>{lp(r.accounts).includes(e)&&n.push(...r.events)}),n}function h1(t){return t.includes(":")}function jh(t){return h1(t)?t.split(":")[0]:t}function B3(t){var e,n,r;const i={};if(!Ea(t))return i;for(const[s,o]of Object.entries(t)){const a=h1(s)?[s]:o.chains,c=o.methods||[],l=o.events||[],u=jh(s);i[u]=Ooe(Roe({},i[u]),{chains:ba(a,(e=i[u])==null?void 0:e.chains),methods:ba(c,(n=i[u])==null?void 0:n.methods),events:ba(l,(r=i[u])==null?void 0:r.events)})}return i}function $oe(t){const e={};return t==null||t.forEach(n=>{var r;const[i,s]=n.split(":");e[i]||(e[i]={accounts:[],chains:[],events:[],methods:[]}),e[i].accounts.push(n),(r=e[i].chains)==null||r.push(`${i}:${s}`)}),e}function F3(t,e){e=e.map(r=>r.replace("did:pkh:",""));const n=$oe(e);for(const[r,i]of Object.entries(n))i.methods?i.methods=ba(i.methods,t):i.methods=t,i.events=["chainChanged","accountsChanged"];return n}function Boe(t,e){var n,r,i,s,o,a;const c=B3(t),l=B3(e),u={},d=Object.keys(c).concat(Object.keys(l));for(const h of d)u[h]={chains:ba((n=c[h])==null?void 0:n.chains,(r=l[h])==null?void 0:r.chains),methods:ba((i=c[h])==null?void 0:i.methods,(s=l[h])==null?void 0:s.methods),events:ba((o=c[h])==null?void 0:o.events,(a=l[h])==null?void 0:a.events)};return u}const Foe={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},zoe={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function Te(t,e){const{message:n,code:r}=zoe[t];return{message:e?`${n} ${e}`:n,code:r}}function Hn(t,e){const{message:n,code:r}=Foe[t];return{message:e?`${n} ${e}`:n,code:r}}function oc(t,e){return!!Array.isArray(t)}function Ea(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function Br(t){return typeof t>"u"}function cr(t,e){return e&&Br(t)?!0:typeof t=="string"&&!!t.trim().length}function IT(t,e){return e&&Br(t)?!0:typeof t=="number"&&!isNaN(t)}function Hoe(t,e){const{requiredNamespaces:n}=e,r=Object.keys(t.namespaces),i=Object.keys(n);let s=!0;return Ou(i,r)?(r.forEach(o=>{const{accounts:a,methods:c,events:l}=t.namespaces[o],u=lp(a),d=n[o];(!Ou(g8(o,d),u)||!Ou(d.methods,c)||!Ou(d.events,l))&&(s=!1)}),s):!1}function ob(t){return cr(t,!1)&&t.includes(":")?t.split(":").length===2:!1}function joe(t){if(cr(t,!1)&&t.includes(":")){const e=t.split(":");if(e.length===3){const n=e[0]+":"+e[1];return!!e[2]&&ob(n)}}return!1}function Voe(t){function e(n){try{return typeof new URL(n)<"u"}catch{return!1}}try{if(cr(t,!1)){if(e(t))return!0;const n=b8(t);return e(n)}}catch{}return!1}function Woe(t){var e;return(e=t==null?void 0:t.proposer)==null?void 0:e.publicKey}function Goe(t){return t==null?void 0:t.topic}function qoe(t,e){let n=null;return cr(t==null?void 0:t.publicKey,!1)||(n=Te("MISSING_OR_INVALID",`${e} controller public key should be a string`)),n}function z3(t){let e=!0;return oc(t)?t.length&&(e=t.every(n=>cr(n,!1))):e=!1,e}function Koe(t,e,n){let r=null;return oc(e)&&e.length?e.forEach(i=>{r||ob(i)||(r=Hn("UNSUPPORTED_CHAINS",`${n}, chain ${i} should be a string and conform to "namespace:chainId" format`))}):ob(t)||(r=Hn("UNSUPPORTED_CHAINS",`${n}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function Xoe(t,e,n){let r=null;return Object.entries(t).forEach(([i,s])=>{if(r)return;const o=Koe(i,g8(i,s),`${e} ${n}`);o&&(r=o)}),r}function Yoe(t,e){let n=null;return oc(t)?t.forEach(r=>{n||joe(r)||(n=Hn("UNSUPPORTED_ACCOUNTS",`${e}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):n=Hn("UNSUPPORTED_ACCOUNTS",`${e}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),n}function Zoe(t,e){let n=null;return Object.values(t).forEach(r=>{if(n)return;const i=Yoe(r==null?void 0:r.accounts,`${e} namespace`);i&&(n=i)}),n}function Joe(t,e){let n=null;return z3(t==null?void 0:t.methods)?z3(t==null?void 0:t.events)||(n=Hn("UNSUPPORTED_EVENTS",`${e}, events should be an array of strings or empty array for no events`)):n=Hn("UNSUPPORTED_METHODS",`${e}, methods should be an array of strings or empty array for no methods`),n}function u5(t,e){let n=null;return Object.values(t).forEach(r=>{if(n)return;const i=Joe(r,`${e}, namespace`);i&&(n=i)}),n}function Qoe(t,e,n){let r=null;if(t&&Ea(t)){const i=u5(t,e);i&&(r=i);const s=Xoe(t,e,n);s&&(r=s)}else r=Te("MISSING_OR_INVALID",`${e}, ${n} should be an object with data`);return r}function WE(t,e){let n=null;if(t&&Ea(t)){const r=u5(t,e);r&&(n=r);const i=Zoe(t,e);i&&(n=i)}else n=Te("MISSING_OR_INVALID",`${e}, namespaces should be an object with data`);return n}function d5(t){return cr(t.protocol,!0)}function eae(t,e){let n=!1;return t?t&&oc(t)&&t.length&&t.forEach(r=>{n=d5(r)}):n=!0,n}function tae(t){return typeof t=="number"}function Fi(t){return typeof t<"u"&&typeof t!==null}function nae(t){return!(!t||typeof t!="object"||!t.code||!IT(t.code,!1)||!t.message||!cr(t.message,!1))}function rae(t){return!(Br(t)||!cr(t.method,!1))}function iae(t){return!(Br(t)||Br(t.result)&&Br(t.error)||!IT(t.id,!1)||!cr(t.jsonrpc,!1))}function sae(t){return!(Br(t)||!cr(t.name,!1))}function H3(t,e){return!(!ob(e)||!Uoe(t).includes(e))}function oae(t,e,n){return cr(n,!1)?Loe(t,e).includes(n):!1}function aae(t,e,n){return cr(n,!1)?koe(t,e).includes(n):!1}function j3(t,e,n){let r=null;const i=cae(t),s=lae(e),o=Object.keys(i),a=Object.keys(s),c=V3(Object.keys(t)),l=V3(Object.keys(e)),u=c.filter(d=>!l.includes(d));return u.length&&(r=Te("NON_CONFORMING_NAMESPACES",`${n} namespaces keys don't satisfy requiredNamespaces. + Required: ${u.toString()} + Received: ${Object.keys(e).toString()}`)),Ou(o,a)||(r=Te("NON_CONFORMING_NAMESPACES",`${n} namespaces chains don't satisfy required namespaces. + Required: ${o.toString()} + Approved: ${a.toString()}`)),Object.keys(e).forEach(d=>{if(!d.includes(":")||r)return;const h=lp(e[d].accounts);h.includes(d)||(r=Te("NON_CONFORMING_NAMESPACES",`${n} namespaces accounts don't satisfy namespace accounts for ${d} + Required: ${d} + Approved: ${h.toString()}`))}),o.forEach(d=>{r||(Ou(i[d].methods,s[d].methods)?Ou(i[d].events,s[d].events)||(r=Te("NON_CONFORMING_NAMESPACES",`${n} namespaces events don't satisfy namespace events for ${d}`)):r=Te("NON_CONFORMING_NAMESPACES",`${n} namespaces methods don't satisfy namespace methods for ${d}`))}),r}function cae(t){const e={};return Object.keys(t).forEach(n=>{var r;n.includes(":")?e[n]=t[n]:(r=t[n].chains)==null||r.forEach(i=>{e[i]={methods:t[n].methods,events:t[n].events}})}),e}function V3(t){return[...new Set(t.map(e=>e.includes(":")?e.split(":")[0]:e))]}function lae(t){const e={};return Object.keys(t).forEach(n=>{if(n.includes(":"))e[n]=t[n];else{const r=lp(t[n].accounts);r==null||r.forEach(i=>{e[i]={accounts:t[n].accounts.filter(s=>s.includes(`${i}:`)),methods:t[n].methods,events:t[n].events}})}}),e}function uae(t,e){return IT(t,!1)&&t<=e.max&&t>=e.min}function W3(){const t=E0();return new Promise(e=>{switch(t){case Es.browser:e(dae());break;case Es.reactNative:e(hae());break;case Es.node:e(fae());break;default:e(!0)}})}function dae(){return op()&&(navigator==null?void 0:navigator.onLine)}async function hae(){if(Xl()&&typeof global<"u"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t==null?void 0:t.isConnected}return!0}function fae(){return!0}function pae(t){switch(E0()){case Es.browser:gae(t);break;case Es.reactNative:mae(t);break}}function gae(t){!Xl()&&op()&&(window.addEventListener("online",()=>t(!0)),window.addEventListener("offline",()=>t(!1)))}function mae(t){Xl()&&typeof global<"u"&&global!=null&&global.NetInfo&&(global==null||global.NetInfo.addEventListener(e=>t(e==null?void 0:e.isConnected)))}function yae(){var t;return op()&&cd()?((t=cd())==null?void 0:t.visibilityState)==="visible":!0}const GE={};class Up{static get(e){return GE[e]}static set(e,n){GE[e]=n}static delete(e){delete GE[e]}}function wae(t){const e=sp.decode(t);if(e.length<33)throw new Error("Too short to contain a public key");return e.slice(1,33)}function vae({publicKey:t,signature:e,payload:n}){var r;const i=Zx(n.method),s=128|parseInt(((r=n.version)==null?void 0:r.toString())||"4"),o=_ae(n.address),a=n.era==="00"?new Uint8Array([0]):Zx(n.era);if(a.length!==1&&a.length!==2)throw new Error("Invalid era length");const c=parseInt(n.nonce,16),l=new Uint8Array([c&255,c>>8&255]),u=BigInt(`0x${Eae(n.tip)}`),d=xae(u),h=new Uint8Array([0,...t,o,...e,...a,...l,...d,...i]),f=Sae(h.length+1);return new Uint8Array([...f,s,...h])}function bae(t){const e=Zx(t),n=ure.blake2b(e,void 0,32);return"0x"+Buffer.from(n).toString("hex")}function Zx(t){return new Uint8Array(t.replace(/^0x/,"").match(/.{1,2}/g).map(e=>parseInt(e,16)))}function Eae(t){return t.startsWith("0x")?t.slice(2):t}function _ae(t){const e=sp.decode(t)[0];return e===42?0:e===60?2:1}function Sae(t){if(t<64)return new Uint8Array([t<<2]);if(t<16384){const e=t<<2|1;return new Uint8Array([e&255,e>>8&255])}else if(t<1<<30){const e=t<<2|2;return new Uint8Array([e&255,e>>8&255,e>>16&255,e>>24&255])}else throw new Error("Compact encoding > 2^30 not supported")}function xae(t){if(t>BigInt(8)&BigInt(255))])}else if(t>BigInt(8)&BigInt(255)),Number(e>>BigInt(16)&BigInt(255)),Number(e>>BigInt(24)&BigInt(255))])}else throw new Error("BigInt compact encoding not supported > 2^30")}function Aae(t){const e=Uint8Array.from(Buffer.from(t.signature,"hex")),n=wae(t.transaction.address),r=vae({publicKey:n,signature:e,payload:t.transaction}),i=Buffer.from(r).toString("hex");return bae(i)}const Cae="PARSE_ERROR",Tae="INVALID_REQUEST",Iae="METHOD_NOT_FOUND",Mae="INVALID_PARAMS",h5="INTERNAL_ERROR",MT="SERVER_ERROR",Nae=[-32700,-32600,-32601,-32602,-32603],Og={[Cae]:{code:-32700,message:"Parse error"},[Tae]:{code:-32600,message:"Invalid Request"},[Iae]:{code:-32601,message:"Method not found"},[Mae]:{code:-32602,message:"Invalid params"},[h5]:{code:-32603,message:"Internal error"},[MT]:{code:-32e3,message:"Server error"}},f5=MT;function Pae(t){return Nae.includes(t)}function G3(t){return Object.keys(Og).includes(t)?Og[t]:Og[f5]}function Dae(t){const e=Object.values(Og).find(n=>n.code===t);return e||Og[f5]}function p5(t,e,n){return t.message.includes("getaddrinfo ENOTFOUND")||t.message.includes("connect ECONNREFUSED")?new Error(`Unavailable ${n} RPC url at ${e}`):t}var g5={},Oa={},q3;function Rae(){if(q3)return Oa;q3=1,Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.isBrowserCryptoAvailable=Oa.getSubtleCrypto=Oa.getBrowerCrypto=void 0;function t(){return(Ln==null?void 0:Ln.crypto)||(Ln==null?void 0:Ln.msCrypto)||{}}Oa.getBrowerCrypto=t;function e(){const r=t();return r.subtle||r.webkitSubtle}Oa.getSubtleCrypto=e;function n(){return!!t()&&!!e()}return Oa.isBrowserCryptoAvailable=n,Oa}var Ua={},K3;function Oae(){if(K3)return Ua;K3=1,Object.defineProperty(Ua,"__esModule",{value:!0}),Ua.isBrowser=Ua.isNode=Ua.isReactNative=void 0;function t(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}Ua.isReactNative=t;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}Ua.isNode=e;function n(){return!t()&&!e()}return Ua.isBrowser=n,Ua}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=p0;e.__exportStar(Rae(),t),e.__exportStar(Oae(),t)})(g5);function ra(t=3){const e=Date.now()*Math.pow(10,t),n=Math.floor(Math.random()*Math.pow(10,t));return e+n}function $u(t=6){return BigInt(ra(t))}function fl(t,e,n){return{id:n||ra(),jsonrpc:"2.0",method:t,params:e}}function f1(t,e){return{id:t,jsonrpc:"2.0",result:e}}function p1(t,e,n){return{id:t,jsonrpc:"2.0",error:Uae(e)}}function Uae(t,e){return typeof t>"u"?G3(h5):(typeof t=="string"&&(t=Object.assign(Object.assign({},G3(MT)),{message:t})),Pae(t.code)&&(t=Dae(t.code)),t)}let Lae=class{},kae=class extends Lae{constructor(){super()}},$ae=class extends kae{constructor(e){super()}};const Bae="^https?:",Fae="^wss?:";function zae(t){const e=t.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function m5(t,e){const n=zae(t);return typeof n>"u"?!1:new RegExp(e).test(n)}function X3(t){return m5(t,Bae)}function Y3(t){return m5(t,Fae)}function Hae(t){return new RegExp("wss?://localhost(:d{2,5})?").test(t)}function y5(t){return typeof t=="object"&&"id"in t&&"jsonrpc"in t&&t.jsonrpc==="2.0"}function NT(t){return y5(t)&&"method"in t}function g1(t){return y5(t)&&(ia(t)||Vs(t))}function ia(t){return"result"in t}function Vs(t){return"error"in t}let lo=class extends $ae{constructor(e){super(e),this.events=new co.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}off(e,n){this.events.off(e,n)}removeListener(e,n){this.events.removeListener(e,n)}async request(e,n){return this.requestStrict(fl(e.method,e.params||[],e.id||$u().toString()),n)}async requestStrict(e,n){return new Promise(async(r,i)=>{if(!this.connection.connected)try{await this.open()}catch(s){i(s)}this.events.on(`${e.id}`,s=>{Vs(s)?i(s.error):r(s.result)});try{await this.connection.send(e,n)}catch(s){i(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),g1(e)?this.events.emit(`${e.id}`,e):this.events.emit("message",{type:e.method,data:e.params})}onClose(e){e&&e.code===3e3&&this.events.emit("error",new Error(`WebSocket connection closed abnormally with code: ${e.code} ${e.reason?`(${e.reason})`:""}`)),this.events.emit("disconnect")}async open(e=this.connection){this.connection===e&&this.connection.connected||(this.connection.connected&&this.close(),typeof e=="string"&&(await this.connection.open(e),e=this.connection),this.connection=this.setConnection(e),await this.connection.open(),this.registerEventListeners(),this.events.emit("connect"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on("payload",e=>this.onPayload(e)),this.connection.on("close",e=>this.onClose(e)),this.connection.on("error",e=>this.events.emit("error",e)),this.connection.on("register_error",e=>this.onClose()),this.hasRegisteredEventListeners=!0)}};const jae=()=>typeof WebSocket<"u"?WebSocket:typeof global<"u"&&typeof global.WebSocket<"u"?global.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:require("ws"),Vae=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",Z3=t=>t.split("?")[0],J3=10,Wae=jae();let Gae=class{constructor(e){if(this.url=e,this.events=new co.EventEmitter,this.registering=!1,!Y3(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}off(e,n){this.events.off(e,n)}removeListener(e,n){this.events.removeListener(e,n)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,n)=>{if(typeof this.socket>"u"){n(new Error("Connection already closed"));return}this.socket.onclose=r=>{this.onClose(r),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(mc(e))}catch(n){this.onError(e.id,n)}}register(e=this.url){if(!Y3(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const n=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=n||this.events.listenerCount("open")>=n)&&this.events.setMaxListeners(n+1),new Promise((r,i)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),i(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return i(new Error("WebSocket connection is missing or invalid"));r(this.socket)})})}return this.url=e,this.registering=!0,new Promise((n,r)=>{const i=g5.isReactNative()?void 0:{rejectUnauthorized:!Hae(e)},s=new Wae(e,[],i);Vae()?s.onerror=o=>{const a=o;r(this.emitError(a.error))}:s.on("error",o=>{r(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),n(s)}})}onOpen(e){e.onmessage=n=>this.onPayload(n),e.onclose=n=>this.onClose(n),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const n=typeof e.data=="string"?ad(e.data):e.data;this.events.emit("payload",n)}onError(e,n){const r=this.parseError(n),i=r.message||r.toString(),s=p1(e,i);this.events.emit("payload",s)}parseError(e,n=this.url){return p5(e,Z3(n),"WS")}resetMaxListeners(){this.events.getMaxListeners()>J3&&this.events.setMaxListeners(J3)}emitError(e){const n=this.parseError(new Error((e==null?void 0:e.message)||`WebSocket connection failed for host: ${Z3(this.url)}`));return this.events.emit("register_error",n),n}};var qae={};const w5="wc",v5=2,Jx="core",xa=`${w5}@2:${Jx}:`,Kae={logger:"error"},Xae={database:":memory:"},Yae="crypto",Q3="client_ed25519_seed",Zae=Ie.ONE_DAY,Jae="keychain",Qae="0.3",ece="messages",tce="0.3",eD=Ie.SIX_HOURS,nce="publisher",b5="irn",rce="error",E5="wss://relay.walletconnect.org",ice="relayer",Cr={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",transport_closed:"relayer_transport_closed",publish:"relayer_publish"},sce="_subscription",Os={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},oce=.1,Qx="2.21.5",Un={link_mode:"link_mode",relay:"relay"},jw={inbound:"inbound",outbound:"outbound"},ace="0.3",cce="WALLETCONNECT_CLIENT_ID",tD="WALLETCONNECT_LINK_MODE_APPS",ls={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},lce="subscription",uce="0.3",dce="pairing",hce="0.3",Lp={wc_pairingDelete:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:Ie.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:Ie.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:0},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:0}}},Au={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},wo={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},fce="history",pce="0.3",gce="expirer",zs={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},mce="0.3",yce="verify-api",wce="https://verify.walletconnect.com",_5="https://verify.walletconnect.org",Ug=_5,vce=`${Ug}/v3`,bce=[wce,_5],Ece="echo",_ce="https://echo.walletconnect.com",ta={pairing_started:"pairing_started",pairing_uri_validation_success:"pairing_uri_validation_success",pairing_uri_not_expired:"pairing_uri_not_expired",store_new_pairing:"store_new_pairing",subscribing_pairing_topic:"subscribing_pairing_topic",subscribe_pairing_topic_success:"subscribe_pairing_topic_success",existing_pairing:"existing_pairing",pairing_not_expired:"pairing_not_expired",emit_inactive_pairing:"emit_inactive_pairing",emit_session_proposal:"emit_session_proposal",subscribing_to_pairing_topic:"subscribing_to_pairing_topic"},Ga={no_wss_connection:"no_wss_connection",no_internet_connection:"no_internet_connection",malformed_pairing_uri:"malformed_pairing_uri",active_pairing_already_exists:"active_pairing_already_exists",subscribe_pairing_topic_failure:"subscribe_pairing_topic_failure",pairing_expired:"pairing_expired",proposal_expired:"proposal_expired",proposal_listener_not_found:"proposal_listener_not_found"},vo={session_approve_started:"session_approve_started",proposal_not_expired:"proposal_not_expired",session_namespaces_validation_success:"session_namespaces_validation_success",create_session_topic:"create_session_topic",subscribing_session_topic:"subscribing_session_topic",subscribe_session_topic_success:"subscribe_session_topic_success",publishing_session_approve:"publishing_session_approve",session_approve_publish_success:"session_approve_publish_success",store_session:"store_session",publishing_session_settle:"publishing_session_settle",session_settle_publish_success:"session_settle_publish_success"},iu={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",proposal_expired:"proposal_expired",subscribe_session_topic_failure:"subscribe_session_topic_failure",session_approve_publish_failure:"session_approve_publish_failure",session_settle_publish_failure:"session_settle_publish_failure",session_approve_namespace_validation_failure:"session_approve_namespace_validation_failure",proposal_not_found:"proposal_not_found"},su={authenticated_session_approve_started:"authenticated_session_approve_started",create_authenticated_session_topic:"create_authenticated_session_topic",cacaos_verified:"cacaos_verified",store_authenticated_session:"store_authenticated_session",subscribing_authenticated_session_topic:"subscribing_authenticated_session_topic",subscribe_authenticated_session_topic_success:"subscribe_authenticated_session_topic_success",publishing_authenticated_session_approve:"publishing_authenticated_session_approve"},kp={no_internet_connection:"no_internet_connection",invalid_cacao:"invalid_cacao",subscribe_authenticated_session_topic_failure:"subscribe_authenticated_session_topic_failure",authenticated_session_approve_publish_failure:"authenticated_session_approve_publish_failure",authenticated_session_pending_request_not_found:"authenticated_session_pending_request_not_found"},Sce=.1,xce="event-client",Ace=86400,Cce="https://pulse.walletconnect.org/batch";function Tce(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var n=new Uint8Array(256),r=0;r>>0,b=new Uint8Array(w);p!==v;){for(var S=g[p],x=0,T=w-1;(S!==0||x>>0,b[T]=S%a>>>0,S=S/a>>>0;if(S!==0)throw new Error("Non-zero carry");y=x,p++}for(var N=w-y;N!==w&&b[N]===0;)N++;for(var _=c.repeat(m);N>>0,w=new Uint8Array(v);g[m];){var b=n[g.charCodeAt(m)];if(b===255)return;for(var S=0,x=v-1;(b!==0||S>>0,w[x]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");p=S,m++}if(g[m]!==" "){for(var T=v-p;T!==v&&w[T]===0;)T++;for(var N=new Uint8Array(y+(v-T)),_=y;T!==v;)N[_++]=w[T++];return N}}}function f(g){var m=h(g);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:h,decode:f}}var Ice=Tce,Mce=Ice;const S5=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},Nce=t=>new TextEncoder().encode(t),Pce=t=>new TextDecoder().decode(t);class Dce{constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Rce{constructor(e,n,r){if(this.name=e,this.prefix=n,n.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=n.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return x5(this,e)}}class Oce{constructor(e){this.decoders=e}or(e){return x5(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const x5=(t,e)=>new Oce({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class Uce{constructor(e,n,r,i){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=i,this.encoder=new Dce(e,n,r),this.decoder=new Rce(e,n,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const m1=({name:t,prefix:e,encode:n,decode:r})=>new Uce(t,e,n,r),A0=({prefix:t,name:e,alphabet:n})=>{const{encode:r,decode:i}=Mce(n,e);return m1({prefix:t,name:e,encode:r,decode:s=>S5(i(s))})},Lce=(t,e,n,r)=>{const i={};for(let u=0;u=8&&(a-=8,o[l++]=255&c>>a)}if(a>=n||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},kce=(t,e,n)=>{const r=e[e.length-1]==="=",i=(1<n;)o-=n,s+=e[i&a>>o];if(o&&(s+=e[i&a<m1({prefix:e,name:t,encode(i){return kce(i,r,n)},decode(i){return Lce(i,r,n,t)}}),$ce=m1({prefix:"\0",name:"identity",encode:t=>Pce(t),decode:t=>Nce(t)});var Bce=Object.freeze({__proto__:null,identity:$ce});const Fce=qr({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var zce=Object.freeze({__proto__:null,base2:Fce});const Hce=qr({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var jce=Object.freeze({__proto__:null,base8:Hce});const Vce=A0({prefix:"9",name:"base10",alphabet:"0123456789"});var Wce=Object.freeze({__proto__:null,base10:Vce});const Gce=qr({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),qce=qr({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Kce=Object.freeze({__proto__:null,base16:Gce,base16upper:qce});const Xce=qr({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Yce=qr({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Zce=qr({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Jce=qr({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Qce=qr({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ele=qr({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),tle=qr({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),nle=qr({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),rle=qr({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var ile=Object.freeze({__proto__:null,base32:Xce,base32upper:Yce,base32pad:Zce,base32padupper:Jce,base32hex:Qce,base32hexupper:ele,base32hexpad:tle,base32hexpadupper:nle,base32z:rle});const sle=A0({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ole=A0({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var ale=Object.freeze({__proto__:null,base36:sle,base36upper:ole});const cle=A0({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),lle=A0({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ule=Object.freeze({__proto__:null,base58btc:cle,base58flickr:lle});const dle=qr({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),hle=qr({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),fle=qr({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ple=qr({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var gle=Object.freeze({__proto__:null,base64:dle,base64pad:hle,base64url:fle,base64urlpad:ple});const A5=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),mle=A5.reduce((t,e,n)=>(t[n]=e,t),[]),yle=A5.reduce((t,e,n)=>(t[e.codePointAt(0)]=n,t),[]);function wle(t){return t.reduce((e,n)=>(e+=mle[n],e),"")}function vle(t){const e=[];for(const n of t){const r=yle[n.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${n}`);e.push(r)}return new Uint8Array(e)}const ble=m1({prefix:"🚀",name:"base256emoji",encode:wle,decode:vle});var Ele=Object.freeze({__proto__:null,base256emoji:ble}),_le=C5,nD=128,Sle=-128,xle=Math.pow(2,31);function C5(t,e,n){e=e||[],n=n||0;for(var r=n;t>=xle;)e[n++]=t&255|nD,t/=128;for(;t&Sle;)e[n++]=t&255|nD,t>>>=7;return e[n]=t|0,C5.bytes=n-r+1,e}var Ale=eA,Cle=128,rD=127;function eA(t,r){var n=0,r=r||0,i=0,s=r,o,a=t.length;do{if(s>=a)throw eA.bytes=0,new RangeError("Could not decode varint");o=t[s++],n+=i<28?(o&rD)<=Cle);return eA.bytes=s-r,n}var Tle=Math.pow(2,7),Ile=Math.pow(2,14),Mle=Math.pow(2,21),Nle=Math.pow(2,28),Ple=Math.pow(2,35),Dle=Math.pow(2,42),Rle=Math.pow(2,49),Ole=Math.pow(2,56),Ule=Math.pow(2,63),Lle=function(t){return t(T5.encode(t,e,n),e),sD=t=>T5.encodingLength(t),tA=(t,e)=>{const n=e.byteLength,r=sD(t),i=r+sD(n),s=new Uint8Array(i+n);return iD(t,s,0),iD(n,s,r),s.set(e,i),new $le(t,n,e,s)};class $le{constructor(e,n,r,i){this.code=e,this.size=n,this.digest=r,this.bytes=i}}const I5=({name:t,code:e,encode:n})=>new Ble(t,e,n);class Ble{constructor(e,n,r){this.name=e,this.code=n,this.encode=r}digest(e){if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?tA(this.code,n):n.then(r=>tA(this.code,r))}else throw Error("Unknown type, must be binary type")}}const M5=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),Fle=I5({name:"sha2-256",code:18,encode:M5("SHA-256")}),zle=I5({name:"sha2-512",code:19,encode:M5("SHA-512")});var Hle=Object.freeze({__proto__:null,sha256:Fle,sha512:zle});const N5=0,jle="identity",P5=S5,Vle=t=>tA(N5,P5(t)),Wle={code:N5,name:jle,encode:P5,digest:Vle};var Gle=Object.freeze({__proto__:null,identity:Wle});new TextEncoder,new TextDecoder;const oD={...Bce,...zce,...jce,...Wce,...Kce,...ile,...ale,...ule,...gle,...Ele};({...Hle,...Gle});function D5(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function qle(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?D5(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function R5(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const aD=R5("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),qE=R5("ascii","a",t=>{let e="a";for(let n=0;n{t=t.substring(1);const e=qle(t.length);for(let n=0;ne in t?Yle(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Jo=(t,e,n)=>Zle(t,typeof e!="symbol"?e+"":e,n);let Jle=class{constructor(e,n){this.core=e,this.logger=n,Jo(this,"keychain",new Map),Jo(this,"name",Jae),Jo(this,"version",Qae),Jo(this,"initialized",!1),Jo(this,"storagePrefix",xa),Jo(this,"init",async()=>{if(!this.initialized){const r=await this.getKeyChain();typeof r<"u"&&(this.keychain=r),this.initialized=!0}}),Jo(this,"has",r=>(this.isInitialized(),this.keychain.has(r))),Jo(this,"set",async(r,i)=>{this.isInitialized(),this.keychain.set(r,i),await this.persist()}),Jo(this,"get",r=>{this.isInitialized();const i=this.keychain.get(r);if(typeof i>"u"){const{message:s}=Te("NO_MATCHING_KEY",`${this.name}: ${r}`);throw new Error(s)}return i}),Jo(this,"del",async r=>{this.isInitialized(),this.keychain.delete(r),await this.persist()}),this.core=e,this.logger=Ti(n,this.name)}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Bx(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Fx(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}};var Qle=Object.defineProperty,eue=(t,e,n)=>e in t?Qle(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Rr=(t,e,n)=>eue(t,typeof e!="symbol"?e+"":e,n);class tue{constructor(e,n,r){this.core=e,this.logger=n,Rr(this,"name",Yae),Rr(this,"keychain"),Rr(this,"randomSessionIdentifier",Yx()),Rr(this,"initialized",!1),Rr(this,"init",async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)}),Rr(this,"hasKeys",i=>(this.isInitialized(),this.keychain.has(i))),Rr(this,"getClientId",async()=>{this.isInitialized();const i=await this.getClientSeed(),s=LP(i);return IB(s.publicKey)}),Rr(this,"generateKeyPair",()=>{this.isInitialized();const i=goe();return this.setPrivateKey(i.publicKey,i.privateKey)}),Rr(this,"signJWT",async i=>{this.isInitialized();const s=await this.getClientSeed(),o=LP(s),a=this.randomSessionIdentifier;return await ree(a,i,Zae,o)}),Rr(this,"generateSharedKey",(i,s,o)=>{this.isInitialized();const a=this.getPrivateKey(i),c=moe(a,s);return this.setSymKey(c,o)}),Rr(this,"setSymKey",async(i,s)=>{this.isInitialized();const o=s||Hw(i);return await this.keychain.set(o,i),o}),Rr(this,"deleteKeyPair",async i=>{this.isInitialized(),await this.keychain.del(i)}),Rr(this,"deleteSymKey",async i=>{this.isInitialized(),await this.keychain.del(i)}),Rr(this,"encode",async(i,s,o)=>{this.isInitialized();const a=l5(o),c=mc(s);if(O3(a))return voe(c,o==null?void 0:o.encoding);if(R3(a)){const h=a.senderPublicKey,f=a.receiverPublicKey;i=await this.generateSharedKey(h,f)}const l=this.getSymKey(i),{type:u,senderPublicKey:d}=a;return yoe({type:u,symKey:l,message:c,senderPublicKey:d,encoding:o==null?void 0:o.encoding})}),Rr(this,"decode",async(i,s,o)=>{this.isInitialized();const a=Eoe(s,o);if(O3(a)){const c=boe(s,o==null?void 0:o.encoding);return ad(c)}if(R3(a)){const c=a.receiverPublicKey,l=a.senderPublicKey;i=await this.generateSharedKey(c,l)}try{const c=this.getSymKey(i),l=woe({symKey:c,encoded:s,encoding:o==null?void 0:o.encoding});return ad(l)}catch(c){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}}),Rr(this,"getPayloadType",(i,s=Uo)=>{const o=Cm({encoded:i,encoding:s});return ud(o.type)}),Rr(this,"getPayloadSenderPublicKey",(i,s=Uo)=>{const o=Cm({encoded:i,encoding:s});return o.senderPublicKey?Zi(o.senderPublicKey,_i):void 0}),this.core=e,this.logger=Ti(n,this.name),this.keychain=r||new Jle(this.core,this.logger)}get context(){return ns(this.logger)}async setPrivateKey(e,n){return await this.keychain.set(e,n),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(Q3)}catch{e=Yx(),await this.keychain.set(Q3,e)}return Xle(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}}var nue=Object.defineProperty,rue=Object.defineProperties,iue=Object.getOwnPropertyDescriptors,cD=Object.getOwnPropertySymbols,sue=Object.prototype.hasOwnProperty,oue=Object.prototype.propertyIsEnumerable,nA=(t,e,n)=>e in t?nue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,aue=(t,e)=>{for(var n in e||(e={}))sue.call(e,n)&&nA(t,n,e[n]);if(cD)for(var n of cD(e))oue.call(e,n)&&nA(t,n,e[n]);return t},cue=(t,e)=>rue(t,iue(e)),ss=(t,e,n)=>nA(t,typeof e!="symbol"?e+"":e,n);class lue extends tZ{constructor(e,n){super(e,n),this.logger=e,this.core=n,ss(this,"messages",new Map),ss(this,"messagesWithoutClientAck",new Map),ss(this,"name",ece),ss(this,"version",tce),ss(this,"initialized",!1),ss(this,"storagePrefix",xa),ss(this,"init",async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const r=await this.getRelayerMessages();typeof r<"u"&&(this.messages=r);const i=await this.getRelayerMessagesWithoutClientAck();typeof i<"u"&&(this.messagesWithoutClientAck=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(r){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(r)}finally{this.initialized=!0}}}),ss(this,"set",async(r,i,s)=>{this.isInitialized();const o=oa(i);let a=this.messages.get(r);if(typeof a>"u"&&(a={}),typeof a[o]<"u")return o;if(a[o]=i,this.messages.set(r,a),s===jw.inbound){const c=this.messagesWithoutClientAck.get(r)||{};this.messagesWithoutClientAck.set(r,cue(aue({},c),{[o]:i}))}return await this.persist(),o}),ss(this,"get",r=>{this.isInitialized();let i=this.messages.get(r);return typeof i>"u"&&(i={}),i}),ss(this,"getWithoutAck",r=>{this.isInitialized();const i={};for(const s of r){const o=this.messagesWithoutClientAck.get(s)||{};i[s]=Object.values(o)}return i}),ss(this,"has",(r,i)=>{this.isInitialized();const s=this.get(r),o=oa(i);return typeof s[o]<"u"}),ss(this,"ack",async(r,i)=>{this.isInitialized();const s=this.messagesWithoutClientAck.get(r);if(typeof s>"u")return;const o=oa(i);delete s[o],Object.keys(s).length===0?this.messagesWithoutClientAck.delete(r):this.messagesWithoutClientAck.set(r,s),await this.persist()}),ss(this,"del",async r=>{this.isInitialized(),this.messages.delete(r),this.messagesWithoutClientAck.delete(r),await this.persist()}),this.logger=Ti(e,this.name),this.core=n}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name+"_withoutClientAck"}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Bx(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Bx(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Fx(e):void 0}async getRelayerMessagesWithoutClientAck(){const e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<"u"?Fx(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}}var uue=Object.defineProperty,due=Object.defineProperties,hue=Object.getOwnPropertyDescriptors,lD=Object.getOwnPropertySymbols,fue=Object.prototype.hasOwnProperty,pue=Object.prototype.propertyIsEnumerable,rA=(t,e,n)=>e in t?uue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Dy=(t,e)=>{for(var n in e||(e={}))fue.call(e,n)&&rA(t,n,e[n]);if(lD)for(var n of lD(e))pue.call(e,n)&&rA(t,n,e[n]);return t},KE=(t,e)=>due(t,hue(e)),bo=(t,e,n)=>rA(t,typeof e!="symbol"?e+"":e,n);class gue extends nZ{constructor(e,n){super(e,n),this.relayer=e,this.logger=n,bo(this,"events",new co.EventEmitter),bo(this,"name",nce),bo(this,"queue",new Map),bo(this,"publishTimeout",Ie.toMiliseconds(Ie.ONE_MINUTE)),bo(this,"initialPublishTimeout",Ie.toMiliseconds(Ie.ONE_SECOND*15)),bo(this,"needsTransportRestart",!1),bo(this,"publish",async(r,i,s)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:r,message:i,opts:s}});const a=(s==null?void 0:s.ttl)||eD,c=sb(s),l=(s==null?void 0:s.prompt)||!1,u=(s==null?void 0:s.tag)||0,d=(s==null?void 0:s.id)||$u().toString(),h={topic:r,message:i,opts:{ttl:a,relay:c,prompt:l,tag:u,id:d,attestation:s==null?void 0:s.attestation,tvf:s==null?void 0:s.tvf}},f=`Failed to publish payload, please try again. id:${d} tag:${u}`;try{const g=new Promise(async m=>{const y=({id:v})=>{h.opts.id===v&&(this.removeRequestFromQueue(v),this.relayer.events.removeListener(Cr.publish,y),m(h))};this.relayer.events.on(Cr.publish,y);const p=hl(new Promise((v,w)=>{this.rpcPublish({topic:r,message:i,ttl:a,prompt:l,tag:u,id:d,attestation:s==null?void 0:s.attestation,tvf:s==null?void 0:s.tvf}).then(v).catch(b=>{this.logger.warn(b,b==null?void 0:b.message),w(b)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${d} tag:${u}`);try{await p,this.events.removeListener(Cr.publish,y)}catch(v){this.queue.set(d,KE(Dy({},h),{attempt:1})),this.logger.warn(v,v==null?void 0:v.message)}});this.logger.trace({type:"method",method:"publish",params:{id:d,topic:r,message:i,opts:s}}),await hl(g,this.publishTimeout,f)}catch(g){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(g),(o=s==null?void 0:s.internal)!=null&&o.throwOnFailedPublish)throw g}finally{this.queue.delete(d)}}),bo(this,"on",(r,i)=>{this.events.on(r,i)}),bo(this,"once",(r,i)=>{this.events.once(r,i)}),bo(this,"off",(r,i)=>{this.events.off(r,i)}),bo(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.relayer=e,this.logger=Ti(n,this.name),this.registerEventListeners()}get context(){return ns(this.logger)}async rpcPublish(e){var n,r,i,s;const{topic:o,message:a,ttl:c=eD,prompt:l,tag:u,id:d,attestation:h,tvf:f}=e,g={method:ag(sb().protocol).publish,params:Dy({topic:o,message:a,ttl:c,prompt:l,tag:u,attestation:h},f),id:d};Br((n=g.params)==null?void 0:n.prompt)&&((r=g.params)==null||delete r.prompt),Br((i=g.params)==null?void 0:i.tag)&&((s=g.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:g});const m=await this.relayer.request(g);return this.relayer.events.emit(Cr.publish,e),this.logger.debug("Successfully Published Payload"),m}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,n)=>{const r=e.attempt+1;this.queue.set(n,KE(Dy({},e),{attempt:r}));const{topic:i,message:s,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${r}`),await this.rpcPublish(KE(Dy({},e),{topic:i,message:s,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a,tvf:o.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(_d.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Cr.connection_stalled);return}this.checkQueue()}),this.relayer.on(Cr.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}var mue=Object.defineProperty,yue=(t,e,n)=>e in t?mue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Hd=(t,e,n)=>yue(t,typeof e!="symbol"?e+"":e,n);class wue{constructor(){Hd(this,"map",new Map),Hd(this,"set",(e,n)=>{const r=this.get(e);this.exists(e,n)||this.map.set(e,[...r,n])}),Hd(this,"get",e=>this.map.get(e)||[]),Hd(this,"exists",(e,n)=>this.get(e).includes(n)),Hd(this,"delete",(e,n)=>{if(typeof n>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const r=this.get(e);if(!this.exists(e,n))return;const i=r.filter(s=>s!==n);if(!i.length){this.map.delete(e);return}this.map.set(e,i)}),Hd(this,"clear",()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}}var vue=Object.defineProperty,bue=Object.defineProperties,Eue=Object.getOwnPropertyDescriptors,uD=Object.getOwnPropertySymbols,_ue=Object.prototype.hasOwnProperty,Sue=Object.prototype.propertyIsEnumerable,iA=(t,e,n)=>e in t?vue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,$p=(t,e)=>{for(var n in e||(e={}))_ue.call(e,n)&&iA(t,n,e[n]);if(uD)for(var n of uD(e))Sue.call(e,n)&&iA(t,n,e[n]);return t},XE=(t,e)=>bue(t,Eue(e)),Tn=(t,e,n)=>iA(t,typeof e!="symbol"?e+"":e,n);class xue extends sZ{constructor(e,n){super(e,n),this.relayer=e,this.logger=n,Tn(this,"subscriptions",new Map),Tn(this,"topicMap",new wue),Tn(this,"events",new co.EventEmitter),Tn(this,"name",lce),Tn(this,"version",uce),Tn(this,"pending",new Map),Tn(this,"cached",[]),Tn(this,"initialized",!1),Tn(this,"storagePrefix",xa),Tn(this,"subscribeTimeout",Ie.toMiliseconds(Ie.ONE_MINUTE)),Tn(this,"initialSubscribeTimeout",Ie.toMiliseconds(Ie.ONE_SECOND*15)),Tn(this,"clientId"),Tn(this,"batchSubscribeTopicsLimit",500),Tn(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),await this.restore()),this.initialized=!0}),Tn(this,"subscribe",async(r,i)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}});try{const s=sb(i),o={topic:r,relay:s,transportType:i==null?void 0:i.transportType};this.pending.set(r,o);const a=await this.rpcSubscribe(r,s,i);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:r,opts:i}})),a}catch(s){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(s),s}}),Tn(this,"unsubscribe",async(r,i)=>{this.isInitialized(),typeof(i==null?void 0:i.id)<"u"?await this.unsubscribeById(r,i.id,i):await this.unsubscribeByTopic(r,i)}),Tn(this,"isSubscribed",r=>new Promise(i=>{i(this.topicMap.topics.includes(r))})),Tn(this,"isKnownTopic",r=>new Promise(i=>{i(this.topicMap.topics.includes(r)||this.pending.has(r)||this.cached.some(s=>s.topic===r))})),Tn(this,"on",(r,i)=>{this.events.on(r,i)}),Tn(this,"once",(r,i)=>{this.events.once(r,i)}),Tn(this,"off",(r,i)=>{this.events.off(r,i)}),Tn(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),Tn(this,"start",async()=>{await this.onConnect()}),Tn(this,"stop",async()=>{await this.onDisconnect()}),Tn(this,"restart",async()=>{await this.restore(),await this.onRestart()}),Tn(this,"checkPending",async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const r=[];this.pending.forEach(i=>{r.push(i)}),await this.batchSubscribe(r)}),Tn(this,"registerEventListeners",()=>{this.relayer.core.heartbeat.on(_d.pulse,async()=>{await this.checkPending()}),this.events.on(ls.created,async r=>{const i=ls.created;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()}),this.events.on(ls.deleted,async r=>{const i=ls.deleted;this.logger.info(`Emitting ${i}`),this.logger.debug({type:"event",event:i,data:r}),await this.persist()})}),this.relayer=e,this.logger=Ti(n,this.name),this.clientId=""}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,n){let r=!1;try{r=this.getSubscription(e).topic===n}catch{}return r}reset(){this.cached=[],this.initialized=!0}onDisable(){this.values.length>0&&(this.cached=this.values),this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,n){const r=this.topicMap.get(e);await Promise.all(r.map(async i=>await this.unsubscribeById(e,i,n)))}async unsubscribeById(e,n,r){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:n,opts:r}});try{const i=sb(r);await this.restartToComplete({topic:e,id:n,relay:i}),await this.rpcUnsubscribe(e,n,i);const s=Hn("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,n,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:n,opts:r}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,n,r){var i;(!r||(r==null?void 0:r.transportType)===Un.relay)&&await this.restartToComplete({topic:e,id:e,relay:n});const s={method:ag(n.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});const o=(i=r==null?void 0:r.internal)==null?void 0:i.throwOnFailedPublish;try{const a=await this.getSubscriptionId(e);if((r==null?void 0:r.transportType)===Un.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(u=>this.logger.warn(u))},Ie.toMiliseconds(Ie.ONE_SECOND)),a;const c=new Promise(async u=>{const d=h=>{h.topic===e&&(this.events.removeListener(ls.created,d),u(h.id))};this.events.on(ls.created,d);try{const h=await hl(new Promise((f,g)=>{this.relayer.request(s).catch(m=>{this.logger.warn(m,m==null?void 0:m.message),g(m)}).then(f)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(ls.created,d),u(h)}catch{}}),l=await hl(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!l&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return l?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Cr.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const n=e[0].relay,r={method:ag(n.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});try{await await hl(new Promise(i=>{this.relayer.request(r).catch(s=>this.logger.warn(s)).then(i)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(Cr.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const n=e[0].relay,r={method:ag(n.protocol).batchFetchMessages,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:r});let i;try{i=await await hl(new Promise((s,o)=>{this.relayer.request(r).catch(a=>{this.logger.warn(a),o(a)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Cr.connection_stalled)}return i}rpcUnsubscribe(e,n,r){const i={method:ag(r.protocol).unsubscribe,params:{topic:e,id:n}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,n){this.setSubscription(e,XE($p({},n),{id:e})),this.pending.delete(n.topic)}onBatchSubscribe(e){e.length&&e.forEach(n=>{this.setSubscription(n.id,$p({},n)),this.pending.delete(n.topic)})}async onUnsubscribe(e,n,r){this.events.removeAllListeners(n),this.hasSubscription(n,e)&&this.deleteSubscription(n,r),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,n){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:n}),this.addSubscription(e,n)}addSubscription(e,n){this.subscriptions.set(e,$p({},n)),this.topicMap.set(n.topic,e),this.events.emit(ls.created,n)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const n=this.subscriptions.get(e);if(!n){const{message:r}=Te("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return n}deleteSubscription(e,n){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:n});const r=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(r.topic,e),this.events.emit(ls.deleted,XE($p({},r),{reason:n}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(ls.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],n=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let r=0;r"u"||!e.length)return;if(this.subscriptions.size){const{message:n}=Te("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(n),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(n)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async n=>XE($p({},n),{id:await this.getSubscriptionId(n.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const n=await this.rpcBatchFetchMessages(e);n&&n.messages&&(await kre(Ie.toMiliseconds(Ie.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(n.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||(this.clientId=await this.relayer.core.crypto.getClientId()),this.clientId}async getSubscriptionId(e){return oa(e+await this.getClientId())}}var Aue=Object.defineProperty,dD=Object.getOwnPropertySymbols,Cue=Object.prototype.hasOwnProperty,Tue=Object.prototype.propertyIsEnumerable,sA=(t,e,n)=>e in t?Aue(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,hD=(t,e)=>{for(var n in e||(e={}))Cue.call(e,n)&&sA(t,n,e[n]);if(dD)for(var n of dD(e))Tue.call(e,n)&&sA(t,n,e[n]);return t},nn=(t,e,n)=>sA(t,typeof e!="symbol"?e+"":e,n);class Iue extends rZ{constructor(e){super(e),nn(this,"protocol","wc"),nn(this,"version",2),nn(this,"core"),nn(this,"logger"),nn(this,"events",new co.EventEmitter),nn(this,"provider"),nn(this,"messages"),nn(this,"subscriber"),nn(this,"publisher"),nn(this,"name",ice),nn(this,"transportExplicitlyClosed",!1),nn(this,"initialized",!1),nn(this,"connectionAttemptInProgress",!1),nn(this,"relayUrl"),nn(this,"projectId"),nn(this,"packageName"),nn(this,"bundleId"),nn(this,"hasExperiencedNetworkDisruption",!1),nn(this,"pingTimeout"),nn(this,"heartBeatTimeout",Ie.toMiliseconds(Ie.THIRTY_SECONDS+Ie.FIVE_SECONDS)),nn(this,"reconnectTimeout"),nn(this,"connectPromise"),nn(this,"reconnectInProgress",!1),nn(this,"requestsInFlight",[]),nn(this,"connectTimeout",Ie.toMiliseconds(Ie.ONE_SECOND*15)),nn(this,"request",async n=>{var r,i;this.logger.debug("Publishing Request Payload");const s=n.id||$u().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:n.method,topic:(r=n.params)==null?void 0:r.topic},"relayer.request - publishing...");const o=`${s}:${((i=n.params)==null?void 0:i.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(n);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}}),nn(this,"resetPingTimeout",()=>{tb()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var n,r,i,s;try{this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(s=(i=(r=(n=this.provider)==null?void 0:n.connection)==null?void 0:r.socket)==null?void 0:i.terminate)==null||s.call(i)}catch(o){this.logger.warn(o,o==null?void 0:o.message)}},this.heartBeatTimeout))}),nn(this,"onPayloadHandler",n=>{this.onProviderPayload(n),this.resetPingTimeout()}),nn(this,"onConnectHandler",()=>{this.logger.warn({},"Relayer connected 🛜"),this.startPingTimeout(),this.events.emit(Cr.connect)}),nn(this,"onDisconnectHandler",()=>{this.logger.warn({},"Relayer disconnected 🛑"),this.requestsInFlight=[],this.onProviderDisconnect()}),nn(this,"onProviderErrorHandler",n=>{this.logger.fatal(`Fatal socket error: ${n.message}`),this.events.emit(Cr.error,n),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()}),nn(this,"registerProviderListeners",()=>{this.provider.on(Os.payload,this.onPayloadHandler),this.provider.on(Os.connect,this.onConnectHandler),this.provider.on(Os.disconnect,this.onDisconnectHandler),this.provider.on(Os.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?Ti(e.logger,this.name):m0(w0({level:e.logger||rce})),this.messages=new lue(this.logger,e.core),this.subscriber=new xue(this,this.logger),this.publisher=new gue(this,this.logger),this.relayUrl=(e==null?void 0:e.relayUrl)||E5,this.projectId=e.projectId,Ere()?this.packageName=t3():_re()&&(this.bundleId=t3()),this.provider={}}async init(){this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.transportOpen().catch(e=>this.logger.warn(e,e==null?void 0:e.message))}get context(){return ns(this.logger)}get connected(){var e,n,r;return((r=(n=(e=this.provider)==null?void 0:e.connection)==null?void 0:n.socket)==null?void 0:r.readyState)===1||!1}get connecting(){var e,n,r;return((r=(n=(e=this.provider)==null?void 0:e.connection)==null?void 0:n.socket)==null?void 0:r.readyState)===0||this.connectPromise!==void 0||!1}async publish(e,n,r){this.isInitialized(),await this.publisher.publish(e,n,r),await this.recordMessageEvent({topic:e,message:n,publishedAt:Date.now(),transportType:Un.relay},jw.outbound)}async subscribe(e,n){var r,i,s;this.isInitialized(),(!(n!=null&&n.transportType)||(n==null?void 0:n.transportType)==="relay")&&await this.toEstablishConnection();const o=typeof((r=n==null?void 0:n.internal)==null?void 0:r.throwOnFailedPublish)>"u"?!0:(i=n==null?void 0:n.internal)==null?void 0:i.throwOnFailedPublish;let a=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",c;const l=u=>{u.topic===e&&(this.subscriber.off(ls.created,l),c())};return await Promise.all([new Promise(u=>{c=u,this.subscriber.on(ls.created,l)}),new Promise(async(u,d)=>{a=await this.subscriber.subscribe(e,hD({internal:{throwOnFailedPublish:o}},n)).catch(h=>{o&&d(h)})||a,u()})]),a}async unsubscribe(e,n){this.isInitialized(),await this.subscriber.unsubscribe(e,n)}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}off(e,n){this.events.off(e,n)}removeListener(e,n){this.events.removeListener(e,n)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await hl(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.info("Starting WS connection skipped because the client has no topics to work with.");return}if(this.connectPromise?(this.logger.debug({},"Waiting for existing connection attempt to resolve..."),await this.connectPromise,this.logger.debug({},"Existing connection attempt resolved")):(this.connectPromise=new Promise(async(n,r)=>{await this.connect(e).then(n).catch(r).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},"Restarting transport..."),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await W3())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if((e==null?void 0:e.length)===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const n=e.sort((r,i)=>r.publishedAt-i.publishedAt);this.logger.debug(`Batch of ${n.length} message events sorted`);for(const r of n)try{await this.onMessageEvent(r)}catch(i){this.logger.warn(i,"Error while processing batch message event: "+(i==null?void 0:i.message))}this.logger.trace(`Batch of ${n.length} message events processed`)}async onLinkMessageEvent(e,n){const{topic:r}=e;if(!n.sessionExists){const i=gr(Ie.FIVE_MINUTES),s={topic:r,expiry:i,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(r,s)}this.events.emit(Cr.message,e),await this.recordMessageEvent(e,jw.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let n=1;for(;n<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${n}...`),await this.createProvider(),await new Promise(async(r,i)=>{const s=()=>{i(new Error("Connection interrupted while trying to connect"))};this.provider.once(Os.disconnect,s),await hl(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{i(o)}).finally(()=>{this.provider.off(Os.disconnect,s),clearTimeout(this.reconnectTimeout)}),await new Promise(async(o,a)=>{const c=()=>{i(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Os.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(Os.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,r()})}catch(r){await this.subscriber.stop();const i=r;this.logger.warn({},i.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${n}`);break}await new Promise(r=>setTimeout(r,Ie.toMiliseconds(n*1))),n++}}startPingTimeout(){var e,n,r,i,s;if(tb())try{(n=(e=this.provider)==null?void 0:e.connection)!=null&&n.socket&&((s=(i=(r=this.provider)==null?void 0:r.connection)==null?void 0:i.socket)==null||s.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o==null?void 0:o.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new lo(new Gae(Tre({sdkVersion:Qx,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,n){const{topic:r,message:i}=e;await this.messages.set(r,i,n)}async shouldIgnoreMessageEvent(e){const{topic:n,message:r}=e;if(!r||r.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${r}`),!0;if(!await this.subscriber.isKnownTopic(n))return this.logger.warn(`Ignoring message for unknown topic ${n}`),!0;const i=this.messages.has(n,r);return i&&this.logger.warn(`Ignoring duplicate message: ${r}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),NT(e)){if(!e.method.endsWith(sce))return;const n=e.params,{topic:r,message:i,publishedAt:s,attestation:o}=n.data,a={topic:r,message:i,publishedAt:s,transportType:Un.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(hD({type:"event",event:n.id},a)),this.events.emit(n.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else g1(e)&&this.events.emit(Cr.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,jw.inbound),this.events.emit(Cr.message,e))}async acknowledgePayload(e){const n=f1(e.id,!0);await this.provider.connection.send(n)}unregisterProviderListeners(){this.provider.off(Os.payload,this.onPayloadHandler),this.provider.off(Os.connect,this.onConnectHandler),this.provider.off(Os.disconnect,this.onDisconnectHandler),this.provider.off(Os.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await W3();pae(async n=>{e!==n&&(e=n,n?await this.transportOpen().catch(r=>this.logger.error(r,r==null?void 0:r.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))}),this.core.heartbeat.on(_d.pulse,async()=>{if(!this.transportExplicitlyClosed&&!this.connected&&yae())try{await this.confirmOnlineStateOrThrow(),await this.transportOpen()}catch(n){this.logger.warn(n,n==null?void 0:n.message)}})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(Cr.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e==null?void 0:e.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},Ie.toMiliseconds(oce)))))}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){if(await this.confirmOnlineStateOrThrow(),!this.connected){if(this.connectPromise){await this.connectPromise;return}await this.connect()}}}function Mue(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}function fD(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function pD(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const Nue="[object RegExp]",Pue="[object String]",Due="[object Number]",Rue="[object Boolean]",gD="[object Arguments]",Oue="[object Symbol]",Uue="[object Date]",Lue="[object Map]",kue="[object Set]",$ue="[object Array]",Bue="[object Function]",Fue="[object ArrayBuffer]",YE="[object Object]",zue="[object Error]",Hue="[object DataView]",jue="[object Uint8Array]",Vue="[object Uint8ClampedArray]",Wue="[object Uint16Array]",Gue="[object Uint32Array]",que="[object BigUint64Array]",Kue="[object Int8Array]",Xue="[object Int16Array]",Yue="[object Int32Array]",Zue="[object BigInt64Array]",Jue="[object Float32Array]",Que="[object Float64Array]";function ede(){}function mD(t){if(!t||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)==="[object Object]":!1}function tde(t,e,n){return cg(t,e,void 0,void 0,void 0,void 0,n)}function cg(t,e,n,r,i,s,o){const a=o(t,e,n,r,i,s);if(a!==void 0)return a;if(typeof t==typeof e)switch(typeof t){case"bigint":case"string":case"boolean":case"symbol":case"undefined":return t===e;case"number":return t===e||Object.is(t,e);case"function":return t===e;case"object":return Lg(t,e,s,o)}return Lg(t,e,s,o)}function Lg(t,e,n,r){if(Object.is(t,e))return!0;let i=pD(t),s=pD(e);if(i===gD&&(i=YE),s===gD&&(s=YE),i!==s)return!1;switch(i){case Pue:return t.toString()===e.toString();case Due:{const c=t.valueOf(),l=e.valueOf();return Mue(c,l)}case Rue:case Uue:case Oue:return Object.is(t.valueOf(),e.valueOf());case Nue:return t.source===e.source&&t.flags===e.flags;case Bue:return t===e}n=n??new Map;const o=n.get(t),a=n.get(e);if(o!=null&&a!=null)return o===e;n.set(t,e),n.set(e,t);try{switch(i){case Lue:{if(t.size!==e.size)return!1;for(const[c,l]of t.entries())if(!e.has(c)||!cg(l,e.get(c),c,t,e,n,r))return!1;return!0}case kue:{if(t.size!==e.size)return!1;const c=Array.from(t.values()),l=Array.from(e.values());for(let u=0;ucg(d,f,void 0,t,e,n,r));if(h===-1)return!1;l.splice(h,1)}return!0}case $ue:case jue:case Vue:case Wue:case Gue:case que:case Kue:case Xue:case Yue:case Zue:case Jue:case Que:{if(typeof Buffer<"u"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let c=0;ce in t?rde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,wD=(t,e)=>{for(var n in e||(e={}))ide.call(e,n)&&oA(t,n,e[n]);if(yD)for(var n of yD(e))sde.call(e,n)&&oA(t,n,e[n]);return t},Di=(t,e,n)=>oA(t,typeof e!="symbol"?e+"":e,n);class Ad extends iZ{constructor(e,n,r,i=xa,s=void 0){super(e,n,r,i),this.core=e,this.logger=n,this.name=r,Di(this,"map",new Map),Di(this,"version",ace),Di(this,"cached",[]),Di(this,"initialized",!1),Di(this,"getKey"),Di(this,"storagePrefix",xa),Di(this,"recentlyDeleted",[]),Di(this,"recentlyDeletedLimit",200),Di(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!Br(o)?this.map.set(this.getKey(o),o):Woe(o)?this.map.set(o.id,o):Goe(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)}),Di(this,"set",async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())}),Di(this,"get",o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o))),Di(this,"getAll",o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>nde(a[c],o[c]))):this.values)),Di(this,"update",async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=wD(wD({},this.getData(o)),a);this.map.set(o,c),await this.persist()}),Di(this,"delete",async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())}),this.logger=Ti(n,this.name),this.storagePrefix=i,this.getKey=s}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const n=this.map.get(e);if(!n){if(this.recentlyDeleted.includes(e)){const{message:i}=Te("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:r}=Te("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(r),new Error(r)}return n}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:n}=Te("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(n),new Error(n)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}}var ode=Object.defineProperty,ade=(t,e,n)=>e in t?ode(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,kt=(t,e,n)=>ade(t,typeof e!="symbol"?e+"":e,n);class cde{constructor(e,n){this.core=e,this.logger=n,kt(this,"name",dce),kt(this,"version",hce),kt(this,"events",new Q2),kt(this,"pairings"),kt(this,"initialized",!1),kt(this,"storagePrefix",xa),kt(this,"ignoredPayloadTypes",[sc]),kt(this,"registeredMethods",[]),kt(this,"init",async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))}),kt(this,"register",({methods:r})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...r])]}),kt(this,"create",async r=>{this.isInitialized();const i=Yx(),s=await this.core.crypto.setSymKey(i),o=gr(Ie.FIVE_MINUTES),a={protocol:b5},c={topic:s,expiry:o,relay:a,active:!1,methods:r==null?void 0:r.methods},l=L3({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:i,relay:a,expiryTimestamp:o,methods:r==null?void 0:r.methods});return this.events.emit(Au.create,c),this.core.expirer.set(s,o),await this.pairings.set(s,c),await this.core.relayer.subscribe(s,{transportType:r==null?void 0:r.transportType}),{topic:s,uri:l}}),kt(this,"pair",async r=>{this.isInitialized();const i=this.core.eventClient.createEvent({properties:{topic:r==null?void 0:r.uri,trace:[ta.pairing_started]}});this.isValidPair(r,i);const{topic:s,symKey:o,relay:a,expiryTimestamp:c,methods:l}=U3(r.uri);i.props.properties.topic=s,i.addTrace(ta.pairing_uri_validation_success),i.addTrace(ta.pairing_uri_not_expired);let u;if(this.pairings.keys.includes(s)){if(u=this.pairings.get(s),i.addTrace(ta.existing_pairing),u.active)throw i.setError(Ga.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);i.addTrace(ta.pairing_not_expired)}const d=c||gr(Ie.FIVE_MINUTES),h={topic:s,relay:a,expiry:d,active:!1,methods:l};this.core.expirer.set(s,d),await this.pairings.set(s,h),i.addTrace(ta.store_new_pairing),r.activatePairing&&await this.activate({topic:s}),this.events.emit(Au.create,h),i.addTrace(ta.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),i.addTrace(ta.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{i.setError(Ga.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:a})}catch(f){throw i.setError(Ga.subscribe_pairing_topic_failure),f}return i.addTrace(ta.subscribe_pairing_topic_success),h}),kt(this,"activate",async({topic:r})=>{this.isInitialized();const i=gr(Ie.FIVE_MINUTES);this.core.expirer.set(r,i),await this.pairings.update(r,{active:!0,expiry:i})}),kt(this,"ping",async r=>{this.isInitialized(),await this.isValidPing(r),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:i}=r;if(this.pairings.keys.includes(i)){const s=await this.sendRequest(i,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=yu();this.events.once(hn("pairing_ping",s),({error:l})=>{l?c(l):a()}),await o()}}),kt(this,"updateExpiry",async({topic:r,expiry:i})=>{this.isInitialized(),await this.pairings.update(r,{expiry:i})}),kt(this,"updateMetadata",async({topic:r,metadata:i})=>{this.isInitialized(),await this.pairings.update(r,{peerMetadata:i})}),kt(this,"getPairings",()=>(this.isInitialized(),this.pairings.values)),kt(this,"disconnect",async r=>{this.isInitialized(),await this.isValidDisconnect(r);const{topic:i}=r;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",Hn("USER_DISCONNECTED")),await this.deletePairing(i))}),kt(this,"formatUriFromPairing",r=>{this.isInitialized();const{topic:i,relay:s,expiry:o,methods:a}=r,c=this.core.crypto.keychain.get(i);return L3({protocol:this.core.protocol,version:this.core.version,topic:i,symKey:c,relay:s,expiryTimestamp:o,methods:a})}),kt(this,"sendRequest",async(r,i,s)=>{const o=fl(i,s),a=await this.core.crypto.encode(r,o),c=Lp[i].req;return this.core.history.set(r,o),this.core.relayer.publish(r,a,c),o.id}),kt(this,"sendResult",async(r,i,s)=>{const o=f1(r,s),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=Lp[c].res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),kt(this,"sendError",async(r,i,s)=>{const o=p1(r,s),a=await this.core.crypto.encode(i,o),c=(await this.core.history.get(i,r)).request.method,l=Lp[c]?Lp[c].res:Lp.unregistered_method.res;await this.core.relayer.publish(i,a,l),await this.core.history.resolve(o)}),kt(this,"deletePairing",async(r,i)=>{await this.core.relayer.unsubscribe(r),await Promise.all([this.pairings.delete(r,Hn("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(r),i?Promise.resolve():this.core.expirer.del(r)])}),kt(this,"cleanup",async()=>{const r=this.pairings.getAll().filter(i=>Jc(i.expiry));await Promise.all(r.map(i=>this.deletePairing(i.topic)))}),kt(this,"onRelayEventRequest",async r=>{const{topic:i,payload:s}=r;switch(s.method){case"wc_pairingPing":return await this.onPairingPingRequest(i,s);case"wc_pairingDelete":return await this.onPairingDeleteRequest(i,s);default:return await this.onUnknownRpcMethodRequest(i,s)}}),kt(this,"onRelayEventResponse",async r=>{const{topic:i,payload:s}=r,o=(await this.core.history.get(i,s.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(i,s);default:return this.onUnknownRpcMethodResponse(o)}}),kt(this,"onPairingPingRequest",async(r,i)=>{const{id:s}=i;try{this.isValidPing({topic:r}),await this.sendResult(s,r,!0),this.events.emit(Au.ping,{id:s,topic:r})}catch(o){await this.sendError(s,r,o),this.logger.error(o)}}),kt(this,"onPairingPingResponse",(r,i)=>{const{id:s}=i;setTimeout(()=>{ia(i)?this.events.emit(hn("pairing_ping",s),{}):Vs(i)&&this.events.emit(hn("pairing_ping",s),{error:i.error})},500)}),kt(this,"onPairingDeleteRequest",async(r,i)=>{const{id:s}=i;try{this.isValidDisconnect({topic:r}),await this.deletePairing(r),this.events.emit(Au.delete,{id:s,topic:r})}catch(o){await this.sendError(s,r,o),this.logger.error(o)}}),kt(this,"onUnknownRpcMethodRequest",async(r,i)=>{const{id:s,method:o}=i;try{if(this.registeredMethods.includes(o))return;const a=Hn("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,r,a),this.logger.error(a)}catch(a){await this.sendError(s,r,a),this.logger.error(a)}}),kt(this,"onUnknownRpcMethodResponse",r=>{this.registeredMethods.includes(r)||this.logger.error(Hn("WC_METHOD_UNSUPPORTED",r))}),kt(this,"isValidPair",(r,i)=>{var s;if(!Fi(r)){const{message:a}=Te("MISSING_OR_INVALID",`pair() params: ${r}`);throw i.setError(Ga.malformed_pairing_uri),new Error(a)}if(!Voe(r.uri)){const{message:a}=Te("MISSING_OR_INVALID",`pair() uri: ${r.uri}`);throw i.setError(Ga.malformed_pairing_uri),new Error(a)}const o=U3(r==null?void 0:r.uri);if(!((s=o==null?void 0:o.relay)!=null&&s.protocol)){const{message:a}=Te("MISSING_OR_INVALID","pair() uri#relay-protocol");throw i.setError(Ga.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=Te("MISSING_OR_INVALID","pair() uri#symKey");throw i.setError(Ga.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&Ie.toMiliseconds(o==null?void 0:o.expiryTimestamp){if(!Fi(r)){const{message:s}=Te("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(s)}const{topic:i}=r;await this.isValidPairingTopic(i)}),kt(this,"isValidDisconnect",async r=>{if(!Fi(r)){const{message:s}=Te("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(s)}const{topic:i}=r;await this.isValidPairingTopic(i)}),kt(this,"isValidPairingTopic",async r=>{if(!cr(r,!1)){const{message:i}=Te("MISSING_OR_INVALID",`pairing topic should be a string: ${r}`);throw new Error(i)}if(!this.pairings.keys.includes(r)){const{message:i}=Te("NO_MATCHING_KEY",`pairing topic doesn't exist: ${r}`);throw new Error(i)}if(Jc(this.pairings.get(r).expiry)){await this.deletePairing(r);const{message:i}=Te("EXPIRED",`pairing topic: ${r}`);throw new Error(i)}}),this.core=e,this.logger=Ti(n,this.name),this.pairings=new Ad(this.core,this.logger,this.name,this.storagePrefix)}get context(){return ns(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Cr.message,async e=>{const{topic:n,message:r,transportType:i}=e;if(this.pairings.keys.includes(n)&&i!==Un.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(r)))try{const s=await this.core.crypto.decode(n,r);NT(s)?(this.core.history.set(n,s),await this.onRelayEventRequest({topic:n,payload:s})):g1(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:n,payload:s}),this.core.history.delete(n,s.id)),await this.core.relayer.messages.ack(n,r)}catch(s){this.logger.error(s)}})}registerExpirerEvents(){this.core.expirer.on(zs.expired,async e=>{const{topic:n}=v8(e.target);n&&this.pairings.keys.includes(n)&&(await this.deletePairing(n,!0),this.events.emit(Au.expire,{topic:n}))})}}var lde=Object.defineProperty,ude=(t,e,n)=>e in t?lde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Or=(t,e,n)=>ude(t,typeof e!="symbol"?e+"":e,n);class dde extends eZ{constructor(e,n){super(e,n),this.core=e,this.logger=n,Or(this,"records",new Map),Or(this,"events",new co.EventEmitter),Or(this,"name",fce),Or(this,"version",pce),Or(this,"cached",[]),Or(this,"initialized",!1),Or(this,"storagePrefix",xa),Or(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.records.set(r.id,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),Or(this,"set",(r,i,s)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:r,request:i,chainId:s}),this.records.has(i.id))return;const o={id:i.id,topic:r,request:{method:i.method,params:i.params||null},chainId:s,expiry:gr(Ie.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(wo.created,o)}),Or(this,"resolve",async r=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:r}),!this.records.has(r.id))return;const i=await this.getRecord(r.id);typeof i.response>"u"&&(i.response=Vs(r)?{error:r.error}:{result:r.result},this.records.set(i.id,i),this.persist(),this.events.emit(wo.updated,i))}),Or(this,"get",async(r,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:r,id:i}),await this.getRecord(i))),Or(this,"delete",(r,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(s=>{if(s.topic===r){if(typeof i<"u"&&s.id!==i)return;this.records.delete(s.id),this.events.emit(wo.deleted,s)}}),this.persist()}),Or(this,"exists",async(r,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===r:!1)),Or(this,"on",(r,i)=>{this.events.on(r,i)}),Or(this,"once",(r,i)=>{this.events.once(r,i)}),Or(this,"off",(r,i)=>{this.events.off(r,i)}),Or(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=Ti(n,this.name)}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(n=>{if(typeof n.response<"u")return;const r={topic:n.topic,request:fl(n.request.method,n.request.params,n.id),chainId:n.chainId};return e.push(r)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const n=this.records.get(e);if(!n){const{message:r}=Te("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(r)}return n}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(wo.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:n}=Te("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(n),new Error(n)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(wo.created,e=>{const n=wo.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,record:e})}),this.events.on(wo.updated,e=>{const n=wo.updated;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,record:e})}),this.events.on(wo.deleted,e=>{const n=wo.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,record:e})}),this.core.heartbeat.on(_d.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(n=>{Ie.toMiliseconds(n.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${n.id}`),this.records.delete(n.id),this.events.emit(wo.deleted,n,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}}var hde=Object.defineProperty,fde=(t,e,n)=>e in t?hde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ri=(t,e,n)=>fde(t,typeof e!="symbol"?e+"":e,n);class pde extends oZ{constructor(e,n){super(e,n),this.core=e,this.logger=n,ri(this,"expirations",new Map),ri(this,"events",new co.EventEmitter),ri(this,"name",gce),ri(this,"version",mce),ri(this,"cached",[]),ri(this,"initialized",!1),ri(this,"storagePrefix",xa),ri(this,"init",async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(r=>this.expirations.set(r.target,r)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),ri(this,"has",r=>{try{const i=this.formatTarget(r);return typeof this.getExpiration(i)<"u"}catch{return!1}}),ri(this,"set",(r,i)=>{this.isInitialized();const s=this.formatTarget(r),o={target:s,expiry:i};this.expirations.set(s,o),this.checkExpiry(s,o),this.events.emit(zs.created,{target:s,expiration:o})}),ri(this,"get",r=>{this.isInitialized();const i=this.formatTarget(r);return this.getExpiration(i)}),ri(this,"del",r=>{if(this.isInitialized(),this.has(r)){const i=this.formatTarget(r),s=this.getExpiration(i);this.expirations.delete(i),this.events.emit(zs.deleted,{target:i,expiration:s})}}),ri(this,"on",(r,i)=>{this.events.on(r,i)}),ri(this,"once",(r,i)=>{this.events.once(r,i)}),ri(this,"off",(r,i)=>{this.events.off(r,i)}),ri(this,"removeListener",(r,i)=>{this.events.removeListener(r,i)}),this.logger=Ti(n,this.name)}get context(){return ns(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return Ire(e);if(typeof e=="number")return Mre(e);const{message:n}=Te("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(n)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(zs.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:n}=Te("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(n),new Error(n)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const n=this.expirations.get(e);if(!n){const{message:r}=Te("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(r),new Error(r)}return n}checkExpiry(e,n){const{expiry:r}=n;Ie.toMiliseconds(r)-Date.now()<=0&&this.expire(e,n)}expire(e,n){this.expirations.delete(e),this.events.emit(zs.expired,{target:e,expiration:n})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,n)=>this.checkExpiry(n,e))}registerEventListeners(){this.core.heartbeat.on(_d.pulse,()=>this.checkExpirations()),this.events.on(zs.created,e=>{const n=zs.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:e}),this.persist()}),this.events.on(zs.expired,e=>{const n=zs.expired;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:e}),this.persist()}),this.events.on(zs.deleted,e=>{const n=zs.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}}var gde=Object.defineProperty,mde=(t,e,n)=>e in t?gde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,or=(t,e,n)=>mde(t,typeof e!="symbol"?e+"":e,n);class yde extends aZ{constructor(e,n,r){super(e,n,r),this.core=e,this.logger=n,this.store=r,or(this,"name",yce),or(this,"abortController"),or(this,"isDevEnv"),or(this,"verifyUrlV3",vce),or(this,"storagePrefix",xa),or(this,"version",v5),or(this,"publicKey"),or(this,"fetchPromise"),or(this,"init",async()=>{var i;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&Ie.toMiliseconds((i=this.publicKey)==null?void 0:i.expiresAt){if(!op()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:a}=i,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${a}`;try{const l=cd(),u=this.startAbortTimer(Ie.ONE_SECOND*5),d=await new Promise((h,f)=>{const g=()=>{window.removeEventListener("message",y),l.body.removeChild(m),f("attestation aborted")};this.abortController.signal.addEventListener("abort",g);const m=l.createElement("iframe");m.src=c,m.style.display="none",m.addEventListener("error",g,{signal:this.abortController.signal});const y=p=>{if(p.data&&typeof p.data=="string")try{const v=JSON.parse(p.data);if(v.type==="verify_attestation"){if(Px(v.attestation).payload.id!==o)return;clearInterval(u),l.body.removeChild(m),this.abortController.signal.removeEventListener("abort",g),window.removeEventListener("message",y),h(v.attestation===null?"":v.attestation)}}catch(v){this.logger.warn(v)}};l.body.appendChild(m),window.addEventListener("message",y,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",d),d}catch(l){this.logger.warn(l)}return""}),or(this,"resolve",async i=>{if(this.isDevEnv)return"";const{attestationId:s,hash:o,encryptedId:a}=i;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(Px(s).payload.id!==a)return;const l=await this.isValidJwtAttestation(s);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!o)return;const c=this.getVerifyUrl(i==null?void 0:i.verifyUrl);return this.fetchAttestation(o,c)}),or(this,"fetchAttestation",async(i,s)=>{this.logger.debug(`resolving attestation: ${i} from url: ${s}`);const o=this.startAbortTimer(Ie.ONE_SECOND*5),a=await fetch(`${s}/attestation/${i}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0}),or(this,"getVerifyUrl",i=>{let s=i||Ug;return bce.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${Ug}`),s=Ug),s}),or(this,"fetchPublicKey",async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const i=this.startAbortTimer(Ie.FIVE_SECONDS),s=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(i),await s.json()}catch(i){this.logger.warn(i)}}),or(this,"persistPublicKey",async i=>{this.logger.debug("persisting public key to local storage",i),await this.store.setItem(this.storeKey,i),this.publicKey=i}),or(this,"removePublicKey",async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),or(this,"isValidJwtAttestation",async i=>{const s=await this.getPublicKey();try{if(s)return this.validateAttestation(i,s)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(i,o)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}}),or(this,"getPublicKey",async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),or(this,"fetchAndPersistPublicKey",async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async s=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),s(o))});const i=await this.fetchPromise;return this.fetchPromise=void 0,i}),or(this,"validateAttestation",(i,s)=>{const o=Soe(i,s.publicKey),a={hasExpired:Ie.toMiliseconds(o.exp)this.abortController.abort(),Ie.toMiliseconds(e))}}var wde=Object.defineProperty,vde=(t,e,n)=>e in t?wde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,vD=(t,e,n)=>vde(t,typeof e!="symbol"?e+"":e,n);class bde extends cZ{constructor(e,n){super(e,n),this.projectId=e,this.logger=n,vD(this,"context",Ece),vD(this,"registerDeviceToken",async r=>{const{clientId:i,token:s,notificationType:o,enableEncrypted:a=!1}=r,c=`${_ce}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:o,token:s,always_raw:a})})}),this.logger=Ti(n,this.context)}}var Ede=Object.defineProperty,bD=Object.getOwnPropertySymbols,_de=Object.prototype.hasOwnProperty,Sde=Object.prototype.propertyIsEnumerable,aA=(t,e,n)=>e in t?Ede(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Bp=(t,e)=>{for(var n in e||(e={}))_de.call(e,n)&&aA(t,n,e[n]);if(bD)for(var n of bD(e))Sde.call(e,n)&&aA(t,n,e[n]);return t},Er=(t,e,n)=>aA(t,typeof e!="symbol"?e+"":e,n);class xde extends lZ{constructor(e,n,r=!0){super(e,n,r),this.core=e,this.logger=n,Er(this,"context",xce),Er(this,"storagePrefix",xa),Er(this,"storageVersion",Sce),Er(this,"events",new Map),Er(this,"shouldPersist",!1),Er(this,"init",async()=>{if(!gT())try{const i={eventId:r3(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:y8(this.core.relayer.protocol,this.core.relayer.version,Qx)}}};await this.sendEvent([i])}catch(i){this.logger.warn(i)}}),Er(this,"createEvent",i=>{const{event:s="ERROR",type:o="",properties:{topic:a,trace:c}}=i,l=r3(),u=this.core.projectId||"",d=Date.now(),h=Bp({eventId:l,timestamp:d,props:{event:s,type:o,properties:{topic:a,trace:c}},bundleId:u,domain:this.getAppDomain()},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,h),this.shouldPersist=!0),h}),Er(this,"getEvent",i=>{const{eventId:s,topic:o}=i;if(s)return this.events.get(s);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return Bp(Bp({},a),this.setMethods(a.eventId))}),Er(this,"deleteEvent",i=>{const{eventId:s}=i;this.events.delete(s),this.shouldPersist=!0}),Er(this,"setEventListeners",()=>{this.core.heartbeat.on(_d.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(i=>{Ie.fromMiliseconds(Date.now())-Ie.fromMiliseconds(i.timestamp)>Ace&&(this.events.delete(i.eventId),this.shouldPersist=!0)})})}),Er(this,"setMethods",i=>({addTrace:s=>this.addTrace(i,s),setError:s=>this.setError(i,s)})),Er(this,"addTrace",(i,s)=>{const o=this.events.get(i);o&&(o.props.properties.trace.push(s),this.events.set(i,o),this.shouldPersist=!0)}),Er(this,"setError",(i,s)=>{const o=this.events.get(i);o&&(o.props.type=s,o.timestamp=Date.now(),this.events.set(i,o),this.shouldPersist=!0)}),Er(this,"persist",async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),Er(this,"restore",async()=>{try{const i=await this.core.storage.getItem(this.storageKey)||[];if(!i.length)return;i.forEach(s=>{this.events.set(s.eventId,Bp(Bp({},s),this.setMethods(s.eventId)))})}catch(i){this.logger.warn(i)}}),Er(this,"submit",async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const i=[];for(const[s,o]of this.events)o.props.type&&i.push(o);if(i.length!==0)try{if((await this.sendEvent(i)).ok)for(const s of i)this.events.delete(s.eventId),this.shouldPersist=!0}catch(s){this.logger.warn(s)}}),Er(this,"sendEvent",async i=>{const s=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${Cce}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${Qx}${s}`,{method:"POST",body:JSON.stringify(i)})}),Er(this,"getAppDomain",()=>m8().url),this.logger=Ti(n,this.context),this.telemetryEnabled=r,r?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var Ade=Object.defineProperty,ED=Object.getOwnPropertySymbols,Cde=Object.prototype.hasOwnProperty,Tde=Object.prototype.propertyIsEnumerable,cA=(t,e,n)=>e in t?Ade(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,_D=(t,e)=>{for(var n in e||(e={}))Cde.call(e,n)&&cA(t,n,e[n]);if(ED)for(var n of ED(e))Tde.call(e,n)&&cA(t,n,e[n]);return t},In=(t,e,n)=>cA(t,typeof e!="symbol"?e+"":e,n);let Ide=class O5 extends YY{constructor(e){var n;super(e),In(this,"protocol",w5),In(this,"version",v5),In(this,"name",Jx),In(this,"relayUrl"),In(this,"projectId"),In(this,"customStoragePrefix"),In(this,"events",new co.EventEmitter),In(this,"logger"),In(this,"heartbeat"),In(this,"relayer"),In(this,"crypto"),In(this,"storage"),In(this,"history"),In(this,"expirer"),In(this,"pairing"),In(this,"verify"),In(this,"echoClient"),In(this,"linkModeSupportedApps"),In(this,"eventClient"),In(this,"initialized",!1),In(this,"logChunkController"),In(this,"on",(a,c)=>this.events.on(a,c)),In(this,"once",(a,c)=>this.events.once(a,c)),In(this,"off",(a,c)=>this.events.off(a,c)),In(this,"removeListener",(a,c)=>this.events.removeListener(a,c)),In(this,"dispatchEnvelope",({topic:a,message:c,sessionExists:l})=>{if(!a||!c)return;const u={topic:a,message:c,publishedAt:Date.now(),transportType:Un.link_mode};this.relayer.onLinkMessageEvent(u,{sessionExists:l})});const r=this.getGlobalCore(e==null?void 0:e.customStoragePrefix);if(r)try{return this.customStoragePrefix=r.customStoragePrefix,this.logger=r.logger,this.heartbeat=r.heartbeat,this.crypto=r.crypto,this.history=r.history,this.expirer=r.expirer,this.storage=r.storage,this.relayer=r.relayer,this.pairing=r.pairing,this.verify=r.verify,this.echoClient=r.echoClient,this.linkModeSupportedApps=r.linkModeSupportedApps,this.eventClient=r.eventClient,this.initialized=r.initialized,this.logChunkController=r.logChunkController,r}catch(a){console.warn("Failed to copy global core",a)}this.projectId=e==null?void 0:e.projectId,this.relayUrl=(e==null?void 0:e.relayUrl)||E5,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=w0({level:typeof(e==null?void 0:e.logger)=="string"&&e.logger?e.logger:Kae.logger,name:Jx}),{logger:s,chunkLoggerController:o}=Q$({opts:i,maxSizeInBytes:e==null?void 0:e.maxLogBlobSizeInBytes,loggerOverride:e==null?void 0:e.logger});this.logChunkController=o,(n=this.logChunkController)!=null&&n.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var a,c;(a=this.logChunkController)!=null&&a.downloadLogsBlobInBrowser&&((c=this.logChunkController)==null||c.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=Ti(s,this.name),this.heartbeat=new $X,this.crypto=new tue(this,this.logger,e==null?void 0:e.keychain),this.history=new dde(this,this.logger),this.expirer=new pde(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new bY(_D(_D({},Xae),e==null?void 0:e.storageOptions)),this.relayer=new Iue({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new cde(this,this.logger),this.verify=new yde(this,this.logger,this.storage),this.echoClient=new bde(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new xde(this,this.logger,e==null?void 0:e.telemetryEnabled),this.setGlobalCore(this)}static async init(e){const n=new O5(e);await n.initialize();const r=await n.crypto.getClientId();return await n.storage.setItem(cce,r),n}get context(){return ns(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(tD,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(tD)||[],this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}getGlobalCore(e=""){try{if(this.isGlobalCoreDisabled())return;const n=`_walletConnectCore_${e}`,r=`${n}_count`;return globalThis[r]=(globalThis[r]||0)+1,globalThis[r]>1&&console.warn(`WalletConnect Core is already initialized. This is probably a mistake and can lead to unexpected behavior. Init() was called ${globalThis[r]} times.`),globalThis[n]}catch(n){console.warn("Failed to get global WalletConnect core",n);return}}setGlobalCore(e){var n;try{if(this.isGlobalCoreDisabled())return;const r=`_walletConnectCore_${((n=e.opts)==null?void 0:n.customStoragePrefix)||""}`;globalThis[r]=e}catch(r){console.warn("Failed to set global WalletConnect core",r)}}isGlobalCoreDisabled(){try{return typeof process<"u"&&qae.DISABLE_GLOBAL_CORE==="true"}catch{return!0}}};const Mde=Ide,U5="wc",L5=2,k5="client",PT=`${U5}@${L5}:${k5}:`,ZE={name:k5,logger:"error"},SD="WALLETCONNECT_DEEPLINK_CHOICE",Nde="proposal",xD="Proposal expired",Pde="session",jd=Ie.SEVEN_DAYS,Dde="engine",_r={wc_sessionPropose:{req:{ttl:Ie.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:1104},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:1106},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:Ie.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:Ie.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:1112},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:Ie.ONE_DAY,prompt:!1,tag:1114},res:{ttl:Ie.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:Ie.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:Ie.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:Ie.FIVE_MINUTES,prompt:!1,tag:1119}}},JE={min:Ie.FIVE_MINUTES,max:Ie.SEVEN_DAYS},Qo={idle:"IDLE",active:"ACTIVE"},Rde={eth_sendTransaction:{key:""},eth_sendRawTransaction:{key:""},wallet_sendCalls:{key:""},solana_signTransaction:{key:"signature"},solana_signAllTransactions:{key:"transactions"},solana_signAndSendTransaction:{key:"signature"},sui_signAndExecuteTransaction:{key:"digest"},sui_signTransaction:{key:""},hedera_signAndExecuteTransaction:{key:"transactionId"},hedera_executeTransaction:{key:"transactionId"},near_signTransaction:{key:""},near_signTransactions:{key:""},tron_signTransaction:{key:"txID"},xrpl_signTransaction:{key:""},xrpl_signTransactionFor:{key:""},algo_signTxn:{key:""},sendTransfer:{key:"txid"},stacks_stxTransfer:{key:"txId"},polkadot_signTransaction:{key:""},cosmos_signDirect:{key:""}},Ode="request",Ude=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],Lde="wc",kde="auth",$de="authKeys",Bde="pairingTopics",Fde="requests",y1=`${Lde}@${1.5}:${kde}:`,Vw=`${y1}:PUB_KEY`;var zde=Object.defineProperty,Hde=Object.defineProperties,jde=Object.getOwnPropertyDescriptors,AD=Object.getOwnPropertySymbols,Vde=Object.prototype.hasOwnProperty,Wde=Object.prototype.propertyIsEnumerable,lA=(t,e,n)=>e in t?zde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Rn=(t,e)=>{for(var n in e||(e={}))Vde.call(e,n)&&lA(t,n,e[n]);if(AD)for(var n of AD(e))Wde.call(e,n)&&lA(t,n,e[n]);return t},Ri=(t,e)=>Hde(t,jde(e)),be=(t,e,n)=>lA(t,typeof e!="symbol"?e+"":e,n);class Gde extends fZ{constructor(e){super(e),be(this,"name",Dde),be(this,"events",new Q2),be(this,"initialized",!1),be(this,"requestQueue",{state:Qo.idle,queue:[]}),be(this,"sessionRequestQueue",{state:Qo.idle,queue:[]}),be(this,"emittedSessionRequests",new $re({limit:500})),be(this,"requestQueueDelay",Ie.ONE_SECOND),be(this,"expectedPairingMethodMap",new Map),be(this,"recentlyDeletedMap",new Map),be(this,"recentlyDeletedLimit",200),be(this,"relayMessageCache",[]),be(this,"pendingSessions",new Map),be(this,"init",async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(_r)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},Ie.toMiliseconds(this.requestQueueDelay)))}),be(this,"connect",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const r=Ri(Rn({},n),{requiredNamespaces:n.requiredNamespaces||{},optionalNamespaces:n.optionalNamespaces||{}});await this.isValidConnect(r),r.optionalNamespaces=Boe(r.requiredNamespaces,r.optionalNamespaces),r.requiredNamespaces={};const{pairingTopic:i,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:a,scopedProperties:c,relays:l}=r;let u=i,d,h=!1;try{if(u){const x=this.client.core.pairing.pairings.get(u);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),h=x.active}}catch(x){throw this.client.logger.error(`connect() -> pairing.get(${u}) failed`),x}if(!u||!h){const{topic:x,uri:T}=await this.client.core.pairing.create();u=x,d=T}if(!u){const{message:x}=Te("NO_MATCHING_KEY",`connect() pairing topic: ${u}`);throw new Error(x)}const f=await this.client.core.crypto.generateKeyPair(),g=_r.wc_sessionPropose.req.ttl||Ie.FIVE_MINUTES,m=gr(g),y=Ri(Rn(Rn({requiredNamespaces:s,optionalNamespaces:o,relays:l??[{protocol:b5}],proposer:{publicKey:f,metadata:this.client.metadata},expiryTimestamp:m,pairingTopic:u},a&&{sessionProperties:a}),c&&{scopedProperties:c}),{id:ra()}),p=hn("session_connect",y.id),{reject:v,resolve:w,done:b}=yu(g,xD),S=({id:x})=>{x===y.id&&(this.client.events.off("proposal_expire",S),this.pendingSessions.delete(y.id),this.events.emit(p,{error:{message:xD,code:0}}))};return this.client.events.on("proposal_expire",S),this.events.once(p,({error:x,session:T})=>{this.client.events.off("proposal_expire",S),x?v(x):T&&w(T)}),await this.sendRequest({topic:u,method:"wc_sessionPropose",params:y,throwOnFailedPublish:!0,clientRpcId:y.id}),await this.setProposal(y.id,y),{uri:d,approval:b}}),be(this,"pair",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(n)}catch(r){throw this.client.logger.error("pair() failed"),r}}),be(this,"approve",async n=>{var r,i,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(r=n==null?void 0:n.id)==null?void 0:r.toString(),trace:[vo.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(_){throw o.setError(iu.no_internet_connection),_}try{await this.isValidProposalId(n==null?void 0:n.id)}catch(_){throw this.client.logger.error(`approve() -> proposal.get(${n==null?void 0:n.id}) failed`),o.setError(iu.proposal_not_found),_}try{await this.isValidApprove(n)}catch(_){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(iu.session_approve_namespace_validation_failure),_}const{id:a,relayProtocol:c,namespaces:l,sessionProperties:u,scopedProperties:d,sessionConfig:h}=n,f=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:g,proposer:m,requiredNamespaces:y,optionalNamespaces:p}=f;let v=(i=this.client.core.eventClient)==null?void 0:i.getEvent({topic:g});v||(v=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:vo.session_approve_started,properties:{topic:g,trace:[vo.session_approve_started,vo.session_namespaces_validation_success]}}));const w=await this.client.core.crypto.generateKeyPair(),b=m.publicKey,S=await this.client.core.crypto.generateSharedKey(w,b),x=Rn(Rn(Rn({relay:{protocol:c??"irn"},namespaces:l,controller:{publicKey:w,metadata:this.client.metadata},expiry:gr(jd)},u&&{sessionProperties:u}),d&&{scopedProperties:d}),h&&{sessionConfig:h}),T=Un.relay;v.addTrace(vo.subscribing_session_topic);try{await this.client.core.relayer.subscribe(S,{transportType:T})}catch(_){throw v.setError(iu.subscribe_session_topic_failure),_}v.addTrace(vo.subscribe_session_topic_success);const N=Ri(Rn({},x),{topic:S,requiredNamespaces:y,optionalNamespaces:p,pairingTopic:g,acknowledged:!1,self:x.controller,peer:{publicKey:m.publicKey,metadata:m.metadata},controller:w,transportType:Un.relay});await this.client.session.set(S,N),v.addTrace(vo.store_session);try{v.addTrace(vo.publishing_session_settle),await this.sendRequest({topic:S,method:"wc_sessionSettle",params:x,throwOnFailedPublish:!0}).catch(_=>{throw v==null||v.setError(iu.session_settle_publish_failure),_}),v.addTrace(vo.session_settle_publish_success),v.addTrace(vo.publishing_session_approve),await this.sendResult({id:a,topic:g,result:{relay:{protocol:c??"irn"},responderPublicKey:w},throwOnFailedPublish:!0}).catch(_=>{throw v==null||v.setError(iu.session_approve_publish_failure),_}),v.addTrace(vo.session_approve_publish_success)}catch(_){throw this.client.logger.error(_),this.client.session.delete(S,Hn("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(S),_}return this.client.core.eventClient.deleteEvent({eventId:v.eventId}),await this.client.core.pairing.updateMetadata({topic:g,metadata:m.metadata}),await this.deleteProposal(a),await this.client.core.pairing.activate({topic:g}),await this.setExpiry(S,gr(jd)),{topic:S,acknowledged:()=>Promise.resolve(this.client.session.get(S))}}),be(this,"reject",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(n)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:r,reason:i}=n;let s;try{s=this.client.proposal.get(r).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${r}) failed`),o}s&&await this.sendError({id:r,topic:s,error:i,rpcOpts:_r.wc_sessionPropose.reject}),await this.deleteProposal(r)}),be(this,"update",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(n)}catch(d){throw this.client.logger.error("update() -> isValidUpdate() failed"),d}const{topic:r,namespaces:i}=n,{done:s,resolve:o,reject:a}=yu(),c=ra(),l=$u().toString(),u=this.client.session.get(r).namespaces;return this.events.once(hn("session_update",c),({error:d})=>{d?a(d):o()}),await this.client.session.update(r,{namespaces:i}),await this.sendRequest({topic:r,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:l}).catch(d=>{this.client.logger.error(d),this.client.session.update(r,{namespaces:u}),a(d)}),{acknowledged:s}}),be(this,"extend",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(n)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:r}=n,i=ra(),{done:s,resolve:o,reject:a}=yu();return this.events.once(hn("session_extend",i),({error:c})=>{c?a(c):o()}),await this.setExpiry(r,gr(jd)),this.sendRequest({topic:r,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:s}}),be(this,"request",async n=>{this.isInitialized();try{await this.isValidRequest(n)}catch(y){throw this.client.logger.error("request() -> isValidRequest() failed"),y}const{chainId:r,request:i,topic:s,expiry:o=_r.wc_sessionRequest.req.ttl}=n,a=this.client.session.get(s);(a==null?void 0:a.transportType)===Un.relay&&await this.confirmOnlineStateOrThrow();const c=ra(),l=$u().toString(),{done:u,resolve:d,reject:h}=yu(o,"Request expired. Please try again.");this.events.once(hn("session_request",c),({error:y,result:p})=>{y?h(y):d(p)});const f="wc_sessionRequest",g=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);if(g)return await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:f,params:{request:Ri(Rn({},i),{expiryTimestamp:gr(o)}),chainId:r},expiry:o,throwOnFailedPublish:!0,appLink:g}).catch(y=>h(y)),this.client.events.emit("session_request_sent",{topic:s,request:i,chainId:r,id:c}),await u();const m={request:Ri(Rn({},i),{expiryTimestamp:gr(o)}),chainId:r};return await Promise.all([new Promise(async y=>{await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:f,params:m,expiry:o,throwOnFailedPublish:!0,tvf:this.getTVFParams(c,m)}).catch(p=>h(p)),this.client.events.emit("session_request_sent",{topic:s,request:i,chainId:r,id:c}),y()}),new Promise(async y=>{var p;if(!((p=a.sessionConfig)!=null&&p.disableDeepLink)){const v=await Rre(this.client.core.storage,SD);await Nre({id:c,topic:s,wcDeepLink:v})}y()}),u()]).then(y=>y[2])}),be(this,"respond",async n=>{this.isInitialized(),await this.isValidRespond(n);const{topic:r,response:i}=n,{id:s}=i,o=this.client.session.get(r);o.transportType===Un.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);ia(i)?await this.sendResult({id:s,topic:r,result:i.result,throwOnFailedPublish:!0,appLink:a}):Vs(i)&&await this.sendError({id:s,topic:r,error:i.error,appLink:a}),this.cleanupAfterResponse(n)}),be(this,"ping",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(n)}catch(i){throw this.client.logger.error("ping() -> isValidPing() failed"),i}const{topic:r}=n;if(this.client.session.keys.includes(r)){const i=ra(),s=$u().toString(),{done:o,resolve:a,reject:c}=yu();this.events.once(hn("session_ping",i),({error:l})=>{l?c(l):a()}),await Promise.all([this.sendRequest({topic:r,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:i,relayRpcId:s}),o()])}else this.client.core.pairing.pairings.keys.includes(r)&&(this.client.logger.warn("ping() on pairing topic is deprecated and will be removed in the next major release."),await this.client.core.pairing.ping({topic:r}))}),be(this,"emit",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(n);const{topic:r,event:i,chainId:s}=n,o=$u().toString(),a=ra();await this.sendRequest({topic:r,method:"wc_sessionEvent",params:{event:i,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})}),be(this,"disconnect",async n=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(n);const{topic:r}=n;if(this.client.session.keys.includes(r))await this.sendRequest({topic:r,method:"wc_sessionDelete",params:Hn("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:r,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(r))await this.client.core.pairing.disconnect({topic:r});else{const{message:i}=Te("MISMATCHED_TOPIC",`Session or pairing topic not found: ${r}`);throw new Error(i)}}),be(this,"find",n=>(this.isInitialized(),this.client.session.getAll().filter(r=>Hoe(r,n)))),be(this,"getPendingSessionRequests",()=>this.client.pendingRequest.getAll()),be(this,"authenticate",async(n,r)=>{var i;this.isInitialized(),this.isValidAuthenticate(n);const s=r&&this.client.core.linkModeSupportedApps.includes(r)&&((i=this.client.metadata.redirect)==null?void 0:i.linkMode),o=s?Un.link_mode:Un.relay;o===Un.relay&&await this.confirmOnlineStateOrThrow();const{chains:a,statement:c="",uri:l,domain:u,nonce:d,type:h,exp:f,nbf:g,methods:m=[],expiry:y}=n,p=[...n.resources||[]],{topic:v,uri:w}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:v,uri:w}});const b=await this.client.core.crypto.generateKeyPair(),S=Hw(b);if(await Promise.all([this.client.auth.authKeys.set(Vw,{responseTopic:S,publicKey:b}),this.client.auth.pairingTopics.set(S,{topic:S,pairingTopic:v})]),await this.client.core.relayer.subscribe(S,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${v}`),m.length>0){const{namespace:k}=rf(a[0]);let R=Xie(k,"request",m);zw(p)&&(R=Zie(R,p.pop())),p.push(R)}const x=y&&y>_r.wc_sessionAuthenticate.req.ttl?y:_r.wc_sessionAuthenticate.req.ttl,T={authPayload:{type:h??"caip122",chains:a,statement:c,aud:l,domain:u,version:"1",nonce:d,iat:new Date().toISOString(),exp:f,nbf:g,resources:p},requester:{publicKey:b,metadata:this.client.metadata},expiryTimestamp:gr(x)},N={eip155:{chains:a,methods:[...new Set(["personal_sign",...m])],events:["chainChanged","accountsChanged"]}},_={requiredNamespaces:{},optionalNamespaces:N,relays:[{protocol:"irn"}],pairingTopic:v,proposer:{publicKey:b,metadata:this.client.metadata},expiryTimestamp:gr(_r.wc_sessionPropose.req.ttl),id:ra()},{done:E,resolve:A,reject:L}=yu(x,"Request expired"),$=ra(),W=hn("session_connect",_.id),C=hn("session_request",$),I=async({error:k,session:R})=>{this.events.off(C,F),k?L(k):R&&A({session:R})},F=async k=>{var R,q,ne;if(await this.deletePendingAuthRequest($,{message:"fulfilled",code:0}),k.error){const xe=Hn("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return k.error.code===xe.code?void 0:(this.events.off(W,I),L(k.error.message))}await this.deleteProposal(_.id),this.events.off(W,I);const{cacaos:X,responder:G}=k.result,te=[],le=[];for(const xe of X){await p3({cacao:xe,projectId:this.client.core.projectId})||(this.client.logger.error(xe,"Signature verification failed"),L(Hn("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:je}=xe,ht=zw(je.resources),vt=[zx(je.iss)],Ut=nb(je.iss);if(ht){const Z=g3(ht),Yn=m3(ht);te.push(...Z),vt.push(...Yn)}for(const Z of vt)le.push(`${Z}:${Ut}`)}const ge=await this.client.core.crypto.generateSharedKey(b,G.publicKey);let Ce;te.length>0&&(Ce={topic:ge,acknowledged:!0,self:{publicKey:b,metadata:this.client.metadata},peer:G,controller:G.publicKey,expiry:gr(jd),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:v,namespaces:F3([...new Set(te)],[...new Set(le)]),transportType:o},await this.client.core.relayer.subscribe(ge,{transportType:o}),await this.client.session.set(ge,Ce),v&&await this.client.core.pairing.updateMetadata({topic:v,metadata:G.metadata}),Ce=this.client.session.get(ge)),(R=this.client.metadata.redirect)!=null&&R.linkMode&&(q=G.metadata.redirect)!=null&&q.linkMode&&(ne=G.metadata.redirect)!=null&&ne.universal&&r&&(this.client.core.addLinkModeSupportedApp(G.metadata.redirect.universal),this.client.session.update(ge,{transportType:Un.link_mode})),A({auths:X,session:Ce})};this.events.once(W,I),this.events.once(C,F);let D;try{if(s){const k=fl("wc_sessionAuthenticate",T,$);this.client.core.history.set(v,k);const R=await this.client.core.crypto.encode("",k,{type:x0,encoding:sl});D=Py(r,v,R)}else await Promise.all([this.sendRequest({topic:v,method:"wc_sessionAuthenticate",params:T,expiry:n.expiry,throwOnFailedPublish:!0,clientRpcId:$}),this.sendRequest({topic:v,method:"wc_sessionPropose",params:_,expiry:_r.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:_.id})])}catch(k){throw this.events.off(W,I),this.events.off(C,F),k}return await this.setProposal(_.id,_),await this.setAuthRequest($,{request:Ri(Rn({},T),{verifyContext:{}}),pairingTopic:v,transportType:o}),{uri:D??w,response:E}}),be(this,"approveSessionAuthenticate",async n=>{const{id:r,auths:i}=n,s=this.client.core.eventClient.createEvent({properties:{topic:r.toString(),trace:[su.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw s.setError(kp.no_internet_connection),y}const o=this.getPendingAuthRequest(r);if(!o)throw s.setError(kp.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${r}`);const a=o.transportType||Un.relay;a===Un.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),u=Hw(c),d={type:sc,receiverPublicKey:c,senderPublicKey:l},h=[],f=[];for(const y of i){if(!await p3({cacao:y,projectId:this.client.core.projectId})){s.setError(kp.invalid_cacao);const S=Hn("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:r,topic:u,error:S,encodeOpts:d}),new Error(S.message)}s.addTrace(su.cacaos_verified);const{p}=y,v=zw(p.resources),w=[zx(p.iss)],b=nb(p.iss);if(v){const S=g3(v),x=m3(v);h.push(...S),w.push(...x)}for(const S of w)f.push(`${S}:${b}`)}const g=await this.client.core.crypto.generateSharedKey(l,c);s.addTrace(su.create_authenticated_session_topic);let m;if((h==null?void 0:h.length)>0){m={topic:g,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:gr(jd),authentication:i,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:F3([...new Set(h)],[...new Set(f)]),transportType:a},s.addTrace(su.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(g,{transportType:a})}catch(y){throw s.setError(kp.subscribe_authenticated_session_topic_failure),y}s.addTrace(su.subscribe_authenticated_session_topic_success),await this.client.session.set(g,m),s.addTrace(su.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(su.publishing_authenticated_session_approve);try{await this.sendResult({topic:u,id:r,result:{cacaos:i,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:d,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(y){throw s.setError(kp.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(r,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:s.eventId}),{session:m}}),be(this,"rejectSessionAuthenticate",async n=>{this.isInitialized();const{id:r,reason:i}=n,s=this.getPendingAuthRequest(r);if(!s)throw new Error(`Could not find pending auth request with id ${r}`);s.transportType===Un.relay&&await this.confirmOnlineStateOrThrow();const o=s.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),c=Hw(o),l={type:sc,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:r,topic:c,error:i,encodeOpts:l,rpcOpts:_r.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(s.requester.metadata,s.transportType)}),await this.client.auth.requests.delete(r,{message:"rejected",code:0}),await this.deleteProposal(r)}),be(this,"formatAuthMessage",n=>{this.isInitialized();const{request:r,iss:i}=n;return O8(r,i)}),be(this,"processRelayMessageCache",()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const n=this.relayMessageCache.shift();n&&await this.onRelayMessage(n)}catch(n){this.client.logger.error(n)}},50)}),be(this,"cleanupDuplicatePairings",async n=>{if(n.pairingTopic)try{const r=this.client.core.pairing.pairings.get(n.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(s=>{var o,a;return((o=s.peerMetadata)==null?void 0:o.url)&&((a=s.peerMetadata)==null?void 0:a.url)===n.peer.metadata.url&&s.topic&&s.topic!==r.topic});if(i.length===0)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(s=>this.client.core.pairing.disconnect({topic:s.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(r){this.client.logger.error(r)}}),be(this,"deleteSession",async n=>{var r;const{topic:i,expirerHasDeleted:s=!1,emitEvent:o=!0,id:a=0}=n,{self:c}=this.client.session.get(i);await this.client.core.relayer.unsubscribe(i),await this.client.session.delete(i,Hn("USER_DISCONNECTED")),this.addToRecentlyDeleted(i,"session"),this.client.core.crypto.keychain.has(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.publicKey),this.client.core.crypto.keychain.has(i)&&await this.client.core.crypto.deleteSymKey(i),s||this.client.core.expirer.del(i),this.client.core.storage.removeItem(SD).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===i&&this.deletePendingSessionRequest(l.id,Hn("USER_DISCONNECTED"))}),i===((r=this.sessionRequestQueue.queue[0])==null?void 0:r.topic)&&(this.sessionRequestQueue.state=Qo.idle),o&&this.client.events.emit("session_delete",{id:a,topic:i})}),be(this,"deleteProposal",async(n,r)=>{if(r)try{const i=this.client.proposal.get(n),s=this.client.core.eventClient.getEvent({topic:i.pairingTopic});s==null||s.setError(iu.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(n,Hn("USER_DISCONNECTED")),r?Promise.resolve():this.client.core.expirer.del(n)]),this.addToRecentlyDeleted(n,"proposal")}),be(this,"deletePendingSessionRequest",async(n,r,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(n,r),i?Promise.resolve():this.client.core.expirer.del(n)]),this.addToRecentlyDeleted(n,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==n),i&&(this.sessionRequestQueue.state=Qo.idle,this.client.events.emit("session_request_expire",{id:n}))}),be(this,"deletePendingAuthRequest",async(n,r,i=!1)=>{await Promise.all([this.client.auth.requests.delete(n,r),i?Promise.resolve():this.client.core.expirer.del(n)])}),be(this,"setExpiry",async(n,r)=>{this.client.session.keys.includes(n)&&(this.client.core.expirer.set(n,r),await this.client.session.update(n,{expiry:r}))}),be(this,"setProposal",async(n,r)=>{this.client.core.expirer.set(n,gr(_r.wc_sessionPropose.req.ttl)),await this.client.proposal.set(n,r)}),be(this,"setAuthRequest",async(n,r)=>{const{request:i,pairingTopic:s,transportType:o=Un.relay}=r;this.client.core.expirer.set(n,i.expiryTimestamp),await this.client.auth.requests.set(n,{authPayload:i.authPayload,requester:i.requester,expiryTimestamp:i.expiryTimestamp,id:n,pairingTopic:s,verifyContext:i.verifyContext,transportType:o})}),be(this,"setPendingSessionRequest",async n=>{const{id:r,topic:i,params:s,verifyContext:o}=n,a=s.request.expiryTimestamp||gr(_r.wc_sessionRequest.req.ttl);this.client.core.expirer.set(r,a),await this.client.pendingRequest.set(r,{id:r,topic:i,params:s,verifyContext:o})}),be(this,"sendRequest",async n=>{const{topic:r,method:i,params:s,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:l,appLink:u,tvf:d}=n,h=fl(i,s,c);let f;const g=!!u;try{const p=g?sl:Uo;f=await this.client.core.crypto.encode(r,h,{encoding:p})}catch(p){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${r} failed`),p}let m;if(Ude.includes(i)){const p=oa(JSON.stringify(h)),v=oa(f);m=await this.client.core.verify.register({id:v,decryptedId:p})}const y=_r[i].req;if(y.attestation=m,o&&(y.ttl=o),a&&(y.id=a),this.client.core.history.set(r,h),g){const p=Py(u,r,f);await global.Linking.openURL(p,this.client.name)}else{const p=_r[i].req;o&&(p.ttl=o),a&&(p.id=a),p.tvf=Ri(Rn({},d),{correlationId:h.id}),l?(p.internal=Ri(Rn({},p.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(r,f,p)):this.client.core.relayer.publish(r,f,p).catch(v=>this.client.logger.error(v))}return h.id}),be(this,"sendResult",async n=>{const{id:r,topic:i,result:s,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=n,l=f1(r,s);let u;const d=c&&typeof(global==null?void 0:global.Linking)<"u";try{const g=d?sl:Uo;u=await this.client.core.crypto.encode(i,l,Ri(Rn({},a||{}),{encoding:g}))}catch(g){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${i} failed`),g}let h,f;try{h=await this.client.core.history.get(i,r);const g=h.request;try{f=this.getTVFParams(r,g.params,s)}catch(m){this.client.logger.warn(`sendResult() -> getTVFParams() failed: ${m==null?void 0:m.message}`)}}catch(g){throw this.client.logger.error(`sendResult() -> history.get(${i}, ${r}) failed`),g}if(d){const g=Py(c,i,u);await global.Linking.openURL(g,this.client.name)}else{const g=h.request.method,m=_r[g].res;m.tvf=Ri(Rn({},f),{correlationId:r}),o?(m.internal=Ri(Rn({},m.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,u,m)):this.client.core.relayer.publish(i,u,m).catch(y=>this.client.logger.error(y))}await this.client.core.history.resolve(l)}),be(this,"sendError",async n=>{const{id:r,topic:i,error:s,encodeOpts:o,rpcOpts:a,appLink:c}=n,l=p1(r,s);let u;const d=c&&typeof(global==null?void 0:global.Linking)<"u";try{const f=d?sl:Uo;u=await this.client.core.crypto.encode(i,l,Ri(Rn({},o||{}),{encoding:f}))}catch(f){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${i} failed`),f}let h;try{h=await this.client.core.history.get(i,r)}catch(f){throw this.client.logger.error(`sendError() -> history.get(${i}, ${r}) failed`),f}if(d){const f=Py(c,i,u);await global.Linking.openURL(f,this.client.name)}else{const f=h.request.method,g=a||_r[f].res;this.client.core.relayer.publish(i,u,g)}await this.client.core.history.resolve(l)}),be(this,"cleanup",async()=>{const n=[],r=[];this.client.session.getAll().forEach(i=>{let s=!1;Jc(i.expiry)&&(s=!0),this.client.core.crypto.keychain.has(i.topic)||(s=!0),s&&n.push(i.topic)}),this.client.proposal.getAll().forEach(i=>{Jc(i.expiryTimestamp)&&r.push(i.id)}),await Promise.all([...n.map(i=>this.deleteSession({topic:i})),...r.map(i=>this.deleteProposal(i))])}),be(this,"onProviderMessageEvent",async n=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(n):await this.onRelayMessage(n)}),be(this,"onRelayEventRequest",async n=>{this.requestQueue.queue.push(n),await this.processRequestsQueue()}),be(this,"processRequestsQueue",async()=>{if(this.requestQueue.state===Qo.active){this.client.logger.info("Request queue already active, skipping...");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=Qo.active;const n=this.requestQueue.queue.shift();if(n)try{await this.processRequest(n)}catch(r){this.client.logger.warn(r)}}this.requestQueue.state=Qo.idle}),be(this,"processRequest",async n=>{const{topic:r,payload:i,attestation:s,transportType:o,encryptedId:a}=n,c=i.method;if(!this.shouldIgnorePairingRequest({topic:r,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:r,payload:i,attestation:s,encryptedId:a});case"wc_sessionSettle":return await this.onSessionSettleRequest(r,i);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(r,i);case"wc_sessionExtend":return await this.onSessionExtendRequest(r,i);case"wc_sessionPing":return await this.onSessionPingRequest(r,i);case"wc_sessionDelete":return await this.onSessionDeleteRequest(r,i);case"wc_sessionRequest":return await this.onSessionRequest({topic:r,payload:i,attestation:s,encryptedId:a,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(r,i);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:r,payload:i,attestation:s,encryptedId:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}}),be(this,"onRelayEventResponse",async n=>{const{topic:r,payload:i,transportType:s}=n,o=(await this.client.core.history.get(r,i.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(r,i,s);case"wc_sessionSettle":return this.onSessionSettleResponse(r,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(r,i);case"wc_sessionExtend":return this.onSessionExtendResponse(r,i);case"wc_sessionPing":return this.onSessionPingResponse(r,i);case"wc_sessionRequest":return this.onSessionRequestResponse(r,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(r,i);default:return this.client.logger.info(`Unsupported response method ${o}`)}}),be(this,"onRelayEventUnknownPayload",n=>{const{topic:r}=n,{message:i}=Te("MISSING_OR_INVALID",`Decoded payload on topic ${r} is not identifiable as a JSON-RPC request or a response.`);throw new Error(i)}),be(this,"shouldIgnorePairingRequest",n=>{const{topic:r,requestMethod:i}=n,s=this.expectedPairingMethodMap.get(r);return!s||s.includes(i)?!1:!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)}),be(this,"onSessionProposeRequest",async n=>{const{topic:r,payload:i,attestation:s,encryptedId:o}=n,{params:a,id:c}=i;try{const l=this.client.core.eventClient.getEvent({topic:r});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),l==null||l.setError(Ga.proposal_listener_not_found)),this.isValidConnect(Rn({},i.params));const u=a.expiryTimestamp||gr(_r.wc_sessionPropose.req.ttl),d=Rn({id:c,pairingTopic:r,expiryTimestamp:u,attestation:s,encryptedId:o},a);await this.setProposal(c,d);const h=await this.getVerifyContext({attestationId:s,hash:oa(JSON.stringify(i)),encryptedId:o,metadata:d.proposer.metadata});l==null||l.addTrace(ta.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:d,verifyContext:h})}catch(l){await this.sendError({id:c,topic:r,error:l,rpcOpts:_r.wc_sessionPropose.autoReject}),this.client.logger.error(l)}}),be(this,"onSessionProposeResponse",async(n,r,i)=>{const{id:s}=r;if(ia(r)){const{result:o}=r;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const l=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:l});const u=await this.client.core.crypto.generateSharedKey(c,l);this.pendingSessions.set(s,{sessionTopic:u,pairingTopic:n,proposalId:s,publicKey:c});const d=await this.client.core.relayer.subscribe(u,{transportType:i});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:d}),await this.client.core.pairing.activate({topic:n})}else if(Vs(r)){await this.deleteProposal(s);const o=hn("session_connect",s);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(o,{error:r.error})}}),be(this,"onSessionSettleRequest",async(n,r)=>{const{id:i,params:s}=r;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:a,expiry:c,namespaces:l,sessionProperties:u,scopedProperties:d,sessionConfig:h}=r.params,f=[...this.pendingSessions.values()].find(y=>y.sessionTopic===n);if(!f)return this.client.logger.error(`Pending session not found for topic ${n}`);const g=this.client.proposal.get(f.proposalId),m=Ri(Rn(Rn(Rn({topic:n,relay:o,expiry:c,namespaces:l,acknowledged:!0,pairingTopic:f.pairingTopic,requiredNamespaces:g.requiredNamespaces,optionalNamespaces:g.optionalNamespaces,controller:a.publicKey,self:{publicKey:f.publicKey,metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},u&&{sessionProperties:u}),d&&{scopedProperties:d}),h&&{sessionConfig:h}),{transportType:Un.relay});await this.client.session.set(m.topic,m),await this.setExpiry(m.topic,m.expiry),await this.client.core.pairing.updateMetadata({topic:f.pairingTopic,metadata:m.peer.metadata}),this.client.events.emit("session_connect",{session:m}),this.events.emit(hn("session_connect",f.proposalId),{session:m}),this.pendingSessions.delete(f.proposalId),this.deleteProposal(f.proposalId,!1),this.cleanupDuplicatePairings(m),await this.sendResult({id:r.id,topic:n,result:!0})}catch(o){await this.sendError({id:i,topic:n,error:o}),this.client.logger.error(o)}}),be(this,"onSessionSettleResponse",async(n,r)=>{const{id:i}=r;ia(r)?(await this.client.session.update(n,{acknowledged:!0}),this.events.emit(hn("session_approve",i),{})):Vs(r)&&(await this.client.session.delete(n,Hn("USER_DISCONNECTED")),this.events.emit(hn("session_approve",i),{error:r.error}))}),be(this,"onSessionUpdateRequest",async(n,r)=>{const{params:i,id:s}=r;try{const o=`${n}_session_update`,a=Up.get(o);if(a&&this.isRequestOutOfSync(a,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:n,error:Hn("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(Rn({topic:n},i));try{Up.set(o,s),await this.client.session.update(n,{namespaces:i.namespaces}),await this.sendResult({id:s,topic:n,result:!0})}catch(c){throw Up.delete(o),c}this.client.events.emit("session_update",{id:s,topic:n,params:i})}catch(o){await this.sendError({id:s,topic:n,error:o}),this.client.logger.error(o)}}),be(this,"isRequestOutOfSync",(n,r)=>r.toString().slice(0,-3){const{id:i}=r,s=hn("session_update",i);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ia(r)?this.events.emit(hn("session_update",i),{}):Vs(r)&&this.events.emit(hn("session_update",i),{error:r.error})}),be(this,"onSessionExtendRequest",async(n,r)=>{const{id:i}=r;try{this.isValidExtend({topic:n}),await this.setExpiry(n,gr(jd)),await this.sendResult({id:i,topic:n,result:!0}),this.client.events.emit("session_extend",{id:i,topic:n})}catch(s){await this.sendError({id:i,topic:n,error:s}),this.client.logger.error(s)}}),be(this,"onSessionExtendResponse",(n,r)=>{const{id:i}=r,s=hn("session_extend",i);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ia(r)?this.events.emit(hn("session_extend",i),{}):Vs(r)&&this.events.emit(hn("session_extend",i),{error:r.error})}),be(this,"onSessionPingRequest",async(n,r)=>{const{id:i}=r;try{this.isValidPing({topic:n}),await this.sendResult({id:i,topic:n,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:n})}catch(s){await this.sendError({id:i,topic:n,error:s}),this.client.logger.error(s)}}),be(this,"onSessionPingResponse",(n,r)=>{const{id:i}=r,s=hn("session_ping",i);setTimeout(()=>{if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners 2176`);ia(r)?this.events.emit(hn("session_ping",i),{}):Vs(r)&&this.events.emit(hn("session_ping",i),{error:r.error})},500)}),be(this,"onSessionDeleteRequest",async(n,r)=>{const{id:i}=r;try{this.isValidDisconnect({topic:n,reason:r.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(Cr.publish,async()=>{s(await this.deleteSession({topic:n,id:i}))})}),this.sendResult({id:i,topic:n,result:!0}),this.cleanupPendingSentRequestsForTopic({topic:n,error:Hn("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}}),be(this,"onSessionRequest",async n=>{var r,i,s;const{topic:o,payload:a,attestation:c,encryptedId:l,transportType:u}=n,{id:d,params:h}=a;try{await this.isValidRequest(Rn({topic:o},h));const f=this.client.session.get(o),g=await this.getVerifyContext({attestationId:c,hash:oa(JSON.stringify(fl("wc_sessionRequest",h,d))),encryptedId:l,metadata:f.peer.metadata,transportType:u}),m={id:d,topic:o,params:h,verifyContext:g};await this.setPendingSessionRequest(m),u===Un.link_mode&&(r=f.peer.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp((i=f.peer.metadata.redirect)==null?void 0:i.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(m):(this.addSessionRequestToSessionRequestQueue(m),this.processSessionRequestQueue())}catch(f){await this.sendError({id:d,topic:o,error:f}),this.client.logger.error(f)}}),be(this,"onSessionRequestResponse",(n,r)=>{const{id:i}=r,s=hn("session_request",i);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ia(r)?this.events.emit(hn("session_request",i),{result:r.result}):Vs(r)&&this.events.emit(hn("session_request",i),{error:r.error})}),be(this,"onSessionEventRequest",async(n,r)=>{const{id:i,params:s}=r;try{const o=`${n}_session_event_${s.event.name}`,a=Up.get(o);if(a&&this.isRequestOutOfSync(a,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(Rn({topic:n},s)),this.client.events.emit("session_event",{id:i,topic:n,params:s}),Up.set(o,i)}catch(o){await this.sendError({id:i,topic:n,error:o}),this.client.logger.error(o)}}),be(this,"onSessionAuthenticateResponse",(n,r)=>{const{id:i}=r;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:n,payload:r}),ia(r)?this.events.emit(hn("session_request",i),{result:r.result}):Vs(r)&&this.events.emit(hn("session_request",i),{error:r.error})}),be(this,"onSessionAuthenticateRequest",async n=>{var r;const{topic:i,payload:s,attestation:o,encryptedId:a,transportType:c}=n;try{const{requester:l,authPayload:u,expiryTimestamp:d}=s.params,h=await this.getVerifyContext({attestationId:o,hash:oa(JSON.stringify(s)),encryptedId:a,metadata:l.metadata,transportType:c}),f={requester:l,pairingTopic:i,id:s.id,authPayload:u,verifyContext:h,expiryTimestamp:d};await this.setAuthRequest(s.id,{request:f,pairingTopic:i,transportType:c}),c===Un.link_mode&&(r=l.metadata.redirect)!=null&&r.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:i,params:s.params,id:s.id,verifyContext:h})}catch(l){this.client.logger.error(l);const u=s.params.requester.publicKey,d=await this.client.core.crypto.generateKeyPair(),h=this.getAppLinkIfEnabled(s.params.requester.metadata,c),f={type:sc,receiverPublicKey:u,senderPublicKey:d};await this.sendError({id:s.id,topic:i,error:l,encodeOpts:f,rpcOpts:_r.wc_sessionAuthenticate.autoReject,appLink:h})}}),be(this,"addSessionRequestToSessionRequestQueue",n=>{this.sessionRequestQueue.queue.push(n)}),be(this,"cleanupAfterResponse",n=>{this.deletePendingSessionRequest(n.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=Qo.idle,this.processSessionRequestQueue()},Ie.toMiliseconds(this.requestQueueDelay))}),be(this,"cleanupPendingSentRequestsForTopic",({topic:n,error:r})=>{const i=this.client.core.history.pending;i.length>0&&i.filter(s=>s.topic===n&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,a=hn("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(hn("session_request",s.request.id),{error:r})})}),be(this,"processSessionRequestQueue",()=>{if(this.sessionRequestQueue.state===Qo.active){this.client.logger.info("session request queue is already active.");return}const n=this.sessionRequestQueue.queue[0];if(!n){this.client.logger.info("session request queue is empty.");return}try{this.emitSessionRequest(n)}catch(r){this.client.logger.error(r)}}),be(this,"emitSessionRequest",n=>{if(this.emittedSessionRequests.has(n.id)){this.client.logger.warn({id:n.id},`Skipping emitting \`session_request\` event for duplicate request. id: ${n.id}`);return}this.sessionRequestQueue.state=Qo.active,this.emittedSessionRequests.add(n.id),this.client.events.emit("session_request",n)}),be(this,"onPairingCreated",n=>{if(n.methods&&this.expectedPairingMethodMap.set(n.topic,n.methods),n.active)return;const r=this.client.proposal.getAll().find(i=>i.pairingTopic===n.topic);r&&this.onSessionProposeRequest({topic:n.topic,payload:fl("wc_sessionPropose",Ri(Rn({},r),{requiredNamespaces:r.requiredNamespaces,optionalNamespaces:r.optionalNamespaces,relays:r.relays,proposer:r.proposer,sessionProperties:r.sessionProperties,scopedProperties:r.scopedProperties}),r.id),attestation:r.attestation,encryptedId:r.encryptedId})}),be(this,"isValidConnect",async n=>{if(!Fi(n)){const{message:l}=Te("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(n)}`);throw new Error(l)}const{pairingTopic:r,requiredNamespaces:i,optionalNamespaces:s,sessionProperties:o,scopedProperties:a,relays:c}=n;if(Br(r)||await this.isValidPairingTopic(r),!eae(c)){const{message:l}=Te("MISSING_OR_INVALID",`connect() relays: ${c}`);throw new Error(l)}if(!Br(i)&&Ea(i)!==0){const l="requiredNamespaces are deprecated and are automatically assigned to optionalNamespaces";["fatal","error","silent"].includes(this.client.logger.level)?console.warn(l):this.client.logger.warn(l),this.validateNamespaces(i,"requiredNamespaces")}if(!Br(s)&&Ea(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),Br(o)||this.validateSessionProps(o,"sessionProperties"),!Br(a)){this.validateSessionProps(a,"scopedProperties");const l=Object.keys(i||{}).concat(Object.keys(s||{}));if(!Object.keys(a).every(u=>l.includes(u.split(":")[0])))throw new Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(a)}, required/optional namespaces: ${JSON.stringify(l)}`)}}),be(this,"validateNamespaces",(n,r)=>{const i=Qoe(n,"connect()",r);if(i)throw new Error(i.message)}),be(this,"isValidApprove",async n=>{if(!Fi(n))throw new Error(Te("MISSING_OR_INVALID",`approve() params: ${n}`).message);const{id:r,namespaces:i,relayProtocol:s,sessionProperties:o,scopedProperties:a}=n;this.checkRecentlyDeleted(r),await this.isValidProposalId(r);const c=this.client.proposal.get(r),l=WE(i,"approve()");if(l)throw new Error(l.message);const u=j3(c.requiredNamespaces,i,"approve()");if(u)throw new Error(u.message);if(!cr(s,!0)){const{message:d}=Te("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(d)}if(Br(o)||this.validateSessionProps(o,"sessionProperties"),!Br(a)){this.validateSessionProps(a,"scopedProperties");const d=new Set(Object.keys(i));if(!Object.keys(a).every(h=>d.has(h.split(":")[0])))throw new Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(a)}, approved namespaces: ${Array.from(d).join(", ")}`)}}),be(this,"isValidReject",async n=>{if(!Fi(n)){const{message:s}=Te("MISSING_OR_INVALID",`reject() params: ${n}`);throw new Error(s)}const{id:r,reason:i}=n;if(this.checkRecentlyDeleted(r),await this.isValidProposalId(r),!nae(i)){const{message:s}=Te("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw new Error(s)}}),be(this,"isValidSessionSettleRequest",n=>{if(!Fi(n)){const{message:l}=Te("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${n}`);throw new Error(l)}const{relay:r,controller:i,namespaces:s,expiry:o}=n;if(!d5(r)){const{message:l}=Te("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(l)}const a=qoe(i,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=WE(s,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(Jc(o)){const{message:l}=Te("EXPIRED","onSessionSettleRequest()");throw new Error(l)}}),be(this,"isValidUpdate",async n=>{if(!Fi(n)){const{message:c}=Te("MISSING_OR_INVALID",`update() params: ${n}`);throw new Error(c)}const{topic:r,namespaces:i}=n;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const s=this.client.session.get(r),o=WE(i,"update()");if(o)throw new Error(o.message);const a=j3(s.requiredNamespaces,i,"update()");if(a)throw new Error(a.message)}),be(this,"isValidExtend",async n=>{if(!Fi(n)){const{message:i}=Te("MISSING_OR_INVALID",`extend() params: ${n}`);throw new Error(i)}const{topic:r}=n;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r)}),be(this,"isValidRequest",async n=>{if(!Fi(n)){const{message:c}=Te("MISSING_OR_INVALID",`request() params: ${n}`);throw new Error(c)}const{topic:r,request:i,chainId:s,expiry:o}=n;this.checkRecentlyDeleted(r),await this.isValidSessionTopic(r);const{namespaces:a}=this.client.session.get(r);if(!H3(a,s)){const{message:c}=Te("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(c)}if(!rae(i)){const{message:c}=Te("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw new Error(c)}if(!oae(a,s,i.method)){const{message:c}=Te("MISSING_OR_INVALID",`request() method: ${i.method}`);throw new Error(c)}if(o&&!uae(o,JE)){const{message:c}=Te("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${JE.min} and ${JE.max}`);throw new Error(c)}}),be(this,"isValidRespond",async n=>{var r;if(!Fi(n)){const{message:o}=Te("MISSING_OR_INVALID",`respond() params: ${n}`);throw new Error(o)}const{topic:i,response:s}=n;try{await this.isValidSessionTopic(i)}catch(o){throw(r=n==null?void 0:n.response)!=null&&r.id&&this.cleanupAfterResponse(n),o}if(!iae(s)){const{message:o}=Te("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}}),be(this,"isValidPing",async n=>{if(!Fi(n)){const{message:i}=Te("MISSING_OR_INVALID",`ping() params: ${n}`);throw new Error(i)}const{topic:r}=n;await this.isValidSessionOrPairingTopic(r)}),be(this,"isValidEmit",async n=>{if(!Fi(n)){const{message:a}=Te("MISSING_OR_INVALID",`emit() params: ${n}`);throw new Error(a)}const{topic:r,event:i,chainId:s}=n;await this.isValidSessionTopic(r);const{namespaces:o}=this.client.session.get(r);if(!H3(o,s)){const{message:a}=Te("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(a)}if(!sae(i)){const{message:a}=Te("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}if(!aae(o,s,i.name)){const{message:a}=Te("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(a)}}),be(this,"isValidDisconnect",async n=>{if(!Fi(n)){const{message:i}=Te("MISSING_OR_INVALID",`disconnect() params: ${n}`);throw new Error(i)}const{topic:r}=n;await this.isValidSessionOrPairingTopic(r)}),be(this,"isValidAuthenticate",n=>{const{chains:r,uri:i,domain:s,nonce:o}=n;if(!Array.isArray(r)||r.length===0)throw new Error("chains is required and must be a non-empty array");if(!cr(i,!1))throw new Error("uri is required parameter");if(!cr(s,!1))throw new Error("domain is required parameter");if(!cr(o,!1))throw new Error("nonce is required parameter");if([...new Set(r.map(c=>rf(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=rf(r[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")}),be(this,"getVerifyContext",async n=>{const{attestationId:r,hash:i,encryptedId:s,metadata:o,transportType:a}=n,c={verified:{verifyUrl:o.verifyUrl||Ug,validation:"UNKNOWN",origin:o.url||""}};try{if(a===Un.link_mode){const u=this.getAppLinkIfEnabled(o,a);return c.verified.validation=u&&new URL(u).origin===new URL(o.url).origin?"VALID":"INVALID",c}const l=await this.client.core.verify.resolve({attestationId:r,hash:i,encryptedId:s,verifyUrl:o.verifyUrl});l&&(c.verified.origin=l.origin,c.verified.isScam=l.isScam,c.verified.validation=l.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(c)}`),c}),be(this,"validateSessionProps",(n,r)=>{Object.values(n).forEach((i,s)=>{if(i==null){const{message:o}=Te("MISSING_OR_INVALID",`${r} must contain an existing value for each key. Received: ${i} for key ${Object.keys(n)[s]}`);throw new Error(o)}})}),be(this,"getPendingAuthRequest",n=>{const r=this.client.auth.requests.get(n);return typeof r=="object"?r:void 0}),be(this,"addToRecentlyDeleted",(n,r)=>{if(this.recentlyDeletedMap.set(n,r),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let i=0;const s=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(i++>=s)break;this.recentlyDeletedMap.delete(o)}}}),be(this,"checkRecentlyDeleted",n=>{const r=this.recentlyDeletedMap.get(n);if(r){const{message:i}=Te("MISSING_OR_INVALID",`Record was recently deleted - ${r}: ${n}`);throw new Error(i)}}),be(this,"isLinkModeEnabled",(n,r)=>{var i,s,o,a,c,l,u,d,h;return!n||r!==Un.link_mode?!1:((s=(i=this.client.metadata)==null?void 0:i.redirect)==null?void 0:s.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((l=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:l.universal)!==""&&((u=n==null?void 0:n.redirect)==null?void 0:u.universal)!==void 0&&((d=n==null?void 0:n.redirect)==null?void 0:d.universal)!==""&&((h=n==null?void 0:n.redirect)==null?void 0:h.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(n.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"}),be(this,"getAppLinkIfEnabled",(n,r)=>{var i;return this.isLinkModeEnabled(n,r)?(i=n==null?void 0:n.redirect)==null?void 0:i.universal:void 0}),be(this,"handleLinkModeMessage",({url:n})=>{if(!n||!n.includes("wc_ev")||!n.includes("topic"))return;const r=n3(n,"topic")||"",i=decodeURIComponent(n3(n,"wc_ev")||""),s=this.client.session.keys.includes(r);s&&this.client.session.update(r,{transportType:Un.link_mode}),this.client.core.dispatchEnvelope({topic:r,message:i,sessionExists:s})}),be(this,"registerLinkModeListeners",async()=>{var n;if(gT()||Xl()&&(n=this.client.metadata.redirect)!=null&&n.linkMode){const r=global==null?void 0:global.Linking;if(typeof r<"u"){r.addEventListener("url",this.handleLinkModeMessage,this.client.name);const i=await r.getInitialURL();i&&setTimeout(()=>{this.handleLinkModeMessage({url:i})},50)}}}),be(this,"getTVFParams",(n,r,i)=>{var s,o,a;if(!((s=r.request)!=null&&s.method))return{};const c={correlationId:n,rpcMethods:[r.request.method],chainId:r.chainId};try{const l=this.extractTxHashesFromResult(r.request,i);c.txHashes=l,c.contractAddresses=this.isValidContractData(r.request.params)?[(a=(o=r.request.params)==null?void 0:o[0])==null?void 0:a.to]:[]}catch(l){this.client.logger.warn("Error getting TVF params",l)}return c}),be(this,"isValidContractData",n=>{var r;if(!n)return!1;try{const i=(n==null?void 0:n.data)||((r=n==null?void 0:n[0])==null?void 0:r.data);if(!i.startsWith("0x"))return!1;const s=i.slice(2);return/^[0-9a-fA-F]*$/.test(s)?s.length%2===0:!1}catch{}return!1}),be(this,"extractTxHashesFromResult",(n,r)=>{var i;try{if(!r)return[];const s=n.method,o=Rde[s];if(s==="sui_signTransaction")return[Rie(r.transactionBytes)];if(s==="near_signTransaction")return[u3(r)];if(s==="near_signTransactions")return r.map(c=>u3(c));if(s==="xrpl_signTransactionFor"||s==="xrpl_signTransaction")return[(i=r.tx_json)==null?void 0:i.hash];if(s==="polkadot_signTransaction")return[Aae({transaction:n.params.transactionPayload,signature:r.signature})];if(s==="algo_signTxn")return oc(r)?r.map(c=>d3(c)):[d3(r)];if(s==="cosmos_signDirect")return[Uie(r)];if(typeof r=="string")return[r];const a=r[o.key];if(oc(a))return s==="solana_signAllTransactions"?a.map(c=>Die(c)):a;if(typeof a=="string")return[a]}catch(s){this.client.logger.warn("Error extracting tx hashes from result",s)}return[]})}async processPendingMessageEvents(){try{const e=this.client.session.keys,n=this.client.core.relayer.messages.getWithoutAck(e);for(const[r,i]of Object.entries(n))for(const s of i)try{await this.onProviderMessageEvent({topic:r,message:s,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${r}, message: ${s}`)}}catch(e){this.client.logger.warn("processPendingMessageEvents failed",e)}}isInitialized(){if(!this.initialized){const{message:e}=Te("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Cr.message,e=>{this.onProviderMessageEvent(e)})}async onRelayMessage(e){const{topic:n,message:r,attestation:i,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(Vw)?this.client.auth.authKeys.get(Vw):{publicKey:void 0};try{const a=await this.client.core.crypto.decode(n,r,{receiverPublicKey:o,encoding:s===Un.link_mode?sl:Uo});NT(a)?(this.client.core.history.set(n,a),await this.onRelayEventRequest({topic:n,payload:a,attestation:i,transportType:s,encryptedId:oa(r)})):g1(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:n,payload:a,transportType:s}),this.client.core.history.delete(n,a.id)):await this.onRelayEventUnknownPayload({topic:n,payload:a,transportType:s}),await this.client.core.relayer.messages.ack(n,r)}catch(a){this.client.logger.error(a)}}registerExpirerEvents(){this.client.core.expirer.on(zs.expired,async e=>{const{topic:n,id:r}=v8(e.target);if(r&&this.client.pendingRequest.keys.includes(r))return await this.deletePendingSessionRequest(r,Te("EXPIRED"),!0);if(r&&this.client.auth.requests.keys.includes(r))return await this.deletePendingAuthRequest(r,Te("EXPIRED"),!0);n?this.client.session.keys.includes(n)&&(await this.deleteSession({topic:n,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:n})):r&&(await this.deleteProposal(r,!0),this.client.events.emit("proposal_expire",{id:r}))})}registerPairingEvents(){this.client.core.pairing.events.on(Au.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Au.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!cr(e,!1)){const{message:n}=Te("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(n)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:n}=Te("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(n)}if(Jc(this.client.core.pairing.pairings.get(e).expiry)){const{message:n}=Te("EXPIRED",`pairing topic: ${e}`);throw new Error(n)}}async isValidSessionTopic(e){if(!cr(e,!1)){const{message:n}=Te("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(n)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:n}=Te("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(n)}if(Jc(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:n}=Te("EXPIRED",`session topic: ${e}`);throw new Error(n)}if(!this.client.core.crypto.keychain.has(e)){const{message:n}=Te("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(n)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(cr(e,!1)){const{message:n}=Te("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(n)}else{const{message:n}=Te("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(n)}}async isValidProposalId(e){if(!tae(e)){const{message:n}=Te("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(n)}if(!this.client.proposal.keys.includes(e)){const{message:n}=Te("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(n)}if(Jc(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:n}=Te("EXPIRED",`proposal id: ${e}`);throw new Error(n)}}}class qde extends Ad{constructor(e,n){super(e,n,Nde,PT),this.core=e,this.logger=n}}let Kde=class extends Ad{constructor(e,n){super(e,n,Pde,PT),this.core=e,this.logger=n}};class Xde extends Ad{constructor(e,n){super(e,n,Ode,PT,r=>r.id),this.core=e,this.logger=n}}class Yde extends Ad{constructor(e,n){super(e,n,$de,y1,()=>Vw),this.core=e,this.logger=n}}let Zde=class extends Ad{constructor(e,n){super(e,n,Bde,y1),this.core=e,this.logger=n}};class Jde extends Ad{constructor(e,n){super(e,n,Fde,y1,r=>r.id),this.core=e,this.logger=n}}var Qde=Object.defineProperty,ehe=(t,e,n)=>e in t?Qde(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,QE=(t,e,n)=>ehe(t,typeof e!="symbol"?e+"":e,n);class the{constructor(e,n){this.core=e,this.logger=n,QE(this,"authKeys"),QE(this,"pairingTopics"),QE(this,"requests"),this.authKeys=new Yde(this.core,this.logger),this.pairingTopics=new Zde(this.core,this.logger),this.requests=new Jde(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}var nhe=Object.defineProperty,rhe=(t,e,n)=>e in t?nhe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,$t=(t,e,n)=>rhe(t,typeof e!="symbol"?e+"":e,n);let ihe=class $5 extends hZ{constructor(e){super(e),$t(this,"protocol",U5),$t(this,"version",L5),$t(this,"name",ZE.name),$t(this,"metadata"),$t(this,"core"),$t(this,"logger"),$t(this,"events",new co.EventEmitter),$t(this,"engine"),$t(this,"session"),$t(this,"proposal"),$t(this,"pendingRequest"),$t(this,"auth"),$t(this,"signConfig"),$t(this,"on",(r,i)=>this.events.on(r,i)),$t(this,"once",(r,i)=>this.events.once(r,i)),$t(this,"off",(r,i)=>this.events.off(r,i)),$t(this,"removeListener",(r,i)=>this.events.removeListener(r,i)),$t(this,"removeAllListeners",r=>this.events.removeAllListeners(r)),$t(this,"connect",async r=>{try{return await this.engine.connect(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"pair",async r=>{try{return await this.engine.pair(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"approve",async r=>{try{return await this.engine.approve(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"reject",async r=>{try{return await this.engine.reject(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"update",async r=>{try{return await this.engine.update(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"extend",async r=>{try{return await this.engine.extend(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"request",async r=>{try{return await this.engine.request(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"respond",async r=>{try{return await this.engine.respond(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"ping",async r=>{try{return await this.engine.ping(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"emit",async r=>{try{return await this.engine.emit(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"disconnect",async r=>{try{return await this.engine.disconnect(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"find",r=>{try{return this.engine.find(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"getPendingSessionRequests",()=>{try{return this.engine.getPendingSessionRequests()}catch(r){throw this.logger.error(r.message),r}}),$t(this,"authenticate",async(r,i)=>{try{return await this.engine.authenticate(r,i)}catch(s){throw this.logger.error(s.message),s}}),$t(this,"formatAuthMessage",r=>{try{return this.engine.formatAuthMessage(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"approveSessionAuthenticate",async r=>{try{return await this.engine.approveSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),$t(this,"rejectSessionAuthenticate",async r=>{try{return await this.engine.rejectSessionAuthenticate(r)}catch(i){throw this.logger.error(i.message),i}}),this.name=(e==null?void 0:e.name)||ZE.name,this.metadata=xre(e==null?void 0:e.metadata),this.signConfig=e==null?void 0:e.signConfig;const n=typeof(e==null?void 0:e.logger)<"u"&&typeof(e==null?void 0:e.logger)!="string"?e.logger:m0(w0({level:(e==null?void 0:e.logger)||ZE.logger}));this.core=(e==null?void 0:e.core)||new Mde(e),this.logger=Ti(n,this.name),this.session=new Kde(this.core,this.logger),this.proposal=new qde(this.core,this.logger),this.pendingRequest=new Xde(this.core,this.logger),this.engine=new Gde(this),this.auth=new the(this.core,this.logger)}static async init(e){const n=new $5(e);return await n.initialize(),n}get context(){return ns(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info("SignClient Initialization Success")}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}};var uA={exports:{}};(function(t,e){var n=typeof globalThis<"u"&&globalThis||typeof self<"u"&&self||typeof Ln<"u"&&Ln,r=function(){function s(){this.fetch=!1,this.DOMException=n.DOMException}return s.prototype=n,new s}();(function(s){(function(o){var a=typeof s<"u"&&s||typeof self<"u"&&self||typeof Ln<"u"&&Ln||{},c={searchParams:"URLSearchParams"in a,iterable:"Symbol"in a&&"iterator"in Symbol,blob:"FileReader"in a&&"Blob"in a&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in a,arrayBuffer:"ArrayBuffer"in a};function l(C){return C&&DataView.prototype.isPrototypeOf(C)}if(c.arrayBuffer)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],d=ArrayBuffer.isView||function(C){return C&&u.indexOf(Object.prototype.toString.call(C))>-1};function h(C){if(typeof C!="string"&&(C=String(C)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(C)||C==="")throw new TypeError('Invalid character in header field name: "'+C+'"');return C.toLowerCase()}function f(C){return typeof C!="string"&&(C=String(C)),C}function g(C){var I={next:function(){var F=C.shift();return{done:F===void 0,value:F}}};return c.iterable&&(I[Symbol.iterator]=function(){return I}),I}function m(C){this.map={},C instanceof m?C.forEach(function(I,F){this.append(F,I)},this):Array.isArray(C)?C.forEach(function(I){if(I.length!=2)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+I.length);this.append(I[0],I[1])},this):C&&Object.getOwnPropertyNames(C).forEach(function(I){this.append(I,C[I])},this)}m.prototype.append=function(C,I){C=h(C),I=f(I);var F=this.map[C];this.map[C]=F?F+", "+I:I},m.prototype.delete=function(C){delete this.map[h(C)]},m.prototype.get=function(C){return C=h(C),this.has(C)?this.map[C]:null},m.prototype.has=function(C){return this.map.hasOwnProperty(h(C))},m.prototype.set=function(C,I){this.map[h(C)]=f(I)},m.prototype.forEach=function(C,I){for(var F in this.map)this.map.hasOwnProperty(F)&&C.call(I,this.map[F],F,this)},m.prototype.keys=function(){var C=[];return this.forEach(function(I,F){C.push(F)}),g(C)},m.prototype.values=function(){var C=[];return this.forEach(function(I){C.push(I)}),g(C)},m.prototype.entries=function(){var C=[];return this.forEach(function(I,F){C.push([F,I])}),g(C)},c.iterable&&(m.prototype[Symbol.iterator]=m.prototype.entries);function y(C){if(!C._noBody){if(C.bodyUsed)return Promise.reject(new TypeError("Already read"));C.bodyUsed=!0}}function p(C){return new Promise(function(I,F){C.onload=function(){I(C.result)},C.onerror=function(){F(C.error)}})}function v(C){var I=new FileReader,F=p(I);return I.readAsArrayBuffer(C),F}function w(C){var I=new FileReader,F=p(I),D=/charset=([A-Za-z0-9_-]+)/.exec(C.type),k=D?D[1]:"utf-8";return I.readAsText(C,k),F}function b(C){for(var I=new Uint8Array(C),F=new Array(I.length),D=0;D-1?I:C}function _(C,I){if(!(this instanceof _))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');I=I||{};var F=I.body;if(C instanceof _){if(C.bodyUsed)throw new TypeError("Already read");this.url=C.url,this.credentials=C.credentials,I.headers||(this.headers=new m(C.headers)),this.method=C.method,this.mode=C.mode,this.signal=C.signal,!F&&C._bodyInit!=null&&(F=C._bodyInit,C.bodyUsed=!0)}else this.url=String(C);if(this.credentials=I.credentials||this.credentials||"same-origin",(I.headers||!this.headers)&&(this.headers=new m(I.headers)),this.method=N(I.method||this.method||"GET"),this.mode=I.mode||this.mode||null,this.signal=I.signal||this.signal||function(){if("AbortController"in a){var R=new AbortController;return R.signal}}(),this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&F)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(F),(this.method==="GET"||this.method==="HEAD")&&(I.cache==="no-store"||I.cache==="no-cache")){var D=/([?&])_=[^&]*/;if(D.test(this.url))this.url=this.url.replace(D,"$1_="+new Date().getTime());else{var k=/\?/;this.url+=(k.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}_.prototype.clone=function(){return new _(this,{body:this._bodyInit})};function E(C){var I=new FormData;return C.trim().split("&").forEach(function(F){if(F){var D=F.split("="),k=D.shift().replace(/\+/g," "),R=D.join("=").replace(/\+/g," ");I.append(decodeURIComponent(k),decodeURIComponent(R))}}),I}function A(C){var I=new m,F=C.replace(/\r?\n[\t ]+/g," ");return F.split("\r").map(function(D){return D.indexOf(` +`)===0?D.substr(1,D.length):D}).forEach(function(D){var k=D.split(":"),R=k.shift().trim();if(R){var q=k.join(":").trim();try{I.append(R,q)}catch(ne){console.warn("Response "+ne.message)}}}),I}x.call(_.prototype);function L(C,I){if(!(this instanceof L))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(I||(I={}),this.type="default",this.status=I.status===void 0?200:I.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=I.statusText===void 0?"":""+I.statusText,this.headers=new m(I.headers),this.url=I.url||"",this._initBody(C)}x.call(L.prototype),L.prototype.clone=function(){return new L(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new m(this.headers),url:this.url})},L.error=function(){var C=new L(null,{status:200,statusText:""});return C.ok=!1,C.status=0,C.type="error",C};var $=[301,302,303,307,308];L.redirect=function(C,I){if($.indexOf(I)===-1)throw new RangeError("Invalid status code");return new L(null,{status:I,headers:{location:C}})},o.DOMException=a.DOMException;try{new o.DOMException}catch{o.DOMException=function(I,F){this.message=I,this.name=F;var D=Error(I);this.stack=D.stack},o.DOMException.prototype=Object.create(Error.prototype),o.DOMException.prototype.constructor=o.DOMException}function W(C,I){return new Promise(function(F,D){var k=new _(C,I);if(k.signal&&k.signal.aborted)return D(new o.DOMException("Aborted","AbortError"));var R=new XMLHttpRequest;function q(){R.abort()}R.onload=function(){var G={statusText:R.statusText,headers:A(R.getAllResponseHeaders()||"")};k.url.indexOf("file://")===0&&(R.status<200||R.status>599)?G.status=200:G.status=R.status,G.url="responseURL"in R?R.responseURL:G.headers.get("X-Request-URL");var te="response"in R?R.response:R.responseText;setTimeout(function(){F(new L(te,G))},0)},R.onerror=function(){setTimeout(function(){D(new TypeError("Network request failed"))},0)},R.ontimeout=function(){setTimeout(function(){D(new TypeError("Network request timed out"))},0)},R.onabort=function(){setTimeout(function(){D(new o.DOMException("Aborted","AbortError"))},0)};function ne(G){try{return G===""&&a.location.href?a.location.href:G}catch{return G}}if(R.open(k.method,ne(k.url),!0),k.credentials==="include"?R.withCredentials=!0:k.credentials==="omit"&&(R.withCredentials=!1),"responseType"in R&&(c.blob?R.responseType="blob":c.arrayBuffer&&(R.responseType="arraybuffer")),I&&typeof I.headers=="object"&&!(I.headers instanceof m||a.Headers&&I.headers instanceof a.Headers)){var X=[];Object.getOwnPropertyNames(I.headers).forEach(function(G){X.push(h(G)),R.setRequestHeader(G,f(I.headers[G]))}),k.headers.forEach(function(G,te){X.indexOf(te)===-1&&R.setRequestHeader(te,G)})}else k.headers.forEach(function(G,te){R.setRequestHeader(te,G)});k.signal&&(k.signal.addEventListener("abort",q),R.onreadystatechange=function(){R.readyState===4&&k.signal.removeEventListener("abort",q)}),R.send(typeof k._bodyInit>"u"?null:k._bodyInit)})}return W.polyfill=!0,a.fetch||(a.fetch=W,a.Headers=m,a.Request=_,a.Response=L),o.Headers=m,o.Request=_,o.Response=L,o.fetch=W,Object.defineProperty(o,"__esModule",{value:!0}),o})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=n.fetch?n:r;e=i.fetch,e.default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e})(uA,uA.exports);var she=uA.exports;const CD=Wf(she);var ohe=Object.defineProperty,ahe=Object.defineProperties,che=Object.getOwnPropertyDescriptors,TD=Object.getOwnPropertySymbols,lhe=Object.prototype.hasOwnProperty,uhe=Object.prototype.propertyIsEnumerable,ID=(t,e,n)=>e in t?ohe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,MD=(t,e)=>{for(var n in e||(e={}))lhe.call(e,n)&&ID(t,n,e[n]);if(TD)for(var n of TD(e))uhe.call(e,n)&&ID(t,n,e[n]);return t},ND=(t,e)=>ahe(t,che(e));const dhe={Accept:"application/json","Content-Type":"application/json"},hhe="POST",PD={headers:dhe,method:hhe},DD=10;let Wo=class{constructor(e,n=!1){if(this.url=e,this.disableProviderPing=n,this.events=new co.EventEmitter,this.isAvailable=!1,this.registering=!1,!X3(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);this.url=e,this.disableProviderPing=n}get connected(){return this.isAvailable}get connecting(){return this.registering}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}off(e,n){this.events.off(e,n)}removeListener(e,n){this.events.removeListener(e,n)}async open(e=this.url){await this.register(e)}async close(){if(!this.isAvailable)throw new Error("Connection already closed");this.onClose()}async send(e){this.isAvailable||await this.register();try{const n=mc(e),r=await(await CD(this.url,ND(MD({},PD),{body:n}))).json();this.onPayload({data:r})}catch(n){this.onError(e.id,n)}}async register(e=this.url){if(!X3(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);if(this.registering){const n=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=n||this.events.listenerCount("open")>=n)&&this.events.setMaxListeners(n+1),new Promise((r,i)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),i(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.isAvailable>"u")return i(new Error("HTTP connection is missing or invalid"));r()})})}this.url=e,this.registering=!0;try{if(!this.disableProviderPing){const n=mc({id:1,jsonrpc:"2.0",method:"test",params:[]});await CD(e,ND(MD({},PD),{body:n}))}this.onOpen()}catch(n){const r=this.parseError(n);throw this.events.emit("register_error",r),this.onClose(),r}}onOpen(){this.isAvailable=!0,this.registering=!1,this.events.emit("open")}onClose(){this.isAvailable=!1,this.registering=!1,this.events.emit("close")}onPayload(e){if(typeof e.data>"u")return;const n=typeof e.data=="string"?ad(e.data):e.data;this.events.emit("payload",n)}onError(e,n){const r=this.parseError(n),i=r.message||r.toString(),s=p1(e,i);this.events.emit("payload",s)}parseError(e,n=this.url){return p5(e,n,"HTTP")}resetMaxListeners(){this.events.getMaxListeners()>DD&&this.events.setMaxListeners(DD)}};const RD="error",fhe="wss://relay.walletconnect.org",phe="wc",ghe="universal_provider",Ry=`${phe}@2:${ghe}:`,B5="https://rpc.walletconnect.org/v1/",Sh="generic",mhe=`${B5}bundler`,uo={DEFAULT_CHAIN_CHANGED:"default_chain_changed"};function DT(t){return t==null||typeof t!="object"&&typeof t!="function"}function F5(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}function z5(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}const yhe="[object RegExp]",H5="[object String]",j5="[object Number]",V5="[object Boolean]",W5="[object Arguments]",whe="[object Symbol]",vhe="[object Date]",bhe="[object Map]",Ehe="[object Set]",_he="[object Array]",She="[object ArrayBuffer]",xhe="[object Object]",Ahe="[object DataView]",Che="[object Uint8Array]",The="[object Uint8ClampedArray]",Ihe="[object Uint16Array]",Mhe="[object Uint32Array]",Nhe="[object Int8Array]",Phe="[object Int16Array]",Dhe="[object Int32Array]",Rhe="[object Float32Array]",Ohe="[object Float64Array]";function RT(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Uhe(t,e){return Vh(t,void 0,t,new Map,e)}function Vh(t,e,n,r=new Map,i=void 0){const s=i==null?void 0:i(t,e,n,r);if(s!=null)return s;if(DT(t))return t;if(r.has(t))return r.get(t);if(Array.isArray(t)){const o=new Array(t.length);r.set(t,o);for(let a=0;a{if(typeof t=="object")switch(Object.prototype.toString.call(t)){case j5:case H5:case V5:{const o=new t.constructor(t==null?void 0:t.valueOf());return Cu(o,t),o}case W5:{const o={};return Cu(o,t),o.length=t.length,o[Symbol.iterator]=t[Symbol.iterator],o}default:return}})}function OD(t){return khe(t)}function UD(t){return t!==null&&typeof t=="object"&&z5(t)==="[object Arguments]"}function LD(t){return typeof t=="object"&&t!==null}function $he(){}function Bhe(t){return RT(t)}function Fhe(t){var n;if(typeof t!="object"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!=="[object Object]"){const r=t[Symbol.toStringTag];return r==null||!((n=Object.getOwnPropertyDescriptor(t,Symbol.toStringTag))!=null&&n.writable)?!1:t.toString()===`[object ${r}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function zhe(t){if(DT(t))return t;if(Array.isArray(t)||RT(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer)return t.slice(0);const e=Object.getPrototypeOf(t),n=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new n(t);if(t instanceof RegExp){const r=new n(t);return r.lastIndex=t.lastIndex,r}if(t instanceof DataView)return new n(t.buffer.slice(0));if(t instanceof Error){const r=new n(t.message);return r.stack=t.stack,r.name=t.name,r.cause=t.cause,r}if(typeof File<"u"&&t instanceof File)return new n([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t=="object"){const r=Object.create(e);return Object.assign(r,t)}return t}function Hhe(t,...e){const n=e.slice(0,-1),r=e[e.length-1];let i=t;for(let s=0;se in t?Vhe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Oy=(t,e)=>{for(var n in e||(e={}))qhe.call(e,n)&&$D(t,n,e[n]);if(kD)for(var n of kD(e))Khe.call(e,n)&&$D(t,n,e[n]);return t},Xhe=(t,e)=>Whe(t,Ghe(e));function Cs(t,e,n){var r;const i=rf(t);return((r=e.rpcMap)==null?void 0:r[i.reference])||`${B5}?chainId=${i.namespace}:${i.reference}&projectId=${n}`}function Cd(t){return t.includes(":")?t.split(":")[1]:t}function G5(t){return t.map(e=>`${e.split(":")[0]}:${e.split(":")[1]}`)}function Yhe(t,e){const n=Object.keys(e.namespaces).filter(i=>i.includes(t));if(!n.length)return[];const r=[];return n.forEach(i=>{const s=e.namespaces[i].accounts;r.push(...s)}),r}function BD(t){return Object.fromEntries(Object.entries(t).filter(([e,n])=>{var r,i;return((r=n==null?void 0:n.chains)==null?void 0:r.length)&&((i=n==null?void 0:n.chains)==null?void 0:i.length)>0}))}function Uy(t={},e={}){const n=BD(FD(t)),r=BD(FD(e));return jhe(n,r)}function FD(t){var e,n,r,i,s;const o={};if(!Ea(t))return o;for(const[a,c]of Object.entries(t)){const l=h1(a)?[a]:c.chains,u=c.methods||[],d=c.events||[],h=c.rpcMap||{},f=jh(a);o[f]=Xhe(Oy(Oy({},o[f]),c),{chains:ba(l,(e=o[f])==null?void 0:e.chains),methods:ba(u,(n=o[f])==null?void 0:n.methods),events:ba(d,(r=o[f])==null?void 0:r.events)}),(Ea(h)||Ea(((i=o[f])==null?void 0:i.rpcMap)||{}))&&(o[f].rpcMap=Oy(Oy({},h),(s=o[f])==null?void 0:s.rpcMap))}return o}function zD(t){return t.includes(":")?t.split(":")[2]:t}function HD(t){const e={};for(const[n,r]of Object.entries(t)){const i=r.methods||[],s=r.events||[],o=r.accounts||[],a=h1(n)?[n]:r.chains?r.chains:G5(r.accounts);e[n]={chains:a,methods:i,events:s,accounts:o}}return e}function e_(t){return typeof t=="number"?t:t.includes("0x")?parseInt(t,16):(t=t.includes(":")?t.split(":")[1]:t,isNaN(Number(t))?t:Number(t))}const q5={},an=t=>q5[t],t_=(t,e)=>{q5[t]=e};var Zhe=Object.defineProperty,jD=Object.getOwnPropertySymbols,Jhe=Object.prototype.hasOwnProperty,Qhe=Object.prototype.propertyIsEnumerable,VD=(t,e,n)=>e in t?Zhe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,WD=(t,e)=>{for(var n in e||(e={}))Jhe.call(e,n)&&VD(t,n,e[n]);if(jD)for(var n of jD(e))Qhe.call(e,n)&&VD(t,n,e[n]);return t};const GD="eip155",efe=["atomic","flow-control","paymasterService","sessionKeys","auxiliaryFunds"],tfe=t=>t&&t.startsWith("0x")?BigInt(t).toString(10):t,n_=t=>t&&t.startsWith("0x")?t:`0x${BigInt(t).toString(16)}`,qD=t=>Object.keys(t).filter(e=>efe.includes(e)).reduce((e,n)=>(e[n]=t[n],e),{}),nfe=(t,e,n)=>{const{sessionProperties:r={},scopedProperties:i={}}=t,s={};if(!Ea(i)&&!Ea(r))return;const o=qD(r);for(const a of n){const c=tfe(a);if(!c)continue;s[n_(c)]=o;const l=i==null?void 0:i[`${GD}:${c}`];if(l){const u=l==null?void 0:l[`${GD}:${c}:${e}`];s[n_(c)]=WD(WD({},s[n_(c)]),qD(u||l))}}for(const[a,c]of Object.entries(s))Object.keys(c).length===0&&delete s[a];return Object.keys(s).length>0?s:void 0};var rfe=Object.defineProperty,ife=(t,e,n)=>e in t?rfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Vd=(t,e,n)=>ife(t,typeof e!="symbol"?e+"":e,n);let sfe=class{constructor(e){Vd(this,"name","polkadot"),Vd(this,"client"),Vd(this,"httpProviders"),Vd(this,"events"),Vd(this,"namespace"),Vd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=Cd(n);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}};var ofe=Object.defineProperty,afe=Object.defineProperties,cfe=Object.getOwnPropertyDescriptors,KD=Object.getOwnPropertySymbols,lfe=Object.prototype.hasOwnProperty,ufe=Object.prototype.propertyIsEnumerable,hA=(t,e,n)=>e in t?ofe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,XD=(t,e)=>{for(var n in e||(e={}))lfe.call(e,n)&&hA(t,n,e[n]);if(KD)for(var n of KD(e))ufe.call(e,n)&&hA(t,n,e[n]);return t},YD=(t,e)=>afe(t,cfe(e)),Wd=(t,e,n)=>hA(t,typeof e!="symbol"?e+"":e,n);let dfe=class{constructor(e){Wd(this,"name","eip155"),Wd(this,"client"),Wd(this,"chainId"),Wd(this,"namespace"),Wd(this,"httpProviders"),Wd(this,"events"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(e){switch(e.request.method){case"eth_requestAccounts":return this.getAccounts();case"eth_accounts":return this.getAccounts();case"wallet_switchEthereumChain":return await this.handleSwitchChain(e);case"eth_chainId":return parseInt(this.getDefaultChain());case"wallet_getCapabilities":return await this.getCapabilities(e);case"wallet_getCallsStatus":return await this.getCallStatus(e)}return this.namespace.methods.includes(e.request.method)?await this.client.request(e):this.getHttpProvider().request(e.request)}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(parseInt(e),n),this.chainId=parseInt(e),this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}createHttpProvider(e,n){const r=n||Cs(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=parseInt(Cd(n));e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}getHttpProvider(){const e=this.chainId,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}async handleSwitchChain(e){var n,r;let i=e.request.params?(n=e.request.params[0])==null?void 0:n.chainId:"0x0";i=i.startsWith("0x")?i:`0x${i}`;const s=parseInt(i,16);if(this.isChainApproved(s))this.setDefaultChain(`${s}`);else if(this.namespace.methods.includes("wallet_switchEthereumChain"))await this.client.request({topic:e.topic,request:{method:e.request.method,params:[{chainId:i}]},chainId:(r=this.namespace.chains)==null?void 0:r[0]}),this.setDefaultChain(`${s}`);else throw new Error(`Failed to switch to chain 'eip155:${s}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(e){return this.namespace.chains.includes(`${this.name}:${e}`)}async getCapabilities(e){var n,r,i,s,o;const a=(r=(n=e.request)==null?void 0:n.params)==null?void 0:r[0],c=((s=(i=e.request)==null?void 0:i.params)==null?void 0:s[1])||[];if(!a)throw new Error("Missing address parameter in `wallet_getCapabilities` request");const l=this.client.session.get(e.topic),u=((o=l==null?void 0:l.sessionProperties)==null?void 0:o.capabilities)||{},d=`${a}${c.join(",")}`,h=u==null?void 0:u[d];if(h)return h;let f;try{f=nfe(l,a,c)}catch(m){console.warn("Failed to extract capabilities from session",m)}if(f)return f;const g=await this.client.request(e);try{await this.client.session.update(e.topic,{sessionProperties:YD(XD({},l.sessionProperties||{}),{capabilities:YD(XD({},u||{}),{[d]:g})})})}catch(m){console.warn("Failed to update session with capabilities",m)}return g}async getCallStatus(e){var n,r;const i=this.client.session.get(e.topic),s=(n=i.sessionProperties)==null?void 0:n.bundler_name;if(s){const a=this.getBundlerUrl(e.chainId,s);try{return await this.getUserOperationReceipt(a,e)}catch(c){console.warn("Failed to fetch call status from bundler",c,a)}}const o=(r=i.sessionProperties)==null?void 0:r.bundler_url;if(o)try{return await this.getUserOperationReceipt(o,e)}catch(a){console.warn("Failed to fetch call status from custom bundler",a,o)}if(this.namespace.methods.includes(e.request.method))return await this.client.request(e);throw new Error("Fetching call status not approved by the wallet.")}async getUserOperationReceipt(e,n){var r;const i=new URL(e),s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(fl("eth_getUserOperationReceipt",[(r=n.request.params)==null?void 0:r[0]]))});if(!s.ok)throw new Error(`Failed to fetch user operation receipt - ${s.status}`);return await s.json()}getBundlerUrl(e,n){return`${mhe}?projectId=${this.client.core.projectId}&chainId=${e}&bundler=${n}`}};var hfe=Object.defineProperty,ffe=(t,e,n)=>e in t?hfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Gd=(t,e,n)=>ffe(t,typeof e!="symbol"?e+"":e,n);let pfe=class{constructor(e){Gd(this,"name","solana"),Gd(this,"client"),Gd(this,"httpProviders"),Gd(this,"events"),Gd(this,"namespace"),Gd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=Cd(n);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}};var gfe=Object.defineProperty,mfe=(t,e,n)=>e in t?gfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,qd=(t,e,n)=>mfe(t,typeof e!="symbol"?e+"":e,n);let yfe=class{constructor(e){qd(this,"name","cosmos"),qd(this,"client"),qd(this,"httpProviders"),qd(this,"events"),qd(this,"namespace"),qd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=Cd(n);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}};var wfe=Object.defineProperty,vfe=(t,e,n)=>e in t?wfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Kd=(t,e,n)=>vfe(t,typeof e!="symbol"?e+"":e,n);let bfe=class{constructor(e){Kd(this,"name","algorand"),Kd(this,"client"),Kd(this,"httpProviders"),Kd(this,"events"),Kd(this,"namespace"),Kd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){if(!this.httpProviders[e]){const r=n||Cs(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;e[n]=this.createHttpProvider(n,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);return typeof r>"u"?void 0:new lo(new Wo(r,an("disableProviderPing")))}};var Efe=Object.defineProperty,_fe=(t,e,n)=>e in t?Efe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Xd=(t,e,n)=>_fe(t,typeof e!="symbol"?e+"":e,n);class Sfe{constructor(e){Xd(this,"name","cip34"),Xd(this,"client"),Xd(this,"httpProviders"),Xd(this,"events"),Xd(this,"namespace"),Xd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{const r=this.getCardanoRPCUrl(n),i=Cd(n);e[i]=this.createHttpProvider(i,r)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}getCardanoRPCUrl(e){const n=this.namespace.rpcMap;if(n)return n[e]}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||this.getCardanoRPCUrl(e);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}}var xfe=Object.defineProperty,Afe=(t,e,n)=>e in t?xfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Yd=(t,e,n)=>Afe(t,typeof e!="symbol"?e+"":e,n);let Cfe=class{constructor(e){Yd(this,"name","elrond"),Yd(this,"client"),Yd(this,"httpProviders"),Yd(this,"events"),Yd(this,"namespace"),Yd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=Cd(n);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}};var Tfe=Object.defineProperty,Ife=(t,e,n)=>e in t?Tfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Zd=(t,e,n)=>Ife(t,typeof e!="symbol"?e+"":e,n);class Mfe{constructor(e){Zd(this,"name","multiversx"),Zd(this,"client"),Zd(this,"httpProviders"),Zd(this,"events"),Zd(this,"namespace"),Zd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;const i=Cd(n);e[i]=this.createHttpProvider(i,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}}var Nfe=Object.defineProperty,Pfe=(t,e,n)=>e in t?Nfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Jd=(t,e,n)=>Pfe(t,typeof e!="symbol"?e+"":e,n);class Dfe{constructor(e){Jd(this,"name","near"),Jd(this,"client"),Jd(this,"httpProviders"),Jd(this,"events"),Jd(this,"namespace"),Jd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){if(this.chainId=e,!this.httpProviders[e]){const r=n||Cs(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{var r;e[n]=this.createHttpProvider(n,(r=this.namespace.rpcMap)==null?void 0:r[n])}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace);return typeof r>"u"?void 0:new lo(new Wo(r,an("disableProviderPing")))}}var Rfe=Object.defineProperty,Ofe=(t,e,n)=>e in t?Rfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Qd=(t,e,n)=>Ofe(t,typeof e!="symbol"?e+"":e,n);class Ufe{constructor(e){Qd(this,"name","tezos"),Qd(this,"client"),Qd(this,"httpProviders"),Qd(this,"events"),Qd(this,"namespace"),Qd(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,n){if(this.chainId=e,!this.httpProviders[e]){const r=n||Cs(`${this.name}:${e}`,this.namespace);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,r)}this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const e=this.namespace.accounts;return e?e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2])||[]:[]}createHttpProviders(){const e={};return this.namespace.chains.forEach(n=>{e[n]=this.createHttpProvider(n)}),e}getHttpProvider(){const e=`${this.name}:${this.chainId}`,n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace);return typeof r>"u"?void 0:new lo(new Wo(r))}}var Lfe=Object.defineProperty,kfe=(t,e,n)=>e in t?Lfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,eh=(t,e,n)=>kfe(t,typeof e!="symbol"?e+"":e,n);class $fe{constructor(e){eh(this,"name",Sh),eh(this,"client"),eh(this,"httpProviders"),eh(this,"events"),eh(this,"namespace"),eh(this,"chainId"),this.namespace=e.namespace,this.events=an("events"),this.client=an("client"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(e.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(e.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(e.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(e.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider(e.chainId).request(e.request)}setDefaultChain(e,n){this.httpProviders[e]||this.setHttpProvider(e,n),this.chainId=e,this.events.emit(uo.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const e=this.namespace.chains[0];if(!e)throw new Error("ChainId not found");return e.split(":")[1]}getAccounts(){const e=this.namespace.accounts;return e?[...new Set(e.filter(n=>n.split(":")[1]===this.chainId.toString()).map(n=>n.split(":")[2]))]:[]}createHttpProviders(){var e,n;const r={};return(n=(e=this.namespace)==null?void 0:e.accounts)==null||n.forEach(i=>{const s=rf(i);r[`${s.namespace}:${s.reference}`]=this.createHttpProvider(i)}),r}getHttpProvider(e){const n=this.httpProviders[e];if(typeof n>"u")throw new Error(`JSON-RPC provider for ${e} not found`);return n}setHttpProvider(e,n){const r=this.createHttpProvider(e,n);r&&(this.httpProviders[e]=r)}createHttpProvider(e,n){const r=n||Cs(e,this.namespace,this.client.core.projectId);if(!r)throw new Error(`No RPC url provided for chainId: ${e}`);return new lo(new Wo(r,an("disableProviderPing")))}}var Bfe=Object.defineProperty,Ffe=Object.defineProperties,zfe=Object.getOwnPropertyDescriptors,ZD=Object.getOwnPropertySymbols,Hfe=Object.prototype.hasOwnProperty,jfe=Object.prototype.propertyIsEnumerable,fA=(t,e,n)=>e in t?Bfe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ly=(t,e)=>{for(var n in e||(e={}))Hfe.call(e,n)&&fA(t,n,e[n]);if(ZD)for(var n of ZD(e))jfe.call(e,n)&&fA(t,n,e[n]);return t},r_=(t,e)=>Ffe(t,zfe(e)),Us=(t,e,n)=>fA(t,typeof e!="symbol"?e+"":e,n);class w1{constructor(e){Us(this,"client"),Us(this,"namespaces"),Us(this,"optionalNamespaces"),Us(this,"sessionProperties"),Us(this,"scopedProperties"),Us(this,"events",new Q2),Us(this,"rpcProviders",{}),Us(this,"session"),Us(this,"providerOpts"),Us(this,"logger"),Us(this,"uri"),Us(this,"disableProviderPing",!1),this.providerOpts=e,this.logger=typeof(e==null?void 0:e.logger)<"u"&&typeof(e==null?void 0:e.logger)!="string"?e.logger:m0(w0({level:(e==null?void 0:e.logger)||RD})),this.disableProviderPing=(e==null?void 0:e.disableProviderPing)||!1}static async init(e){const n=new w1(e);return await n.initialize(),n}async request(e,n,r){const[i,s]=this.validateChain(n);if(!this.session)throw new Error("Please call connect() before request()");return await this.getProvider(i).request({request:Ly({},e),chainId:`${i}:${s}`,topic:this.session.topic,expiry:r})}sendAsync(e,n,r,i){const s=new Date().getTime();this.request(e,r,i).then(o=>n(null,f1(s,o))).catch(o=>n(o,void 0))}async enable(){if(!this.client)throw new Error("Sign Client not initialized");return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){var e;if(!this.session)throw new Error("Please call connect() before enable()");await this.client.disconnect({topic:(e=this.session)==null?void 0:e.topic,reason:Hn("USER_DISCONNECTED")}),await this.cleanup()}async connect(e){if(!this.client)throw new Error("Sign Client not initialized");if(this.setNamespaces(e),await this.cleanupPendingPairings(),!e.skipPairing)return await this.pair(e.pairingTopic)}async authenticate(e,n){if(!this.client)throw new Error("Sign Client not initialized");this.setNamespaces(e),await this.cleanupPendingPairings();const{uri:r,response:i}=await this.client.authenticate(e,n);r&&(this.uri=r,this.events.emit("display_uri",r));const s=await i();if(this.session=s.session,this.session){const o=HD(this.session.namespaces);this.namespaces=Uy(this.namespaces,o),await this.persist("namespaces",this.namespaces),this.onConnect()}return s}on(e,n){this.events.on(e,n)}once(e,n){this.events.once(e,n)}removeListener(e,n){this.events.removeListener(e,n)}off(e,n){this.events.off(e,n)}get isWalletConnect(){return!0}async pair(e){const{uri:n,approval:r}=await this.client.connect({pairingTopic:e,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});n&&(this.uri=n,this.events.emit("display_uri",n));const i=await r();this.session=i;const s=HD(i.namespaces);return this.namespaces=Uy(this.namespaces,s),await this.persist("namespaces",this.namespaces),await this.persist("optionalNamespaces",this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(e,n){try{if(!this.session)return;const[r,i]=this.validateChain(e),s=this.getProvider(r);s.name===Sh?s.setDefaultChain(`${r}:${i}`,n):s.setDefaultChain(i,n)}catch(r){if(!/Please call connect/.test(r.message))throw r}}async cleanupPendingPairings(e={}){this.logger.info("Cleaning up inactive pairings...");const n=this.client.pairing.getAll();if(oc(n)){for(const r of n)e.deletePairings?this.client.core.expirer.set(r.topic,0):await this.client.core.relayer.subscriber.unsubscribe(r.topic);this.logger.info(`Inactive pairings cleared: ${n.length}`)}}abortPairingAttempt(){this.logger.warn("abortPairingAttempt is deprecated. This is now a no-op.")}async checkStorage(){this.namespaces=await this.getFromStore("namespaces")||{},this.optionalNamespaces=await this.getFromStore("optionalNamespaces")||{},this.session&&this.createProviders()}async initialize(){this.logger.trace("Initialized"),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){var e,n;if(this.client=this.providerOpts.client||await ihe.init({core:this.providerOpts.core,logger:this.providerOpts.logger||RD,relayUrl:this.providerOpts.relayUrl||fhe,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(r){throw this.logger.error("Failed to get session",r),new Error(`The provided session: ${(n=(e=this.providerOpts)==null?void 0:e.session)==null?void 0:n.topic} doesn't exist in the Sign client`)}else{const r=this.client.session.getAll();this.session=r[0]}this.logger.trace("SignClient Initialized")}createProviders(){if(!this.client)throw new Error("Sign Client not initialized");if(!this.session)throw new Error("Session not initialized. Please call connect() before enable()");const e=[...new Set(Object.keys(this.session.namespaces).map(n=>jh(n)))];t_("client",this.client),t_("events",this.events),t_("disableProviderPing",this.disableProviderPing),e.forEach(n=>{if(!this.session)return;const r=Yhe(n,this.session);if((r==null?void 0:r.length)===0)return;const i=G5(r),s=Uy(this.namespaces,this.optionalNamespaces),o=r_(Ly({},s[n]),{accounts:r,chains:i});switch(n){case"eip155":this.rpcProviders[n]=new dfe({namespace:o});break;case"algorand":this.rpcProviders[n]=new bfe({namespace:o});break;case"solana":this.rpcProviders[n]=new pfe({namespace:o});break;case"cosmos":this.rpcProviders[n]=new yfe({namespace:o});break;case"polkadot":this.rpcProviders[n]=new sfe({namespace:o});break;case"cip34":this.rpcProviders[n]=new Sfe({namespace:o});break;case"elrond":this.rpcProviders[n]=new Cfe({namespace:o});break;case"multiversx":this.rpcProviders[n]=new Mfe({namespace:o});break;case"near":this.rpcProviders[n]=new Dfe({namespace:o});break;case"tezos":this.rpcProviders[n]=new Ufe({namespace:o});break;default:this.rpcProviders[Sh]?this.rpcProviders[Sh].updateNamespace(o):this.rpcProviders[Sh]=new $fe({namespace:o})}})}registerEventListeners(){if(typeof this.client>"u")throw new Error("Sign Client is not initialized");this.client.on("session_ping",e=>{var n;const{topic:r}=e;r===((n=this.session)==null?void 0:n.topic)&&this.events.emit("session_ping",e)}),this.client.on("session_event",e=>{var n;const{params:r,topic:i}=e;if(i!==((n=this.session)==null?void 0:n.topic))return;const{event:s}=r;if(s.name==="accountsChanged"){const o=s.data;o&&oc(o)&&this.events.emit("accountsChanged",o.map(zD))}else if(s.name==="chainChanged"){const o=r.chainId,a=r.event.data,c=jh(o),l=e_(o)!==e_(a)?`${c}:${e_(a)}`:o;this.onChainChanged(l)}else this.events.emit(s.name,s.data);this.events.emit("session_event",e)}),this.client.on("session_update",({topic:e,params:n})=>{var r,i;if(e!==((r=this.session)==null?void 0:r.topic))return;const{namespaces:s}=n,o=(i=this.client)==null?void 0:i.session.get(e);this.session=r_(Ly({},o),{namespaces:s}),this.onSessionUpdate(),this.events.emit("session_update",{topic:e,params:n})}),this.client.on("session_delete",async e=>{var n;e.topic===((n=this.session)==null?void 0:n.topic)&&(await this.cleanup(),this.events.emit("session_delete",e),this.events.emit("disconnect",r_(Ly({},Hn("USER_DISCONNECTED")),{data:e.topic})))}),this.on(uo.DEFAULT_CHAIN_CHANGED,e=>{this.onChainChanged(e,!0)})}getProvider(e){return this.rpcProviders[e]||this.rpcProviders[Sh]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(e=>{var n;this.getProvider(e).updateNamespace((n=this.session)==null?void 0:n.namespaces[e])})}setNamespaces(e){const{namespaces:n={},optionalNamespaces:r={},sessionProperties:i,scopedProperties:s}=e;this.optionalNamespaces=Uy(n,r),this.sessionProperties=i,this.scopedProperties=s}validateChain(e){const[n,r]=(e==null?void 0:e.split(":"))||["",""];if(!this.namespaces||!Object.keys(this.namespaces).length)return[n,r];if(n&&!Object.keys(this.namespaces||{}).map(o=>jh(o)).includes(n))throw new Error(`Namespace '${n}' is not configured. Please call connect() first with namespace config.`);if(n&&r)return[n,r];const i=jh(Object.keys(this.namespaces)[0]),s=this.rpcProviders[i].getDefaultChain();return[i,s]}async requestAccounts(){const[e]=this.validateChain();return await this.getProvider(e).requestAccounts()}async onChainChanged(e,n=!1){if(!this.namespaces)return;const[r,i]=this.validateChain(e);if(!i)return;this.updateNamespaceChain(r,i),this.events.emit("chainChanged",i);const s=this.getProvider(r).getDefaultChain();n||this.getProvider(r).setDefaultChain(i),this.emitAccountsChangedOnChainChange({namespace:r,previousChainId:s,newChainId:e}),await this.persist("namespaces",this.namespaces)}emitAccountsChangedOnChainChange({namespace:e,previousChainId:n,newChainId:r}){var i,s;try{if(n===r)return;const o=(s=(i=this.session)==null?void 0:i.namespaces[e])==null?void 0:s.accounts;if(!o)return;const a=o.filter(c=>c.includes(`${r}:`)).map(zD);if(!oc(a))return;this.events.emit("accountsChanged",a)}catch(o){this.logger.warn("Failed to emit accountsChanged on chain change",o)}}updateNamespaceChain(e,n){if(!this.namespaces)return;const r=this.namespaces[e]?e:`${e}:${n}`,i={chains:[],methods:[],events:[],defaultChain:n};this.namespaces[r]?this.namespaces[r]&&(this.namespaces[r].defaultChain=n):this.namespaces[r]=i}onConnect(){this.createProviders(),this.events.emit("connect",{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore("namespaces"),await this.deleteFromStore("optionalNamespaces"),await this.deleteFromStore("sessionProperties"),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(e,n){var r;const i=((r=this.session)==null?void 0:r.topic)||"";await this.client.core.storage.setItem(`${Ry}/${e}${i}`,n)}async getFromStore(e){var n;const r=((n=this.session)==null?void 0:n.topic)||"";return await this.client.core.storage.getItem(`${Ry}/${e}${r}`)}async deleteFromStore(e){var n;const r=((n=this.session)==null?void 0:n.topic)||"";await this.client.core.storage.removeItem(`${Ry}/${e}${r}`)}async cleanupStorage(){var e;try{if(((e=this.client)==null?void 0:e.session.length)>0)return;const n=await this.client.core.storage.getKeys();for(const r of n)r.startsWith(Ry)&&await this.client.core.storage.removeItem(r)}catch(n){this.logger.warn("Failed to cleanup storage",n)}}}const Vfe=w1;var JD={};const ve={WC_NAME_SUFFIX:".reown.id",WC_NAME_SUFFIX_LEGACY:".wcn.id",BLOCKCHAIN_API_RPC_URL:"https://rpc.walletconnect.org",PULSE_API_URL:"https://pulse.walletconnect.org",W3M_API_URL:"https://api.web3modal.org",CONNECTOR_ID:{WALLET_CONNECT:"walletConnect",INJECTED:"injected",WALLET_STANDARD:"announced",COINBASE:"coinbaseWallet",COINBASE_SDK:"coinbaseWalletSDK",SAFE:"safe",LEDGER:"ledger",OKX:"okx",EIP6963:"eip6963",AUTH:"ID_AUTH"},CONNECTOR_NAMES:{AUTH:"Auth"},AUTH_CONNECTOR_SUPPORTED_CHAINS:["eip155","solana"],LIMITS:{PENDING_TRANSACTIONS:99},CHAIN:{EVM:"eip155",SOLANA:"solana",POLKADOT:"polkadot",BITCOIN:"bip122"},CHAIN_NAME_MAP:{eip155:"EVM Networks",solana:"Solana",polkadot:"Polkadot",bip122:"Bitcoin",cosmos:"Cosmos",sui:"Sui",stacks:"Stacks"},ADAPTER_TYPES:{BITCOIN:"bitcoin",SOLANA:"solana",WAGMI:"wagmi",ETHERS:"ethers",ETHERS5:"ethers5"},USDT_CONTRACT_ADDRESSES:["0xdac17f958d2ee523a2206206994597c13d831ec7","0xc2132d05d31c914a87c6611c10748aeb04b58e8f","0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7","0x919C1c267BC06a7039e03fcc2eF738525769109c","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e","0x55d398326f99059fF775485246999027B3197955","0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],HTTP_STATUS_CODES:{SERVER_ERROR:500,TOO_MANY_REQUESTS:429,SERVICE_UNAVAILABLE:503,FORBIDDEN:403},UNSUPPORTED_NETWORK_NAME:"Unknown Network",SECURE_SITE_SDK_ORIGIN:(typeof process<"u"&&typeof JD<"u"?JD.NEXT_PUBLIC_SECURE_SITE_ORIGIN:void 0)||"https://secure.walletconnect.org",REMOTE_FEATURES_ALERTS:{MULTI_WALLET_NOT_ENABLED:{DEFAULT:{displayMessage:"Multi-Wallet Not Enabled",debugMessage:"Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com."},CONNECTIONS_HOOK:{displayMessage:"Multi-Wallet Not Enabled",debugMessage:"Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com to use the useAppKitConnections hook."},CONNECTION_HOOK:{displayMessage:"Multi-Wallet Not Enabled",debugMessage:"Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com to use the useAppKitConnection hook."}}}},K5={caipNetworkIdToNumber(t){return t?Number(t.split(":")[1]):void 0},parseEvmChainId(t){return typeof t=="string"?this.caipNetworkIdToNumber(t):t},getNetworksByNamespace(t,e){return(t==null?void 0:t.filter(n=>n.chainNamespace===e))||[]},getFirstNetworkByNamespace(t,e){return this.getNetworksByNamespace(t,e)[0]},getNetworkNameByCaipNetworkId(t,e){var i;if(!e)return;const n=t.find(s=>s.caipNetworkId===e);if(n)return n.name;const[r]=e.split(":");return((i=ve.CHAIN_NAME_MAP)==null?void 0:i[r])||void 0}},X5=["eip155","solana","polkadot","bip122","cosmos","sui","stacks"];var Wfe=20,Gfe=1,dd=1e6,QD=1e6,qfe=-7,Kfe=21,Xfe=!1,C0="[big.js] ",Td=C0+"Invalid ",v1=Td+"decimal places",Yfe=Td+"rounding mode",Y5=C0+"Division by zero",yn={},_a=void 0,Zfe=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function Z5(){function t(e){var n=this;if(!(n instanceof t))return e===_a?Z5():new t(e);if(e instanceof t)n.s=e.s,n.e=e.e,n.c=e.c.slice();else{if(typeof e!="string"){if(t.strict===!0&&typeof e!="bigint")throw TypeError(Td+"value");e=e===0&&1/e<0?"-0":String(e)}Jfe(n,e)}n.constructor=t}return t.prototype=yn,t.DP=Wfe,t.RM=Gfe,t.NE=qfe,t.PE=Kfe,t.strict=Xfe,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}function Jfe(t,e){var n,r,i;if(!Zfe.test(e))throw Error(Td+"number");for(t.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1,(n=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(n<0&&(n=r),n+=+e.slice(r+1),e=e.substring(0,r)):n<0&&(n=e.length),i=e.length,r=0;r0&&e.charAt(--i)=="0";);for(t.e=n-r-1,t.c=[],n=0;r<=i;)t.c[n++]=+e.charAt(r++)}return t}function Id(t,e,n,r){var i=t.c;if(n===_a&&(n=t.constructor.RM),n!==0&&n!==1&&n!==2&&n!==3)throw Error(Yfe);if(e<1)r=n===3&&(r||!!i[0])||e===0&&(n===1&&i[0]>=5||n===2&&(i[0]>5||i[0]===5&&(r||i[1]!==_a))),i.length=1,r?(t.e=t.e-e+1,i[0]=1):i[0]=t.e=0;else if(e=5||n===2&&(i[e]>5||i[e]===5&&(r||i[e+1]!==_a||i[e-1]&1))||n===3&&(r||!!i[0]),i.length=e,r){for(;++i[--e]>9;)if(i[e]=0,e===0){++t.e,i.unshift(1);break}}for(e=i.length;!i[--e];)i.pop()}return t}function Md(t,e,n){var r=t.e,i=t.c.join(""),s=i.length;if(e)i=i.charAt(0)+(s>1?"."+i.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)i="0"+i;i="0."+i}else if(r>0)if(++r>s)for(r-=s;r--;)i+="0";else r1&&(i=i.charAt(0)+"."+i.slice(1));return t.s<0&&n?"-"+i:i}yn.abs=function(){var t=new this.constructor(this);return t.s=1,t};yn.cmp=function(t){var e,n=this,r=n.c,i=(t=new n.constructor(t)).c,s=n.s,o=t.s,a=n.e,c=t.e;if(!r[0]||!i[0])return r[0]?s:i[0]?-o:0;if(s!=o)return s;if(e=s<0,a!=c)return a>c^e?1:-1;for(o=(a=r.length)<(c=i.length)?a:c,s=-1;++si[s]^e?1:-1;return a==c?0:a>c^e?1:-1};yn.div=function(t){var e=this,n=e.constructor,r=e.c,i=(t=new n(t)).c,s=e.s==t.s?1:-1,o=n.DP;if(o!==~~o||o<0||o>dd)throw Error(v1);if(!i[0])throw Error(Y5);if(!r[0])return t.s=s,t.c=[t.e=0],t;var a,c,l,u,d,h=i.slice(),f=a=i.length,g=r.length,m=r.slice(0,a),y=m.length,p=t,v=p.c=[],w=0,b=o+(p.e=e.e-t.e)+1;for(p.s=s,s=b<0?0:b,h.unshift(0);y++y?1:-1;else for(d=-1,u=0;++dm[d]?1:-1;break}if(u<0){for(c=y==a?i:h;y;){if(m[--y]b&&Id(p,b,n.RM,m[0]!==_a),p};yn.eq=function(t){return this.cmp(t)===0};yn.gt=function(t){return this.cmp(t)>0};yn.gte=function(t){return this.cmp(t)>-1};yn.lt=function(t){return this.cmp(t)<0};yn.lte=function(t){return this.cmp(t)<1};yn.minus=yn.sub=function(t){var e,n,r,i,s=this,o=s.constructor,a=s.s,c=(t=new o(t)).s;if(a!=c)return t.s=-c,s.plus(t);var l=s.c.slice(),u=s.e,d=t.c,h=t.e;if(!l[0]||!d[0])return d[0]?t.s=-c:l[0]?t=new o(s):t.s=1,t;if(a=u-h){for((i=a<0)?(a=-a,r=l):(h=u,r=d),r.reverse(),c=a;c--;)r.push(0);r.reverse()}else for(n=((i=l.length0)for(;c--;)l[e++]=0;for(c=e;n>a;){if(l[--n]0?(c=o,r=l):(e=-e,r=a),r.reverse();e--;)r.push(0);r.reverse()}for(a.length-l.length<0&&(r=l,l=a,a=r),e=l.length,n=0;e;a[e]%=10)n=(a[--e]=a[e]+l[e]+n)/10|0;for(n&&(a.unshift(n),++c),e=a.length;a[--e]===0;)a.pop();return t.c=a,t.e=c,t};yn.pow=function(t){var e=this,n=new e.constructor("1"),r=n,i=t<0;if(t!==~~t||t<-QD||t>QD)throw Error(Td+"exponent");for(i&&(t=-t);t&1&&(r=r.times(e)),t>>=1,!!t;)e=e.times(e);return i?n.div(r):r};yn.prec=function(t,e){if(t!==~~t||t<1||t>dd)throw Error(Td+"precision");return Id(new this.constructor(this),t,e)};yn.round=function(t,e){if(t===_a)t=0;else if(t!==~~t||t<-dd||t>dd)throw Error(v1);return Id(new this.constructor(this),t+this.e+1,e)};yn.sqrt=function(){var t,e,n,r=this,i=r.constructor,s=r.s,o=r.e,a=new i("0.5");if(!r.c[0])return new i(r);if(s<0)throw Error(C0+"No square root");s=Math.sqrt(+Md(r,!0,!0)),s===0||s===1/0?(e=r.c.join(""),e.length+o&1||(e+="0"),s=Math.sqrt(e),o=((o+1)/2|0)-(o<0||o&1),t=new i((s==1/0?"5e":(s=s.toExponential()).slice(0,s.indexOf("e")+1))+o)):t=new i(s+""),o=t.e+(i.DP+=4);do n=t,t=a.times(n.plus(r.div(n)));while(n.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return Id(t,(i.DP-=4)+t.e+1,i.RM)};yn.times=yn.mul=function(t){var e,n=this,r=n.constructor,i=n.c,s=(t=new r(t)).c,o=i.length,a=s.length,c=n.e,l=t.e;if(t.s=n.s==t.s?1:-1,!i[0]||!s[0])return t.c=[t.e=0],t;for(t.e=c+l,oc;)a=e[l]+s[c]*i[l-c-1]+a,e[l--]=a%10,a=a/10|0;e[l]=a}for(a?++t.e:e.shift(),c=e.length;!e[--c];)e.pop();return t.c=e,t};yn.toExponential=function(t,e){var n=this,r=n.c[0];if(t!==_a){if(t!==~~t||t<0||t>dd)throw Error(v1);for(n=Id(new n.constructor(n),++t,e);n.c.lengthdd)throw Error(v1);for(n=Id(new n.constructor(n),t+n.e+1,e),t=t+n.e+1;n.c.length=e.PE,!!t.c[0])};yn.toNumber=function(){var t=+Md(this,!0,!0);if(this.constructor.strict===!0&&!this.eq(t.toString()))throw Error(C0+"Imprecise conversion");return t};yn.toPrecision=function(t,e){var n=this,r=n.constructor,i=n.c[0];if(t!==_a){if(t!==~~t||t<1||t>dd)throw Error(Td+"precision");for(n=Id(new r(n),t,e);n.c.length=r.PE,!!i)};yn.valueOf=function(){var t=this,e=t.constructor;if(e.strict===!0)throw Error(C0+"valueOf disallowed");return Md(t,t.e<=e.NE||t.e>=e.PE,!0)};var Fp=Z5();const Qfe={bigNumber(t){return t?new Fp(t):new Fp(0)},multiply(t,e){if(t===void 0||e===void 0)return new Fp(0);const n=new Fp(t),r=new Fp(e);return n.times(r)},formatNumberToLocalString(t,e=2){return t===void 0?"0.00":typeof t=="number"?t.toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e}):parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e})},parseLocalStringToNumber(t){return t===void 0?0:parseFloat(t.replace(/,/gu,""))}},epe=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],tpe=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{type:"bool"}]}],npe=[{type:"function",name:"transfer",stateMutability:"nonpayable",inputs:[{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[]},{type:"function",name:"transferFrom",stateMutability:"nonpayable",inputs:[{name:"sender",type:"address"},{name:"recipient",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],rpe={getERC20Abi:t=>ve.USDT_CONTRACT_ADDRESSES.includes(t)?npe:epe,getSwapAbi:()=>tpe},ms={validateCaipAddress(t){var e;if(((e=t.split(":"))==null?void 0:e.length)!==3)throw new Error("Invalid CAIP Address");return t},parseCaipAddress(t){const e=t.split(":");if(e.length!==3)throw new Error(`Invalid CAIP-10 address: ${t}`);const[n,r,i]=e;if(!n||!r||!i)throw new Error(`Invalid CAIP-10 address: ${t}`);return{chainNamespace:n,chainId:r,address:i}},parseCaipNetworkId(t){const e=t.split(":");if(e.length!==2)throw new Error(`Invalid CAIP-2 network id: ${t}`);const[n,r]=e;if(!n||!r)throw new Error(`Invalid CAIP-2 network id: ${t}`);return{chainNamespace:n,chainId:r}}},lt={WALLET_ID:"@appkit/wallet_id",WALLET_NAME:"@appkit/wallet_name",SOLANA_WALLET:"@appkit/solana_wallet",SOLANA_CAIP_CHAIN:"@appkit/solana_caip_chain",ACTIVE_CAIP_NETWORK_ID:"@appkit/active_caip_network_id",CONNECTED_SOCIAL:"@appkit/connected_social",CONNECTED_SOCIAL_USERNAME:"@appkit-wallet/SOCIAL_USERNAME",RECENT_WALLETS:"@appkit/recent_wallets",DEEPLINK_CHOICE:"WALLETCONNECT_DEEPLINK_CHOICE",ACTIVE_NAMESPACE:"@appkit/active_namespace",CONNECTED_NAMESPACES:"@appkit/connected_namespaces",CONNECTION_STATUS:"@appkit/connection_status",SIWX_AUTH_TOKEN:"@appkit/siwx-auth-token",SIWX_NONCE_TOKEN:"@appkit/siwx-nonce-token",TELEGRAM_SOCIAL_PROVIDER:"@appkit/social_provider",NATIVE_BALANCE_CACHE:"@appkit/native_balance_cache",PORTFOLIO_CACHE:"@appkit/portfolio_cache",ENS_CACHE:"@appkit/ens_cache",IDENTITY_CACHE:"@appkit/identity_cache",PREFERRED_ACCOUNT_TYPES:"@appkit/preferred_account_types",CONNECTIONS:"@appkit/connections",DISCONNECTED_CONNECTOR_IDS:"@appkit/disconnected_connector_ids",HISTORY_TRANSACTIONS_CACHE:"@appkit/history_transactions_cache",TOKEN_PRICE_CACHE:"@appkit/token_price_cache",RECENT_EMAILS:"@appkit/recent_emails"};function i_(t){if(!t)throw new Error("Namespace is required for CONNECTED_CONNECTOR_ID");return`@appkit/${t}:connected_connector_id`}const ct={setItem(t,e){Wh()&&e!==void 0&&localStorage.setItem(t,e)},getItem(t){if(Wh())return localStorage.getItem(t)||void 0},removeItem(t){Wh()&&localStorage.removeItem(t)},clear(){Wh()&&localStorage.clear()}};function Wh(){return typeof window<"u"&&typeof localStorage<"u"}function pl(t,e){return e==="light"?{"--w3m-accent":(t==null?void 0:t["--w3m-accent"])||"hsla(231, 100%, 70%, 1)","--w3m-background":"#fff"}:{"--w3m-accent":(t==null?void 0:t["--w3m-accent"])||"hsla(230, 100%, 67%, 1)","--w3m-background":"#121313"}}const ipe=Symbol(),eR=Object.getPrototypeOf,pA=new WeakMap,spe=t=>t&&(pA.has(t)?pA.get(t):eR(t)===Object.prototype||eR(t)===Array.prototype),ope=t=>spe(t)&&t[ipe]||null,tR=(t,e=!0)=>{pA.set(t,e)},ab={},OT=t=>typeof t=="object"&&t!==null,ape=t=>OT(t)&&!T0.has(t)&&(Array.isArray(t)||!(Symbol.iterator in t))&&!(t instanceof WeakMap)&&!(t instanceof WeakSet)&&!(t instanceof Error)&&!(t instanceof Number)&&!(t instanceof Date)&&!(t instanceof String)&&!(t instanceof RegExp)&&!(t instanceof ArrayBuffer)&&!(t instanceof Promise),J5=(t,e)=>{const n=gA.get(t);if((n==null?void 0:n[0])===e)return n[1];const r=Array.isArray(t)?[]:Object.create(Object.getPrototypeOf(t));return tR(r,!0),gA.set(t,[e,r]),Reflect.ownKeys(t).forEach(i=>{if(Object.getOwnPropertyDescriptor(r,i))return;const s=Reflect.get(t,i),{enumerable:o}=Reflect.getOwnPropertyDescriptor(t,i),a={value:s,enumerable:o,configurable:!0};if(T0.has(s))tR(s,!1);else if(Fl.has(s)){const[c,l]=Fl.get(s);a.value=J5(c,l())}Object.defineProperty(r,i,a)}),Object.preventExtensions(r)},cpe=(t,e,n,r)=>({deleteProperty(i,s){const o=Reflect.get(i,s);n(s);const a=Reflect.deleteProperty(i,s);return a&&r(["delete",[s],o]),a},set(i,s,o,a){const c=!t()&&Reflect.has(i,s),l=Reflect.get(i,s,a);if(c&&(nR(l,o)||Tm.has(o)&&nR(l,Tm.get(o))))return!0;n(s),OT(o)&&(o=ope(o)||o);const u=!Fl.has(o)&&upe(o)?Dn(o):o;return e(s,u),Reflect.set(i,s,u,a),r(["set",[s],o,l]),!0}}),Fl=new WeakMap,T0=new WeakSet,gA=new WeakMap,lg=[1,1],Tm=new WeakMap;let nR=Object.is,lpe=(t,e)=>new Proxy(t,e),upe=ape,dpe=J5,hpe=cpe;function Dn(t={}){if(!OT(t))throw new Error("object required");const e=Tm.get(t);if(e)return e;let n=lg[0];const r=new Set,i=(y,p=++lg[0])=>{n!==p&&(n=p,r.forEach(v=>v(y,p)))};let s=lg[1];const o=(y=++lg[1])=>(s!==y&&!r.size&&(s=y,c.forEach(([p])=>{const v=p[1](y);v>n&&(n=v)})),n),a=y=>(p,v)=>{const w=[...p];w[1]=[y,...w[1]],i(w,v)},c=new Map,l=(y,p)=>{const v=!T0.has(p)&&Fl.get(p);if(v){if((ab?"production":void 0)!=="production"&&c.has(y))throw new Error("prop listener already exists");if(r.size){const w=v[2](a(y));c.set(y,[v,w])}else c.set(y,[v])}},u=y=>{var p;const v=c.get(y);v&&(c.delete(y),(p=v[1])==null||p.call(v))},d=y=>(r.add(y),r.size===1&&c.forEach(([v,w],b)=>{if((ab?"production":void 0)!=="production"&&w)throw new Error("remove already exists");const S=v[2](a(b));c.set(b,[v,S])}),()=>{r.delete(y),r.size===0&&c.forEach(([v,w],b)=>{w&&(w(),c.set(b,[v]))})});let h=!0;const f=hpe(()=>h,l,u,i),g=lpe(t,f);Tm.set(t,g);const m=[t,o,d];return Fl.set(g,m),Reflect.ownKeys(t).forEach(y=>{const p=Object.getOwnPropertyDescriptor(t,y);"value"in p&&p.writable&&(g[y]=t[y])}),h=!1,g}function Vr(t,e,n){const r=Fl.get(t);(ab?"production":void 0)!=="production"&&!r&&console.warn("Please use proxy object");let i;const s=[],o=r[2];let a=!1;const l=o(u=>{s.push(u),i||(i=Promise.resolve().then(()=>{i=void 0,a&&e(s.splice(0))}))});return a=!0,()=>{a=!1,l()}}function Im(t){const e=Fl.get(t);(ab?"production":void 0)!=="production"&&!e&&console.warn("Please use proxy object");const[n,r]=e;return dpe(n,r())}function hd(t){return T0.add(t),t}function fpe(){return{proxyStateMap:Fl,refSet:T0,snapCache:gA,versionHolder:lg,proxyCache:Tm}}function hi(t,e,n,r){let i=t[e];return Vr(t,()=>{const s=t[e];Object.is(i,s)||n(i=s)})}const{proxyStateMap:ppe,snapCache:gpe}=fpe(),ky=t=>ppe.has(t);function mpe(t){const e=[];let n=0;const r=new Map,i=new WeakMap,s=()=>{const l=gpe.get(a),u=l==null?void 0:l[1];if(u&&!i.has(u)){const d=new Map(r);i.set(u,d)}},o=l=>i.get(l)||r,a={data:e,index:n,epoch:0,get size(){return ky(this)||s(),o(this).size},get(l){const d=o(this).get(l);if(d===void 0){this.epoch;return}return this.data[d]},has(l){const u=o(this);return this.epoch,u.has(l)},set(l,u){if(!ky(this))throw new Error("Cannot perform mutations on a snapshot");const d=r.get(l);return d===void 0?(r.set(l,this.index),this.data[this.index++]=u):this.data[d]=u,this.epoch++,this},delete(l){if(!ky(this))throw new Error("Cannot perform mutations on a snapshot");const u=r.get(l);return u===void 0?!1:(delete this.data[u],r.delete(l),this.epoch++,!0)},clear(){if(!ky(this))throw new Error("Cannot perform mutations on a snapshot");this.data.length=0,this.index=0,this.epoch++,r.clear()},forEach(l){this.epoch,o(this).forEach((d,h)=>{l(this.data[d],h,this)})},*entries(){this.epoch;const l=o(this);for(const[u,d]of l)yield[u,this.data[d]]},*keys(){this.epoch;const l=o(this);for(const u of l.keys())yield u},*values(){this.epoch;const l=o(this);for(const u of l.values())yield this.data[u]},[Symbol.iterator](){return this.entries()},get[Symbol.toStringTag](){return"Map"},toJSON(){return new Map(this.entries())}},c=Dn(a);return Object.defineProperties(c,{size:{enumerable:!1},index:{enumerable:!1},epoch:{enumerable:!1},data:{enumerable:!1},toJSON:{enumerable:!1}}),Object.seal(c),c}const Q5=[{label:"Meld.io",name:"meld",feeRange:"1-2%",url:"https://meldcrypto.com",supportedChains:["eip155","solana"]}],ype="WXETMuFUQmqqybHuRkSgxv:25B8LJHSfpG6LVjR2ytU5Cwh7Z4Sch2ocoU",pn={FOUR_MINUTES_MS:24e4,TEN_SEC_MS:1e4,ONE_SEC_MS:1e3,BALANCE_SUPPORTED_CHAINS:[ve.CHAIN.EVM,ve.CHAIN.SOLANA],NAMES_SUPPORTED_CHAIN_NAMESPACES:[ve.CHAIN.EVM],NATIVE_TOKEN_ADDRESS:{eip155:"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",solana:"So11111111111111111111111111111111111111111",polkadot:"0x",bip122:"0x",cosmos:"0x",sui:"0x",stacks:"0x"},CONVERT_SLIPPAGE_TOLERANCE:1,CONNECT_LABELS:{MOBILE:"Open and continue in the wallet app"},SEND_SUPPORTED_NAMESPACES:[ve.CHAIN.EVM,ve.CHAIN.SOLANA],DEFAULT_REMOTE_FEATURES:{swaps:["1inch"],onramp:["meld"],email:!0,socials:["google","x","discord","farcaster","github","apple","facebook"],activity:!0,reownBranding:!0,multiWallet:!1,emailCapture:!1},DEFAULT_REMOTE_FEATURES_DISABLED:{email:!1,socials:!1,swaps:!1,onramp:!1,activity:!1,reownBranding:!1,emailCapture:!1},DEFAULT_FEATURES:{receive:!0,send:!0,emailShowWallets:!0,connectorTypeOrder:["walletConnect","recent","injected","featured","custom","external","recommended"],analytics:!0,allWallets:!0,legalCheckbox:!1,smartSessions:!1,collapseWallets:!1,walletFeaturesOrder:["onramp","swaps","receive","send"],connectMethodsOrder:void 0,pay:!1},DEFAULT_ACCOUNT_TYPES:{bip122:"payment",eip155:"smartAccount",polkadot:"eoa",solana:"eoa"},ADAPTER_TYPES:{UNIVERSAL:"universal"},SIWX_DEFAULTS:{signOutOnDisconnect:!0}},Se={cacheExpiry:{portfolio:3e4,nativeBalance:3e4,ens:3e5,identity:3e5,transactionsHistory:15e3,tokenPrice:15e3},isCacheExpired(t,e){return Date.now()-t>e},getActiveNetworkProps(){const t=Se.getActiveNamespace(),e=Se.getActiveCaipNetworkId(),n=e?e.split(":")[1]:void 0,r=n?isNaN(Number(n))?n:Number(n):void 0;return{namespace:t,caipNetworkId:e,chainId:r}},setWalletConnectDeepLink({name:t,href:e}){try{ct.setItem(lt.DEEPLINK_CHOICE,JSON.stringify({href:e,name:t}))}catch{console.info("Unable to set WalletConnect deep link")}},getWalletConnectDeepLink(){try{const t=ct.getItem(lt.DEEPLINK_CHOICE);if(t)return JSON.parse(t)}catch{console.info("Unable to get WalletConnect deep link")}},deleteWalletConnectDeepLink(){try{ct.removeItem(lt.DEEPLINK_CHOICE)}catch{console.info("Unable to delete WalletConnect deep link")}},setActiveNamespace(t){try{ct.setItem(lt.ACTIVE_NAMESPACE,t)}catch{console.info("Unable to set active namespace")}},setActiveCaipNetworkId(t){try{ct.setItem(lt.ACTIVE_CAIP_NETWORK_ID,t),Se.setActiveNamespace(t.split(":")[0])}catch{console.info("Unable to set active caip network id")}},getActiveCaipNetworkId(){try{return ct.getItem(lt.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to get active caip network id");return}},deleteActiveCaipNetworkId(){try{ct.removeItem(lt.ACTIVE_CAIP_NETWORK_ID)}catch{console.info("Unable to delete active caip network id")}},deleteConnectedConnectorId(t){try{const e=i_(t);ct.removeItem(e)}catch{console.info("Unable to delete connected connector id")}},setAppKitRecent(t){try{const e=Se.getRecentWallets();e.find(r=>r.id===t.id)||(e.unshift(t),e.length>2&&e.pop(),ct.setItem(lt.RECENT_WALLETS,JSON.stringify(e)))}catch{console.info("Unable to set AppKit recent")}},getRecentWallets(){try{const t=ct.getItem(lt.RECENT_WALLETS);return t?JSON.parse(t):[]}catch{console.info("Unable to get AppKit recent")}return[]},setConnectedConnectorId(t,e){try{const n=i_(t);ct.setItem(n,e)}catch{console.info("Unable to set Connected Connector Id")}},getActiveNamespace(){try{return ct.getItem(lt.ACTIVE_NAMESPACE)}catch{console.info("Unable to get active namespace")}},getConnectedConnectorId(t){if(t)try{const e=i_(t);return ct.getItem(e)}catch{console.info("Unable to get connected connector id in namespace",t)}},setConnectedSocialProvider(t){try{ct.setItem(lt.CONNECTED_SOCIAL,t)}catch{console.info("Unable to set connected social provider")}},getConnectedSocialProvider(){try{return ct.getItem(lt.CONNECTED_SOCIAL)}catch{console.info("Unable to get connected social provider")}},deleteConnectedSocialProvider(){try{ct.removeItem(lt.CONNECTED_SOCIAL)}catch{console.info("Unable to delete connected social provider")}},getConnectedSocialUsername(){try{return ct.getItem(lt.CONNECTED_SOCIAL_USERNAME)}catch{console.info("Unable to get connected social username")}},getStoredActiveCaipNetworkId(){var n;const t=ct.getItem(lt.ACTIVE_CAIP_NETWORK_ID);return(n=t==null?void 0:t.split(":"))==null?void 0:n[1]},setConnectionStatus(t){try{ct.setItem(lt.CONNECTION_STATUS,t)}catch{console.info("Unable to set connection status")}},getConnectionStatus(){try{return ct.getItem(lt.CONNECTION_STATUS)}catch{return}},getConnectedNamespaces(){try{const t=ct.getItem(lt.CONNECTED_NAMESPACES);return t!=null&&t.length?t.split(","):[]}catch{return[]}},setConnectedNamespaces(t){try{const e=Array.from(new Set(t));ct.setItem(lt.CONNECTED_NAMESPACES,e.join(","))}catch{console.info("Unable to set namespaces in storage")}},addConnectedNamespace(t){try{const e=Se.getConnectedNamespaces();e.includes(t)||(e.push(t),Se.setConnectedNamespaces(e))}catch{console.info("Unable to add connected namespace")}},removeConnectedNamespace(t){try{const e=Se.getConnectedNamespaces(),n=e.indexOf(t);n>-1&&(e.splice(n,1),Se.setConnectedNamespaces(e))}catch{console.info("Unable to remove connected namespace")}},getTelegramSocialProvider(){try{return ct.getItem(lt.TELEGRAM_SOCIAL_PROVIDER)}catch{return console.info("Unable to get telegram social provider"),null}},setTelegramSocialProvider(t){try{ct.setItem(lt.TELEGRAM_SOCIAL_PROVIDER,t)}catch{console.info("Unable to set telegram social provider")}},removeTelegramSocialProvider(){try{ct.removeItem(lt.TELEGRAM_SOCIAL_PROVIDER)}catch{console.info("Unable to remove telegram social provider")}},getBalanceCache(){let t={};try{const e=ct.getItem(lt.PORTFOLIO_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromBalanceCache(t){try{const e=Se.getBalanceCache();ct.setItem(lt.PORTFOLIO_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getBalanceCacheForCaipAddress(t){try{const n=Se.getBalanceCache()[t];if(n&&!this.isCacheExpired(n.timestamp,this.cacheExpiry.portfolio))return n.balance;Se.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateBalanceCache(t){try{const e=Se.getBalanceCache();e[t.caipAddress]=t,ct.setItem(lt.PORTFOLIO_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getNativeBalanceCache(){let t={};try{const e=ct.getItem(lt.NATIVE_BALANCE_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get balance cache")}return t},removeAddressFromNativeBalanceCache(t){try{const e=Se.getBalanceCache();ct.setItem(lt.NATIVE_BALANCE_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove address from balance cache",t)}},getNativeBalanceCacheForCaipAddress(t){try{const n=Se.getNativeBalanceCache()[t];if(n&&!this.isCacheExpired(n.timestamp,this.cacheExpiry.nativeBalance))return n;console.info("Discarding cache for address",t),Se.removeAddressFromBalanceCache(t)}catch{console.info("Unable to get balance cache for address",t)}},updateNativeBalanceCache(t){try{const e=Se.getNativeBalanceCache();e[t.caipAddress]=t,ct.setItem(lt.NATIVE_BALANCE_CACHE,JSON.stringify(e))}catch{console.info("Unable to update balance cache",t)}},getEnsCache(){let t={};try{const e=ct.getItem(lt.ENS_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get ens name cache")}return t},getEnsFromCacheForAddress(t){try{const n=Se.getEnsCache()[t];if(n&&!this.isCacheExpired(n.timestamp,this.cacheExpiry.ens))return n.ens;Se.removeEnsFromCache(t)}catch{console.info("Unable to get ens name from cache",t)}},updateEnsCache(t){try{const e=Se.getEnsCache();e[t.address]=t,ct.setItem(lt.ENS_CACHE,JSON.stringify(e))}catch{console.info("Unable to update ens name cache",t)}},removeEnsFromCache(t){try{const e=Se.getEnsCache();ct.setItem(lt.ENS_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove ens name from cache",t)}},getIdentityCache(){let t={};try{const e=ct.getItem(lt.IDENTITY_CACHE);t=e?JSON.parse(e):{}}catch{console.info("Unable to get identity cache")}return t},getIdentityFromCacheForAddress(t){try{const n=Se.getIdentityCache()[t];if(n&&!this.isCacheExpired(n.timestamp,this.cacheExpiry.identity))return n.identity;Se.removeIdentityFromCache(t)}catch{console.info("Unable to get identity from cache",t)}},updateIdentityCache(t){try{const e=Se.getIdentityCache();e[t.address]={identity:t.identity,timestamp:t.timestamp},ct.setItem(lt.IDENTITY_CACHE,JSON.stringify(e))}catch{console.info("Unable to update identity cache",t)}},removeIdentityFromCache(t){try{const e=Se.getIdentityCache();ct.setItem(lt.IDENTITY_CACHE,JSON.stringify({...e,[t]:void 0}))}catch{console.info("Unable to remove identity from cache",t)}},clearAddressCache(){try{ct.removeItem(lt.PORTFOLIO_CACHE),ct.removeItem(lt.NATIVE_BALANCE_CACHE),ct.removeItem(lt.ENS_CACHE),ct.removeItem(lt.IDENTITY_CACHE),ct.removeItem(lt.HISTORY_TRANSACTIONS_CACHE)}catch{console.info("Unable to clear address cache")}},setPreferredAccountTypes(t){try{ct.setItem(lt.PREFERRED_ACCOUNT_TYPES,JSON.stringify(t))}catch{console.info("Unable to set preferred account types",t)}},getPreferredAccountTypes(){try{const t=ct.getItem(lt.PREFERRED_ACCOUNT_TYPES);return t?JSON.parse(t):{}}catch{console.info("Unable to get preferred account types")}return{}},setConnections(t,e){try{const n=Se.getConnections(),r=n[e]??[],i=new Map;for(const o of r)i.set(o.connectorId,{...o});for(const o of t){const a=i.get(o.connectorId),c=o.connectorId===ve.CONNECTOR_ID.AUTH;if(a&&!c){const l=new Set(a.accounts.map(d=>d.address.toLowerCase())),u=o.accounts.filter(d=>!l.has(d.address.toLowerCase()));a.accounts.push(...u)}else i.set(o.connectorId,{...o})}const s={...n,[e]:Array.from(i.values())};ct.setItem(lt.CONNECTIONS,JSON.stringify(s))}catch(n){console.error("Unable to sync connections to storage",n)}},getConnections(){try{const t=ct.getItem(lt.CONNECTIONS);return t?JSON.parse(t):{}}catch(t){return console.error("Unable to get connections from storage",t),{}}},deleteAddressFromConnection({connectorId:t,address:e,namespace:n}){try{const r=Se.getConnections(),i=r[n]??[],s=new Map(i.map(a=>[a.connectorId,a])),o=s.get(t);o&&(o.accounts.filter(c=>c.address.toLowerCase()!==e.toLowerCase()).length===0?s.delete(t):s.set(t,{...o,accounts:o.accounts.filter(c=>c.address.toLowerCase()!==e.toLowerCase())})),ct.setItem(lt.CONNECTIONS,JSON.stringify({...r,[n]:Array.from(s.values())}))}catch{console.error(`Unable to remove address "${e}" from connector "${t}" in namespace "${n}"`)}},getDisconnectedConnectorIds(){try{const t=ct.getItem(lt.DISCONNECTED_CONNECTOR_IDS);return t?JSON.parse(t):{}}catch{console.info("Unable to get disconnected connector ids")}return{}},addDisconnectedConnectorId(t,e){try{const n=Se.getDisconnectedConnectorIds(),r=n[e]??[];r.push(t),ct.setItem(lt.DISCONNECTED_CONNECTOR_IDS,JSON.stringify({...n,[e]:Array.from(new Set(r))}))}catch{console.error(`Unable to set disconnected connector id "${t}" for namespace "${e}"`)}},removeDisconnectedConnectorId(t,e){try{const n=Se.getDisconnectedConnectorIds();let r=n[e]??[];r=r.filter(i=>i.toLowerCase()!==t.toLowerCase()),ct.setItem(lt.DISCONNECTED_CONNECTOR_IDS,JSON.stringify({...n,[e]:Array.from(new Set(r))}))}catch{console.error(`Unable to remove disconnected connector id "${t}" for namespace "${e}"`)}},isConnectorDisconnected(t,e){try{return(Se.getDisconnectedConnectorIds()[e]??[]).some(i=>i.toLowerCase()===t.toLowerCase())}catch{console.info(`Unable to get disconnected connector id "${t}" for namespace "${e}"`)}return!1},getTransactionsCache(){try{const t=ct.getItem(lt.HISTORY_TRANSACTIONS_CACHE);return t?JSON.parse(t):{}}catch{console.info("Unable to get transactions cache")}return{}},getTransactionsCacheForAddress({address:t,chainId:e=""}){var n;try{const i=(n=Se.getTransactionsCache()[t])==null?void 0:n[e];if(i&&!this.isCacheExpired(i.timestamp,this.cacheExpiry.transactionsHistory))return i.transactions;Se.removeTransactionsCache({address:t,chainId:e})}catch{console.info("Unable to get transactions cache")}},updateTransactionsCache({address:t,chainId:e="",timestamp:n,transactions:r}){try{const i=Se.getTransactionsCache();i[t]={...i[t],[e]:{timestamp:n,transactions:r}},ct.setItem(lt.HISTORY_TRANSACTIONS_CACHE,JSON.stringify(i))}catch{console.info("Unable to update transactions cache",{address:t,chainId:e,timestamp:n,transactions:r})}},removeTransactionsCache({address:t,chainId:e}){try{const n=Se.getTransactionsCache(),r=(n==null?void 0:n[t])||{},{[e]:i,...s}=r;ct.setItem(lt.HISTORY_TRANSACTIONS_CACHE,JSON.stringify({...n,[t]:s}))}catch{console.info("Unable to remove transactions cache",{address:t,chainId:e})}},getTokenPriceCache(){try{const t=ct.getItem(lt.TOKEN_PRICE_CACHE);return t?JSON.parse(t):{}}catch{console.info("Unable to get token price cache")}return{}},getTokenPriceCacheForAddresses(t){try{const n=Se.getTokenPriceCache()[t.join(",")];if(n&&!this.isCacheExpired(n.timestamp,this.cacheExpiry.tokenPrice))return n.tokenPrice;Se.removeTokenPriceCache(t)}catch{console.info("Unable to get token price cache for addresses",t)}},updateTokenPriceCache(t){try{const e=Se.getTokenPriceCache();e[t.addresses.join(",")]={timestamp:t.timestamp,tokenPrice:t.tokenPrice},ct.setItem(lt.TOKEN_PRICE_CACHE,JSON.stringify(e))}catch{console.info("Unable to update token price cache",t)}},removeTokenPriceCache(t){try{const e=Se.getTokenPriceCache();ct.setItem(lt.TOKEN_PRICE_CACHE,JSON.stringify({...e,[t.join(",")]:void 0}))}catch{console.info("Unable to remove token price cache",t)}}},ot={isMobile(){var t;return this.isClient()?!!(window!=null&&window.matchMedia&&typeof window.matchMedia=="function"&&((t=window.matchMedia("(pointer:coarse)"))!=null&&t.matches)||/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini/u.test(navigator.userAgent)):!1},checkCaipNetwork(t,e=""){return t==null?void 0:t.caipNetworkId.toLocaleLowerCase().includes(e.toLowerCase())},isAndroid(){if(!this.isMobile())return!1;const t=window==null?void 0:window.navigator.userAgent.toLowerCase();return ot.isMobile()&&t.includes("android")},isIos(){if(!this.isMobile())return!1;const t=window==null?void 0:window.navigator.userAgent.toLowerCase();return t.includes("iphone")||t.includes("ipad")},isSafari(){return this.isClient()?(window==null?void 0:window.navigator.userAgent.toLowerCase()).includes("safari"):!1},isClient(){return typeof window<"u"},isPairingExpired(t){return t?t-Date.now()<=pn.TEN_SEC_MS:!0},isAllowedRetry(t,e=pn.ONE_SEC_MS){return Date.now()-t>=e},copyToClopboard(t){navigator.clipboard.writeText(t)},isIframe(){try{return(window==null?void 0:window.self)!==(window==null?void 0:window.top)}catch{return!1}},isSafeApp(){var t,e;if(ot.isClient()&&window.self!==window.top)try{const n=(e=(t=window==null?void 0:window.location)==null?void 0:t.ancestorOrigins)==null?void 0:e[0],r="https://app.safe.global";if(n){const i=new URL(n),s=new URL(r);return i.hostname===s.hostname}}catch{return!1}return!1},getPairingExpiry(){return Date.now()+pn.FOUR_MINUTES_MS},getNetworkId(t){return t==null?void 0:t.split(":")[1]},getPlainAddress(t){return t==null?void 0:t.split(":")[2]},async wait(t){return new Promise(e=>{setTimeout(e,t)})},debounce(t,e=500){let n;return(...r)=>{function i(){t(...r)}n&&clearTimeout(n),n=setTimeout(i,e)}},isHttpUrl(t){return t.startsWith("http://")||t.startsWith("https://")},formatNativeUrl(t,e,n=null){if(ot.isHttpUrl(t))return this.formatUniversalUrl(t,e);let r=t,i=n;r.includes("://")||(r=t.replaceAll("/","").replaceAll(":",""),r=`${r}://`),r.endsWith("/")||(r=`${r}/`),i&&!(i!=null&&i.endsWith("/"))&&(i=`${i}/`),this.isTelegram()&&this.isAndroid()&&(e=encodeURIComponent(e));const s=encodeURIComponent(e);return{redirect:`${r}wc?uri=${s}`,redirectUniversalLink:i?`${i}wc?uri=${s}`:void 0,href:r}},formatUniversalUrl(t,e){if(!ot.isHttpUrl(t))return this.formatNativeUrl(t,e);let n=t;n.endsWith("/")||(n=`${n}/`);const r=encodeURIComponent(e);return{redirect:`${n}wc?uri=${r}`,href:n}},getOpenTargetForPlatform(t){return t==="popupWindow"?t:this.isTelegram()?Se.getTelegramSocialProvider()?"_top":"_blank":t},openHref(t,e,n){window==null||window.open(t,this.getOpenTargetForPlatform(e),n||"noreferrer noopener")},returnOpenHref(t,e,n){return window==null?void 0:window.open(t,this.getOpenTargetForPlatform(e),n||"noreferrer noopener")},isTelegram(){return typeof window<"u"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)},isPWA(){var n,r;if(typeof window>"u")return!1;const t=window!=null&&window.matchMedia&&typeof window.matchMedia=="function"?(n=window.matchMedia("(display-mode: standalone)"))==null?void 0:n.matches:!1,e=(r=window==null?void 0:window.navigator)==null?void 0:r.standalone;return!!(t||e)},async preloadImage(t){const e=new Promise((n,r)=>{const i=new Image;i.onload=n,i.onerror=r,i.crossOrigin="anonymous",i.src=t});return Promise.race([e,ot.wait(2e3)])},formatBalance(t,e){let n="0.000";if(typeof t=="string"){const r=Number(t);if(r){const i=Math.floor(r*1e3)/1e3;i&&(n=i.toString())}}return`${n}${e?` ${e}`:""}`},formatBalance2(t,e){var r;let n;if(t==="0")n="0";else if(typeof t=="string"){const i=Number(t);i&&(n=(r=i.toString().match(/^-?\d+(?:\.\d{0,3})?/u))==null?void 0:r[0])}return{value:n??"0",rest:n==="0"?"000":"",symbol:e}},getApiUrl(){return ve.W3M_API_URL},getBlockchainApiUrl(){return ve.BLOCKCHAIN_API_RPC_URL},getAnalyticsUrl(){return ve.PULSE_API_URL},getUUID(){return crypto!=null&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})},parseError(t){var e,n;return typeof t=="string"?t:typeof((n=(e=t==null?void 0:t.issues)==null?void 0:e[0])==null?void 0:n.message)=="string"?t.issues[0].message:t instanceof Error?t.message:"Unknown error"},sortRequestedNetworks(t,e=[]){const n={};return e&&t&&(t.forEach((r,i)=>{n[r]=i}),e.sort((r,i)=>{const s=n[r.id],o=n[i.id];return s!==void 0&&o!==void 0?s-o:s!==void 0?-1:o!==void 0?1:0})),e},calculateBalance(t){let e=0;for(const n of t)e+=n.value??0;return e},formatTokenBalance(t){const e=t.toFixed(2),[n,r]=e.split(".");return{dollars:n,pennies:r}},isAddress(t,e="eip155"){switch(e){case"eip155":if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)){if(/^(?:0x)?[0-9a-f]{40}$/iu.test(t)||/^(?:0x)?[0-9A-F]{40}$/iu.test(t))return!0}else return!1;return!1;case"solana":return/[1-9A-HJ-NP-Za-km-z]{32,44}$/iu.test(t);default:return!1}},uniqueBy(t,e){const n=new Set;return t.filter(r=>{const i=r[e];return n.has(i)?!1:(n.add(i),!0)})},generateSdkVersion(t,e,n){const i=t.length===0?pn.ADAPTER_TYPES.UNIVERSAL:t.map(s=>s.adapterType).join(",");return`${e}-${i}-${n}`},createAccount(t,e,n,r,i){return{namespace:t,address:e,type:n,publicKey:r,path:i}},isCaipAddress(t){if(typeof t!="string")return!1;const e=t.split(":"),n=e[0];return e.filter(Boolean).length===3&&n in ve.CHAIN_NAME_MAP},getAccount(t){return t?typeof t=="string"?{address:t,chainId:void 0}:{address:t.address,chainId:t.chainId}:{address:void 0,chainId:void 0}},isMac(){const t=window==null?void 0:window.navigator.userAgent.toLowerCase();return t.includes("macintosh")&&!t.includes("safari")},formatTelegramSocialLoginUrl(t){const e=`--${encodeURIComponent(window==null?void 0:window.location.href)}`,n="state=";if(new URL(t).host==="auth.magic.link"){const i="provider_authorization_url=",s=t.substring(t.indexOf(i)+i.length),o=this.injectIntoUrl(decodeURIComponent(s),n,e);return t.replace(s,encodeURIComponent(o))}return this.injectIntoUrl(t,n,e)},injectIntoUrl(t,e,n){const r=t.indexOf(e);if(r===-1)throw new Error(`${e} parameter not found in the URL: ${t}`);const i=t.indexOf("&",r),s=e.length,o=i!==-1?i:t.length,a=t.substring(0,r+s),c=t.substring(r+s,o),l=t.substring(i),u=c+n;return a+u+l}};async function zp(...t){const e=await fetch(...t);if(!e.ok)throw new Error(`HTTP status code: ${e.status}`,{cause:e});return e}class I0{constructor({baseUrl:e,clientId:n}){this.baseUrl=e,this.clientId=n}async get({headers:e,signal:n,cache:r,...i}){const s=this.createUrl(i);return(await zp(s,{method:"GET",headers:e,signal:n,cache:r})).json()}async getBlob({headers:e,signal:n,...r}){const i=this.createUrl(r);return(await zp(i,{method:"GET",headers:e,signal:n})).blob()}async post({body:e,headers:n,signal:r,...i}){const s=this.createUrl(i);return(await zp(s,{method:"POST",headers:n,body:e?JSON.stringify(e):void 0,signal:r})).json()}async put({body:e,headers:n,signal:r,...i}){const s=this.createUrl(i);return(await zp(s,{method:"PUT",headers:n,body:e?JSON.stringify(e):void 0,signal:r})).json()}async delete({body:e,headers:n,signal:r,...i}){const s=this.createUrl(i);return(await zp(s,{method:"DELETE",headers:n,body:e?JSON.stringify(e):void 0,signal:r})).json()}createUrl({path:e,params:n}){const r=new URL(e,this.baseUrl);return n&&Object.entries(n).forEach(([i,s])=>{s&&r.searchParams.append(i,s)}),this.clientId&&r.searchParams.append("clientId",this.clientId),r}}const wpe={getFeatureValue(t,e){const n=e==null?void 0:e[t];return n===void 0?pn.DEFAULT_FEATURES[t]:n},filterSocialsByPlatform(t){if(!t||!t.length)return t;if(ot.isTelegram()){if(ot.isIos())return t.filter(e=>e!=="google");if(ot.isMac())return t.filter(e=>e!=="x");if(ot.isAndroid())return t.filter(e=>!["facebook","x"].includes(e))}return t}},tt=Dn({features:pn.DEFAULT_FEATURES,projectId:"",sdkType:"appkit",sdkVersion:"html-wagmi-undefined",defaultAccountTypes:pn.DEFAULT_ACCOUNT_TYPES,enableNetworkSwitch:!0,experimental_preferUniversalLinks:!1,remoteFeatures:{}}),we={state:tt,subscribeKey(t,e){return hi(tt,t,e)},setOptions(t){Object.assign(tt,t)},setRemoteFeatures(t){var n,r;if(!t)return;const e={...tt.remoteFeatures,...t};tt.remoteFeatures=e,(n=tt.remoteFeatures)!=null&&n.socials&&(tt.remoteFeatures.socials=wpe.filterSocialsByPlatform(tt.remoteFeatures.socials)),(r=tt.features)!=null&&r.pay&&(tt.remoteFeatures.email=!1,tt.remoteFeatures.socials=!1)},setFeatures(t){var n;if(!t)return;tt.features||(tt.features=pn.DEFAULT_FEATURES);const e={...tt.features,...t};tt.features=e,(n=tt.features)!=null&&n.pay&&tt.remoteFeatures&&(tt.remoteFeatures.email=!1,tt.remoteFeatures.socials=!1)},setProjectId(t){tt.projectId=t},setCustomRpcUrls(t){tt.customRpcUrls=t},setAllWallets(t){tt.allWallets=t},setIncludeWalletIds(t){tt.includeWalletIds=t},setExcludeWalletIds(t){tt.excludeWalletIds=t},setFeaturedWalletIds(t){tt.featuredWalletIds=t},setTokens(t){tt.tokens=t},setTermsConditionsUrl(t){tt.termsConditionsUrl=t},setPrivacyPolicyUrl(t){tt.privacyPolicyUrl=t},setCustomWallets(t){tt.customWallets=t},setIsSiweEnabled(t){tt.isSiweEnabled=t},setIsUniversalProvider(t){tt.isUniversalProvider=t},setSdkVersion(t){tt.sdkVersion=t},setMetadata(t){tt.metadata=t},setDisableAppend(t){tt.disableAppend=t},setEIP6963Enabled(t){tt.enableEIP6963=t},setDebug(t){tt.debug=t},setEnableWalletConnect(t){tt.enableWalletConnect=t},setEnableWalletGuide(t){tt.enableWalletGuide=t},setEnableAuthLogger(t){tt.enableAuthLogger=t},setEnableWallets(t){tt.enableWallets=t},setPreferUniversalLinks(t){tt.experimental_preferUniversalLinks=t},setSIWX(t){if(t)for(const[e,n]of Object.entries(pn.SIWX_DEFAULTS))t[e]??(t[e]=n);tt.siwx=t},setConnectMethodsOrder(t){tt.features={...tt.features,connectMethodsOrder:t}},setWalletFeaturesOrder(t){tt.features={...tt.features,walletFeaturesOrder:t}},setSocialsOrder(t){tt.remoteFeatures={...tt.remoteFeatures,socials:t}},setCollapseWallets(t){tt.features={...tt.features,collapseWallets:t}},setEnableEmbedded(t){tt.enableEmbedded=t},setAllowUnsupportedChain(t){tt.allowUnsupportedChain=t},setManualWCControl(t){tt.manualWCControl=t},setEnableNetworkSwitch(t){tt.enableNetworkSwitch=t},setEnableReconnect(t){tt.enableReconnect=t},setDefaultAccountTypes(t={}){Object.entries(t).forEach(([e,n])=>{n&&(tt.defaultAccountTypes[e]=n)})},setUniversalProviderConfigOverride(t){tt.universalProviderConfigOverride=t},getUniversalProviderConfigOverride(){return tt.universalProviderConfigOverride},getSnapshot(){return Im(tt)}},vpe=Object.freeze({enabled:!0,events:[]}),bpe=new I0({baseUrl:ot.getAnalyticsUrl(),clientId:null}),Epe=5,_pe=60*1e3,zc=Dn({...vpe}),Spe={state:zc,subscribeKey(t,e){return hi(zc,t,e)},async sendError(t,e){if(!zc.enabled)return;const n=Date.now();if(zc.events.filter(s=>{const o=new Date(s.properties.timestamp||"").getTime();return n-o<_pe}).length>=Epe)return;const i={type:"error",event:e,properties:{errorType:t.name,errorMessage:t.message,stackTrace:t.stack,timestamp:new Date().toISOString()}};zc.events.push(i);try{if(typeof window>"u")return;const{projectId:s,sdkType:o,sdkVersion:a}=we.state;await bpe.post({path:"/e",params:{projectId:s,st:o,sv:a||"html-wagmi-4.2.2"},body:{eventId:ot.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:new Date().toISOString(),props:{type:"error",event:e,errorType:t.name,errorMessage:t.message,stackTrace:t.stack}}})}catch{}},enable(){zc.enabled=!0},disable(){zc.enabled=!1},clearEvents(){zc.events=[]}};class Rf extends Error{constructor(e,n,r){super(e),this.name="AppKitError",this.category=n,this.originalError=r,Object.setPrototypeOf(this,Rf.prototype);let i=!1;if(r instanceof Error&&typeof r.stack=="string"&&r.stack){const s=r.stack,o=s.indexOf(` +`);if(o>-1){const a=s.substring(o+1);this.stack=`${this.name}: ${this.message} +${a}`,i=!0}}i||(Error.captureStackTrace?Error.captureStackTrace(this,Rf):this.stack||(this.stack=`${this.name}: ${this.message}`))}}function rR(t,e){const n=t instanceof Rf?t:new Rf(t instanceof Error?t.message:String(t),e,t);throw Spe.sendError(n,n.category),n}function Ns(t,e="INTERNAL_SDK_ERROR"){const n={};return Object.keys(t).forEach(r=>{const i=t[r];if(typeof i=="function"){let s=i;i.constructor.name==="AsyncFunction"?s=async(...o)=>{try{return await i(...o)}catch(a){return rR(a,e)}}:s=(...o)=>{try{return i(...o)}catch(a){return rR(a,e)}},n[r]=s}else n[r]=i}),n}const qu={ACCOUNT_TYPES:{EOA:"eoa",SMART_ACCOUNT:"smartAccount"}},aa={PHANTOM:{id:"a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393",url:"https://phantom.app"},SOLFLARE:{id:"1ca0bdd4747578705b1939af023d120677c64fe6ca76add81fda36e350605e79",url:"https://solflare.com"},COINBASE:{id:"fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa",url:"https://go.cb-w.com"}},xpe={handleMobileDeeplinkRedirect(t,e){const n=window.location.href,r=encodeURIComponent(n);if(t===aa.PHANTOM.id&&!("phantom"in window)){const i=n.startsWith("https")?"https":"http",s=n.split("/")[2],o=encodeURIComponent(`${i}://${s}`);window.location.href=`${aa.PHANTOM.url}/ul/browse/${r}?ref=${o}`}t===aa.SOLFLARE.id&&!("solflare"in window)&&(window.location.href=`${aa.SOLFLARE.url}/ul/v1/browse/${r}?ref=${r}`),e===ve.CHAIN.SOLANA&&t===aa.COINBASE.id&&!("coinbaseSolana"in window)&&(window.location.href=`${aa.COINBASE.url}/dapp?cb_url=${r}`)}},os=Dn({walletImages:{},networkImages:{},chainImages:{},connectorImages:{},tokenImages:{},currencyImages:{}}),Ape={state:os,subscribeNetworkImages(t){return Vr(os.networkImages,()=>t(os.networkImages))},subscribeKey(t,e){return hi(os,t,e)},subscribe(t){return Vr(os,()=>t(os))},setWalletImage(t,e){os.walletImages[t]=e},setNetworkImage(t,e){os.networkImages[t]=e},setChainImage(t,e){os.chainImages[t]=e},setConnectorImage(t,e){os.connectorImages={...os.connectorImages,[t]:e}},setTokenImage(t,e){os.tokenImages[t]=e},setCurrencyImage(t,e){os.currencyImages[t]=e}},Mo=Ns(Ape),Cpe={eip155:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",solana:"a1b58899-f671-4276-6a5e-56ca5bd59700",polkadot:"",bip122:"0b4838db-0161-4ffe-022d-532bf03dba00",cosmos:"",sui:"",stacks:""},s_=Dn({networkImagePromises:{}}),eF={async fetchWalletImage(t){if(t)return await ut._fetchWalletImage(t),this.getWalletImageById(t)},async fetchNetworkImage(t){if(!t)return;const e=this.getNetworkImageById(t);return e||(s_.networkImagePromises[t]||(s_.networkImagePromises[t]=ut._fetchNetworkImage(t)),await s_.networkImagePromises[t],this.getNetworkImageById(t))},getWalletImageById(t){if(t)return Mo.state.walletImages[t]},getWalletImage(t){if(t!=null&&t.image_url)return t==null?void 0:t.image_url;if(t!=null&&t.image_id)return Mo.state.walletImages[t.image_id]},getNetworkImage(t){var e,n,r;if((e=t==null?void 0:t.assets)!=null&&e.imageUrl)return(n=t==null?void 0:t.assets)==null?void 0:n.imageUrl;if((r=t==null?void 0:t.assets)!=null&&r.imageId)return Mo.state.networkImages[t.assets.imageId]},getNetworkImageById(t){if(t)return Mo.state.networkImages[t]},getConnectorImage(t){var e;if(t!=null&&t.imageUrl)return t.imageUrl;if((e=t==null?void 0:t.info)!=null&&e.icon)return t.info.icon;if(t!=null&&t.imageId)return Mo.state.connectorImages[t.imageId]},getChainImage(t){return Mo.state.networkImages[Cpe[t]]}},Hc=Dn({message:"",variant:"info",open:!1}),Tpe={state:Hc,subscribeKey(t,e){return hi(Hc,t,e)},open(t,e){const{debug:n}=we.state,{code:r,displayMessage:i,debugMessage:s}=t;i&&n&&(Hc.message=i,Hc.variant=e,Hc.open=!0),s&&console.error(typeof s=="function"?s():s,r?{code:r}:void 0)},close(){Hc.open=!1,Hc.message="",Hc.variant="info"}},oi=Ns(Tpe),Ipe=ot.getAnalyticsUrl(),Mpe=new I0({baseUrl:Ipe,clientId:null}),Npe=["MODAL_CREATED"],La=Dn({timestamp:Date.now(),reportedErrors:{},data:{type:"track",event:"MODAL_CREATED"}}),En={state:La,subscribe(t){return Vr(La,()=>t(La))},getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:n}=we.state;return{projectId:t,st:e,sv:n||"html-wagmi-4.2.2"}},async _sendAnalyticsEvent(t){try{const e=it.state.address;if(Npe.includes(t.data.event)||typeof window>"u")return;await Mpe.post({path:"/e",params:En.getSdkProperties(),body:{eventId:ot.getUUID(),url:window.location.href,domain:window.location.hostname,timestamp:t.timestamp,props:{...t.data,address:e}}}),La.reportedErrors.FORBIDDEN=!1}catch(e){e instanceof Error&&e.cause instanceof Response&&e.cause.status===ve.HTTP_STATUS_CODES.FORBIDDEN&&!La.reportedErrors.FORBIDDEN&&(oi.open({displayMessage:"Invalid App Configuration",debugMessage:`Origin ${Wh()?window.origin:"uknown"} not found on Allowlist - update configuration on cloud.reown.com`},"error"),La.reportedErrors.FORBIDDEN=!0)}},sendEvent(t){var e;La.timestamp=Date.now(),La.data=t,((e=we.state.features)!=null&&e.analytics||t.event==="INITIALIZE")&&En._sendAnalyticsEvent(La)}},Ppe=ot.getApiUrl(),Oi=new I0({baseUrl:Ppe,clientId:null}),Dpe=40,iR=4,Rpe=20,xt=Dn({promises:{},page:1,count:0,featured:[],allFeatured:[],recommended:[],allRecommended:[],wallets:[],filteredWallets:[],search:[],isAnalyticsEnabled:!1,excludedWallets:[],isFetchingRecommendedWallets:!1}),ut={state:xt,subscribeKey(t,e){return hi(xt,t,e)},_getSdkProperties(){const{projectId:t,sdkType:e,sdkVersion:n}=we.state;return{projectId:t,st:e||"appkit",sv:n||"html-wagmi-4.2.2"}},_filterOutExtensions(t){return we.state.isUniversalProvider?t.filter(e=>!!(e.mobile_link||e.desktop_link||e.webapp_link)):t},async _fetchWalletImage(t){const e=`${Oi.baseUrl}/getWalletImage/${t}`,n=await Oi.getBlob({path:e,params:ut._getSdkProperties()});Mo.setWalletImage(t,URL.createObjectURL(n))},async _fetchNetworkImage(t){const e=`${Oi.baseUrl}/public/getAssetImage/${t}`,n=await Oi.getBlob({path:e,params:ut._getSdkProperties()});Mo.setNetworkImage(t,URL.createObjectURL(n))},async _fetchConnectorImage(t){const e=`${Oi.baseUrl}/public/getAssetImage/${t}`,n=await Oi.getBlob({path:e,params:ut._getSdkProperties()});Mo.setConnectorImage(t,URL.createObjectURL(n))},async _fetchCurrencyImage(t){const e=`${Oi.baseUrl}/public/getCurrencyImage/${t}`,n=await Oi.getBlob({path:e,params:ut._getSdkProperties()});Mo.setCurrencyImage(t,URL.createObjectURL(n))},async _fetchTokenImage(t){const e=`${Oi.baseUrl}/public/getTokenImage/${t}`,n=await Oi.getBlob({path:e,params:ut._getSdkProperties()});Mo.setTokenImage(t,URL.createObjectURL(n))},_filterWalletsByPlatform(t){return ot.isMobile()?t==null?void 0:t.filter(n=>n.mobile_link||n.id===aa.COINBASE.id?!0:H.state.activeChain==="solana"&&(n.id===aa.SOLFLARE.id||n.id===aa.PHANTOM.id)):t},async fetchProjectConfig(){return(await Oi.get({path:"/appkit/v1/config",params:ut._getSdkProperties()})).features},async fetchAllowedOrigins(){try{const{allowedOrigins:t}=await Oi.get({path:"/projects/v1/origins",params:ut._getSdkProperties()});return t}catch(t){if(t instanceof Error&&t.cause instanceof Response){const e=t.cause.status;if(e===ve.HTTP_STATUS_CODES.TOO_MANY_REQUESTS)throw new Error("RATE_LIMITED",{cause:t});if(e>=ve.HTTP_STATUS_CODES.SERVER_ERROR&&e<600)throw new Error("SERVER_ERROR",{cause:t});return[]}return[]}},async fetchNetworkImages(){const t=H.getAllRequestedCaipNetworks(),e=t==null?void 0:t.map(({assets:n})=>n==null?void 0:n.imageId).filter(Boolean).filter(n=>!eF.getNetworkImageById(n));e&&await Promise.allSettled(e.map(n=>ut._fetchNetworkImage(n)))},async fetchConnectorImages(){const{connectors:t}=De.state,e=t.map(({imageId:n})=>n).filter(Boolean);await Promise.allSettled(e.map(n=>ut._fetchConnectorImage(n)))},async fetchCurrencyImages(t=[]){await Promise.allSettled(t.map(e=>ut._fetchCurrencyImage(e)))},async fetchTokenImages(t=[]){await Promise.allSettled(t.map(e=>ut._fetchTokenImage(e)))},async fetchWallets(t){var s;const e=t.exclude??[];ut._getSdkProperties().sv.startsWith("html-core-")&&e.push(...Object.values(aa).map(o=>o.id));const r=await Oi.get({path:"/getWallets",params:{...ut._getSdkProperties(),...t,page:String(t.page),entries:String(t.entries),include:(s=t.include)==null?void 0:s.join(","),exclude:e.join(",")}});return{data:ut._filterWalletsByPlatform(r==null?void 0:r.data)||[],count:r==null?void 0:r.count}},async fetchFeaturedWallets(){const{featuredWalletIds:t}=we.state;if(t!=null&&t.length){const e={...ut._getSdkProperties(),page:1,entries:(t==null?void 0:t.length)??iR,include:t},{data:n}=await ut.fetchWallets(e),r=[...n].sort((s,o)=>t.indexOf(s.id)-t.indexOf(o.id)),i=r.map(s=>s.image_id).filter(Boolean);await Promise.allSettled(i.map(s=>ut._fetchWalletImage(s))),xt.featured=r,xt.allFeatured=r}},async fetchRecommendedWallets(){try{xt.isFetchingRecommendedWallets=!0;const{includeWalletIds:t,excludeWalletIds:e,featuredWalletIds:n}=we.state,r=[...e??[],...n??[]].filter(Boolean),i=H.getRequestedCaipNetworkIds().join(","),s={page:1,entries:iR,include:t,exclude:r,chains:i},{data:o,count:a}=await ut.fetchWallets(s),c=Se.getRecentWallets(),l=o.map(d=>d.image_id).filter(Boolean),u=c.map(d=>d.image_id).filter(Boolean);await Promise.allSettled([...l,...u].map(d=>ut._fetchWalletImage(d))),xt.recommended=o,xt.allRecommended=o,xt.count=a??0}catch{}finally{xt.isFetchingRecommendedWallets=!1}},async fetchWalletsByPage({page:t}){const{includeWalletIds:e,excludeWalletIds:n,featuredWalletIds:r}=we.state,i=H.getRequestedCaipNetworkIds().join(","),s=[...xt.recommended.map(({id:u})=>u),...n??[],...r??[]].filter(Boolean),o={page:t,entries:Dpe,include:e,exclude:s,chains:i},{data:a,count:c}=await ut.fetchWallets(o),l=a.slice(0,Rpe).map(u=>u.image_id).filter(Boolean);await Promise.allSettled(l.map(u=>ut._fetchWalletImage(u))),xt.wallets=ot.uniqueBy([...xt.wallets,...ut._filterOutExtensions(a)],"id").filter(u=>{var d;return(d=u.chains)==null?void 0:d.some(h=>i.includes(h))}),xt.count=c>xt.count?c:xt.count,xt.page=t},async initializeExcludedWallets({ids:t}){const e={page:1,entries:t.length,include:t},{data:n}=await ut.fetchWallets(e);n&&n.forEach(r=>{xt.excludedWallets.push({rdns:r.rdns,name:r.name})})},async searchWallet({search:t,badge:e}){const{includeWalletIds:n,excludeWalletIds:r}=we.state,i=H.getRequestedCaipNetworkIds().join(",");xt.search=[];const s={page:1,entries:100,search:t==null?void 0:t.trim(),badge_type:e,include:n,exclude:r,chains:i},{data:o}=await ut.fetchWallets(s);En.sendEvent({type:"track",event:"SEARCH_WALLET",properties:{badge:e??"",search:t??""}});const a=o.map(c=>c.image_id).filter(Boolean);await Promise.allSettled([...a.map(c=>ut._fetchWalletImage(c)),ot.wait(300)]),xt.search=ut._filterOutExtensions(o)},initPromise(t,e){const n=xt.promises[t];return n||(xt.promises[t]=e())},prefetch({fetchConnectorImages:t=!0,fetchFeaturedWallets:e=!0,fetchRecommendedWallets:n=!0,fetchNetworkImages:r=!0}={}){const i=[t&&ut.initPromise("connectorImages",ut.fetchConnectorImages),e&&ut.initPromise("featuredWallets",ut.fetchFeaturedWallets),n&&ut.initPromise("recommendedWallets",ut.fetchRecommendedWallets),r&&ut.initPromise("networkImages",ut.fetchNetworkImages)].filter(Boolean);return Promise.allSettled(i)},prefetchAnalyticsConfig(){var t;(t=we.state.features)!=null&&t.analytics&&ut.fetchAnalyticsConfig()},async fetchAnalyticsConfig(){try{const{isAnalyticsEnabled:t}=await Oi.get({path:"/getAnalyticsConfig",params:ut._getSdkProperties()});we.setFeatures({analytics:t})}catch{we.setFeatures({analytics:!1})}},filterByNamespaces(t){if(!(t!=null&&t.length)){xt.featured=xt.allFeatured,xt.recommended=xt.allRecommended;return}const e=H.getRequestedCaipNetworkIds().join(",");xt.featured=xt.allFeatured.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))}),xt.recommended=xt.allRecommended.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))}),xt.filteredWallets=xt.wallets.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))})},clearFilterByNamespaces(){xt.filteredWallets=[]},setFilterByNamespace(t){if(!t){xt.featured=xt.allFeatured,xt.recommended=xt.allRecommended;return}const e=H.getRequestedCaipNetworkIds().join(",");xt.featured=xt.allFeatured.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))}),xt.recommended=xt.allRecommended.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))}),xt.filteredWallets=xt.wallets.filter(n=>{var r;return(r=n.chains)==null?void 0:r.some(i=>e.includes(i))})}},wn=Dn({view:"Connect",history:["Connect"],transactionStack:[]}),Ope={state:wn,subscribeKey(t,e){return hi(wn,t,e)},pushTransactionStack(t){wn.transactionStack.push(t)},popTransactionStack(t){const e=wn.transactionStack.pop();if(!e)return;const{onSuccess:n,onError:r,onCancel:i}=e;switch(t){case"success":n==null||n();break;case"error":r==null||r(),mt.goBack();break;case"cancel":i==null||i(),mt.goBack();break}},push(t,e){t!==wn.view&&(wn.view=t,wn.history.push(t),wn.data=e)},reset(t,e){wn.view=t,wn.history=[t],wn.data=e},replace(t,e){wn.history.at(-1)===t||(wn.view=t,wn.history[wn.history.length-1]=t,wn.data=e)},goBack(){var r;const t=H.state.activeCaipAddress,e=mt.state.view==="ConnectingFarcaster",n=!t&&e;if(wn.history.length>1){wn.history.pop();const[i]=wn.history.slice(-1);i&&(t&&i==="Connect"?wn.view="Account":wn.view=i)}else Vt.close();(r=wn.data)!=null&&r.wallet&&(wn.data.wallet=void 0),setTimeout(()=>{var i,s,o;if(n){it.setFarcasterUrl(void 0,H.state.activeChain);const a=De.getAuthConnector();(i=a==null?void 0:a.provider)==null||i.reload();const c=Im(we.state);(o=(s=a==null?void 0:a.provider)==null?void 0:s.syncDappData)==null||o.call(s,{metadata:c.metadata,sdkVersion:c.sdkVersion,projectId:c.projectId,sdkType:c.sdkType})}},100)},goBackToIndex(t){if(wn.history.length>1){wn.history=wn.history.slice(0,t+1);const[e]=wn.history.slice(-1);e&&(wn.view=e)}},goBackOrCloseModal(){mt.state.history.length>1?mt.goBack():Vt.close()}},mt=Ns(Ope),ka=Dn({themeMode:"dark",themeVariables:{},w3mThemeVariables:void 0}),mA={state:ka,subscribe(t){return Vr(ka,()=>t(ka))},setThemeMode(t){ka.themeMode=t;try{const e=De.getAuthConnector();if(e){const n=mA.getSnapshot().themeVariables;e.provider.syncTheme({themeMode:t,themeVariables:n,w3mThemeVariables:pl(n,t)})}}catch{console.info("Unable to sync theme to auth connector")}},setThemeVariables(t){ka.themeVariables={...ka.themeVariables,...t};try{const e=De.getAuthConnector();if(e){const n=mA.getSnapshot().themeVariables;e.provider.syncTheme({themeVariables:n,w3mThemeVariables:pl(ka.themeVariables,ka.themeMode)})}}catch{console.info("Unable to sync theme to auth connector")}},getSnapshot(){return Im(ka)}},hs=Ns(mA),tF=Object.fromEntries(X5.map(t=>[t,void 0])),Upe=Object.fromEntries(X5.map(t=>[t,!0])),rn=Dn({allConnectors:[],connectors:[],activeConnector:void 0,filterByNamespace:void 0,activeConnectorIds:tF,filterByNamespaceMap:Upe}),Lpe={state:rn,subscribe(t){return Vr(rn,()=>{t(rn)})},subscribeKey(t,e){return hi(rn,t,e)},initialize(t){t.forEach(e=>{const n=Se.getConnectedConnectorId(e);n&&De.setConnectorId(n,e)})},setActiveConnector(t){t&&(rn.activeConnector=hd(t))},setConnectors(t){t.filter(i=>!rn.allConnectors.some(s=>s.id===i.id&&De.getConnectorName(s.name)===De.getConnectorName(i.name)&&s.chain===i.chain)).forEach(i=>{i.type!=="MULTI_CHAIN"&&rn.allConnectors.push(hd(i))});const n=De.getEnabledNamespaces(),r=De.getEnabledConnectors(n);rn.connectors=De.mergeMultiChainConnectors(r)},filterByNamespaces(t){Object.keys(rn.filterByNamespaceMap).forEach(e=>{rn.filterByNamespaceMap[e]=!1}),t.forEach(e=>{rn.filterByNamespaceMap[e]=!0}),De.updateConnectorsForEnabledNamespaces()},filterByNamespace(t,e){rn.filterByNamespaceMap[t]=e,De.updateConnectorsForEnabledNamespaces()},updateConnectorsForEnabledNamespaces(){const t=De.getEnabledNamespaces(),e=De.getEnabledConnectors(t),n=De.areAllNamespacesEnabled();rn.connectors=De.mergeMultiChainConnectors(e),n?ut.clearFilterByNamespaces():ut.filterByNamespaces(t)},getEnabledNamespaces(){return Object.entries(rn.filterByNamespaceMap).filter(([t,e])=>e).map(([t])=>t)},getEnabledConnectors(t){return rn.allConnectors.filter(e=>t.includes(e.chain))},areAllNamespacesEnabled(){return Object.values(rn.filterByNamespaceMap).every(t=>t)},mergeMultiChainConnectors(t){const e=De.generateConnectorMapByName(t),n=[];return e.forEach(r=>{const i=r[0],s=(i==null?void 0:i.id)===ve.CONNECTOR_ID.AUTH;r.length>1&&i?n.push({name:i.name,imageUrl:i.imageUrl,imageId:i.imageId,connectors:[...r],type:s?"AUTH":"MULTI_CHAIN",chain:"eip155",id:(i==null?void 0:i.id)||""}):i&&n.push(i)}),n},generateConnectorMapByName(t){const e=new Map;return t.forEach(n=>{const{name:r}=n,i=De.getConnectorName(r);if(!i)return;const s=e.get(i)||[];s.find(a=>a.chain===n.chain)||s.push(n),e.set(i,s)}),e},getConnectorName(t){return t&&({"Trust Wallet":"Trust"}[t]||t)},getUniqueConnectorsByName(t){const e=[];return t.forEach(n=>{e.find(r=>r.chain===n.chain)||e.push(n)}),e},addConnector(t){var e,n,r;if(t.id===ve.CONNECTOR_ID.AUTH){const i=t,s=Im(we.state),o=hs.getSnapshot().themeMode,a=hs.getSnapshot().themeVariables;(n=(e=i==null?void 0:i.provider)==null?void 0:e.syncDappData)==null||n.call(e,{metadata:s.metadata,sdkVersion:s.sdkVersion,projectId:s.projectId,sdkType:s.sdkType}),(r=i==null?void 0:i.provider)==null||r.syncTheme({themeMode:o,themeVariables:a,w3mThemeVariables:pl(a,o)}),De.setConnectors([t])}else De.setConnectors([t])},getAuthConnector(t){var r;const e=t||H.state.activeChain,n=rn.connectors.find(i=>i.id===ve.CONNECTOR_ID.AUTH);if(n)return(r=n==null?void 0:n.connectors)!=null&&r.length?n.connectors.find(s=>s.chain===e):n},getAnnouncedConnectorRdns(){return rn.connectors.filter(t=>t.type==="ANNOUNCED").map(t=>{var e;return(e=t.info)==null?void 0:e.rdns})},getConnectorById(t){return rn.allConnectors.find(e=>e.id===t)},getConnector({id:t,rdns:e,namespace:n}){const r=n||H.state.activeChain;return rn.allConnectors.filter(s=>s.chain===r).find(s=>{var o;return s.explorerId===t||((o=s.info)==null?void 0:o.rdns)===e})},syncIfAuthConnector(t){var s,o;if(t.id!=="ID_AUTH")return;const e=t,n=Im(we.state),r=hs.getSnapshot().themeMode,i=hs.getSnapshot().themeVariables;(o=(s=e==null?void 0:e.provider)==null?void 0:s.syncDappData)==null||o.call(s,{metadata:n.metadata,sdkVersion:n.sdkVersion,sdkType:n.sdkType,projectId:n.projectId}),e.provider.syncTheme({themeMode:r,themeVariables:i,w3mThemeVariables:pl(i,r)})},getConnectorsByNamespace(t){const e=rn.allConnectors.filter(n=>n.chain===t);return De.mergeMultiChainConnectors(e)},canSwitchToSmartAccount(t){return H.checkIfSmartAccountEnabled()&&Aa(t)===qu.ACCOUNT_TYPES.EOA},selectWalletConnector(t){const e=De.getConnector({id:t.id,rdns:t.rdns});xpe.handleMobileDeeplinkRedirect((e==null?void 0:e.explorerId)||t.id,H.state.activeChain),e?mt.push("ConnectingExternal",{connector:e,wallet:t}):mt.push("ConnectingWalletConnect",{wallet:t})},getConnectors(t){return t?De.getConnectorsByNamespace(t):De.mergeMultiChainConnectors(rn.allConnectors)},setFilterByNamespace(t){rn.filterByNamespace=t,rn.connectors=De.getConnectors(t),ut.setFilterByNamespace(t)},setConnectorId(t,e){t&&(rn.activeConnectorIds={...rn.activeConnectorIds,[e]:t},Se.setConnectedConnectorId(e,t))},removeConnectorId(t){rn.activeConnectorIds={...rn.activeConnectorIds,[t]:void 0},Se.deleteConnectedConnectorId(t)},getConnectorId(t){if(t)return rn.activeConnectorIds[t]},isConnected(t){return t?!!rn.activeConnectorIds[t]:Object.values(rn.activeConnectorIds).some(e=>!!e)},resetConnectorIds(){rn.activeConnectorIds={...tF}}},De=Ns(Lpe),kpe=1e3,Hp={checkNamespaceConnectorId(t,e){return De.getConnectorId(t)===e},isSocialProvider(t){return pn.DEFAULT_REMOTE_FEATURES.socials.includes(t)},connectWalletConnect({walletConnect:t,connector:e,closeModalOnConnect:n=!0,redirectViewOnModalClose:r="Connect",onOpen:i,onConnect:s}){return new Promise((o,a)=>{if(t&&De.setActiveConnector(e),i==null||i(ot.isMobile()&&t),r){const l=Vt.subscribeKey("open",u=>{u||(mt.state.view!==r&&mt.replace(r),l(),a(new Error("Modal closed")))})}const c=H.subscribeKey("activeCaipAddress",l=>{l&&(s==null||s(),n&&Vt.close(),c(),o(ms.parseCaipAddress(l)))})})},connectExternal(t){return new Promise((e,n)=>{const r=H.subscribeKey("activeCaipAddress",i=>{i&&(Vt.close(),r(),e(ms.parseCaipAddress(i)))});Le.connectExternal(t,t.chain).catch(()=>{r(),n(new Error("Connection rejected"))})})},connectSocial({social:t,namespace:e,closeModalOnConnect:n=!0,onOpenFarcaster:r,onConnect:i}){let s=it.state.socialWindow,o=it.state.socialProvider,a=!1,c=null;const l=e||H.state.activeChain,u=H.subscribeKey("activeCaipAddress",d=>{d&&(n&&Vt.close(),u())});return new Promise((d,h)=>{async function f(m){var y,p;if((y=m.data)!=null&&y.resultUri)if(m.origin===ve.SECURE_SITE_SDK_ORIGIN){window.removeEventListener("message",f,!1);try{const v=De.getAuthConnector(l);if(v&&!a){s&&(s.close(),it.setSocialWindow(void 0,l),s=it.state.socialWindow),a=!0;const w=m.data.resultUri;if(o&&En.sendEvent({type:"track",event:"SOCIAL_LOGIN_REQUEST_USER_DATA",properties:{provider:o}}),o){Se.setConnectedSocialProvider(o),await Le.connectExternal({id:v.id,type:v.type,socialUri:w},v.chain);const b=H.state.activeCaipAddress;if(!b){h(new Error("Failed to connect"));return}d(ms.parseCaipAddress(b)),En.sendEvent({type:"track",event:"SOCIAL_LOGIN_SUCCESS",properties:{provider:o,caipNetworkId:(p=H.getActiveCaipNetwork())==null?void 0:p.caipNetworkId}})}}}catch{o&&En.sendEvent({type:"track",event:"SOCIAL_LOGIN_ERROR",properties:{provider:o}}),h(new Error("Failed to connect"))}}else o&&En.sendEvent({type:"track",event:"SOCIAL_LOGIN_ERROR",properties:{provider:o}})}async function g(){if(t&&(it.setSocialProvider(t,l),o=it.state.socialProvider,En.sendEvent({type:"track",event:"SOCIAL_LOGIN_STARTED",properties:{provider:o}})),o==="farcaster"){r==null||r();const m=Vt.subscribeKey("open",p=>{!p&&t==="farcaster"&&(h(new Error("Popup closed")),i==null||i(),m())}),y=De.getAuthConnector();if(y&&!it.state.farcasterUrl)try{const{url:p}=await y.provider.getFarcasterUri();it.setFarcasterUrl(p,l)}catch{h(new Error("Failed to connect to farcaster"))}}else{const m=De.getAuthConnector();c=ot.returnOpenHref(`${ve.SECURE_SITE_SDK_ORIGIN}/loading`,"popupWindow","width=600,height=800,scrollbars=yes");try{if(m&&o){const{uri:y}=await m.provider.getSocialRedirectUri({provider:o});if(c&&y){it.setSocialWindow(c,l),s=it.state.socialWindow,c.location.href=y;const p=setInterval(()=>{s!=null&&s.closed&&!a&&(h(new Error("Popup closed")),clearInterval(p))},1e3);window.addEventListener("message",f,!1)}else c==null||c.close(),h(new Error("Failed to initiate social connection"))}}catch{h(new Error("Failed to initiate social connection")),c==null||c.close()}}}g()})},connectEmail({closeModalOnConnect:t=!0,redirectViewOnModalClose:e="Connect",onOpen:n,onConnect:r}){return new Promise((i,s)=>{if(n==null||n(),e){const a=Vt.subscribeKey("open",c=>{c||(mt.state.view!==e&&mt.replace(e),a(),s(new Error("Modal closed")))})}const o=H.subscribeKey("activeCaipAddress",a=>{a&&(r==null||r(),t&&Vt.close(),o(),i(ms.parseCaipAddress(a)))})})},async updateEmail(){const t=Se.getConnectedConnectorId(H.state.activeChain),e=De.getAuthConnector();if(!e)throw new Error("No auth connector found");if(t!==ve.CONNECTOR_ID.AUTH)throw new Error("Not connected to email or social");const n=e.provider.getEmail()??"";return await Vt.open({view:"UpdateEmailWallet",data:{email:n,redirectView:void 0}}),new Promise((r,i)=>{const s=setInterval(()=>{const a=e.provider.getEmail()??"";a!==n&&(Vt.close(),clearInterval(s),o(),r({email:a}))},kpe),o=Vt.subscribeKey("open",a=>{a||(mt.state.view!=="Connect"&&mt.push("Connect"),clearInterval(s),o(),i(new Error("Modal closed")))})})},canSwitchToSmartAccount(t){return H.checkIfSmartAccountEnabled()&&Aa(t)===qu.ACCOUNT_TYPES.EOA}};function nF(){var r,i;const t=((r=H.state.activeCaipNetwork)==null?void 0:r.chainNamespace)||"eip155",e=((i=H.state.activeCaipNetwork)==null?void 0:i.id)||1,n=pn.NATIVE_TOKEN_ADDRESS[t];return`${t}:${e}:${n}`}function Aa(t){var n;return(n=H.getAccountData(t))==null?void 0:n.preferredAccountType}function sR(t){return H.state.activeCaipNetwork}const cb={getConnectionStatus(t,e){const n=De.state.activeConnectorIds[e],r=Le.getConnections(e);return!!n&&t.connectorId===n?"connected":r.some(o=>o.connectorId.toLowerCase()===t.connectorId.toLowerCase())?"active":"disconnected"},excludeConnectorAddressFromConnections({connections:t,connectorId:e,addresses:n}){return t.map(r=>{if((e?r.connectorId.toLowerCase()===e.toLowerCase():!1)&&n){const s=r.accounts.filter(o=>!n.some(c=>c.toLowerCase()===o.address.toLowerCase()));return{...r,accounts:s}}return r})},excludeExistingConnections(t,e){const n=new Set(t);return e.filter(r=>!n.has(r.connectorId))},getConnectionsByConnectorId(t,e){return t.filter(n=>n.connectorId.toLowerCase()===e.toLowerCase())},getConnectionsData(t){var a;const e=!!((a=we.state.remoteFeatures)!=null&&a.multiWallet),n=De.state.activeConnectorIds[t],r=Le.getConnections(t),s=(Le.state.recentConnections.get(t)??[]).filter(c=>De.getConnectorById(c.connectorId)),o=cb.excludeExistingConnections([...r.map(c=>c.connectorId),...n?[n]:[]],s);return e?{connections:r,recentConnections:o}:{connections:r.filter(c=>c.connectorId.toLowerCase()===(n==null?void 0:n.toLowerCase())),recentConnections:[]}}},wu=Object.freeze({message:"",variant:"success",svg:void 0,open:!1,autoClose:!0}),fr=Dn({...wu}),$pe={state:fr,subscribeKey(t,e){return hi(fr,t,e)},showLoading(t,e={}){this._showMessage({message:t,variant:"loading",...e})},showSuccess(t){this._showMessage({message:t,variant:"success"})},showSvg(t,e){this._showMessage({message:t,svg:e})},showError(t){const e=ot.parseError(t);this._showMessage({message:e,variant:"error"})},hide(){fr.message=wu.message,fr.variant=wu.variant,fr.svg=wu.svg,fr.open=wu.open,fr.autoClose=wu.autoClose},_showMessage({message:t,svg:e,variant:n="success",autoClose:r=wu.autoClose}){fr.open?(fr.open=!1,setTimeout(()=>{fr.message=t,fr.variant=n,fr.svg=e,fr.open=!0,fr.autoClose=r},150)):(fr.message=t,fr.variant=n,fr.svg=e,fr.open=!0,fr.autoClose=r)}},pa=$pe,zn=Dn({transactions:[],transactionsByYear:{},lastNetworkInView:void 0,loading:!1,empty:!1,next:void 0}),Bpe={state:zn,subscribe(t){return Vr(zn,()=>t(zn))},setLastNetworkInView(t){zn.lastNetworkInView=t},async fetchTransactions(t){var e;if(!t)throw new Error("Transactions can't be fetched without an accountAddress");zn.loading=!0;try{const n=await dt.fetchTransactions({account:t,cursor:zn.next,chainId:(e=H.state.activeCaipNetwork)==null?void 0:e.caipNetworkId}),r=Ww.filterSpamTransactions(n.data),i=Ww.filterByConnectedChain(r),s=[...zn.transactions,...i];zn.loading=!1,zn.transactions=s,zn.transactionsByYear=Ww.groupTransactionsByYearAndMonth(zn.transactionsByYear,i),zn.empty=s.length===0,zn.next=n.next?n.next:void 0}catch{const r=H.state.activeChain;En.sendEvent({type:"track",event:"ERROR_FETCH_TRANSACTIONS",properties:{address:t,projectId:we.state.projectId,cursor:zn.next,isSmartAccount:Aa(r)===qu.ACCOUNT_TYPES.SMART_ACCOUNT}}),pa.showError("Failed to fetch transactions"),zn.loading=!1,zn.empty=!0,zn.next=void 0}},groupTransactionsByYearAndMonth(t={},e=[]){const n=t;return e.forEach(r=>{const i=new Date(r.metadata.minedAt).getFullYear(),s=new Date(r.metadata.minedAt).getMonth(),o=n[i]??{},c=(o[s]??[]).filter(l=>l.id!==r.id);n[i]={...o,[s]:[...c,r].sort((l,u)=>new Date(u.metadata.minedAt).getTime()-new Date(l.metadata.minedAt).getTime())}}),n},filterSpamTransactions(t){return t.filter(e=>!e.transfers.every(r=>{var i;return((i=r.nft_info)==null?void 0:i.flags.is_spam)===!0}))},filterByConnectedChain(t){var r;const e=(r=H.state.activeCaipNetwork)==null?void 0:r.caipNetworkId;return t.filter(i=>i.metadata.chain===e)},clearCursor(){zn.next=void 0},resetTransactions(){zn.transactions=[],zn.transactionsByYear={},zn.lastNetworkInView=void 0,zn.loading=!1,zn.empty=!1,zn.next=void 0}},Ww=Ns(Bpe,"API_ERROR"),Ht=Dn({connections:new Map,recentConnections:new Map,isSwitchingConnection:!1,wcError:!1,buffering:!1,status:"disconnected"});let ou;const Fpe={state:Ht,subscribe(t){return Vr(Ht,()=>t(Ht))},subscribeKey(t,e){return hi(Ht,t,e)},_getClient(){return Ht._client},setClient(t){Ht._client=hd(t)},initialize(t){const e=t.filter(n=>!!n.namespace).map(n=>n.namespace);Le.syncStorageConnections(e)},syncStorageConnections(t){const e=Se.getConnections(),n=t??Array.from(H.state.chains.keys());for(const r of n){const i=e[r]??[],s=new Map(Ht.recentConnections);s.set(r,i),Ht.recentConnections=s}},getConnections(t){return t?Ht.connections.get(t)??[]:[]},hasAnyConnection(t){const e=Le.state.connections;return Array.from(e.values()).flatMap(n=>n).some(({connectorId:n})=>n===t)},async connectWalletConnect(){var t,e,n,r;if(ot.isTelegram()||ot.isSafari()&&ot.isIos()){if(ou){await ou,ou=void 0;return}if(!ot.isPairingExpired(Ht==null?void 0:Ht.wcPairingExpiry)){const i=Ht.wcUri;Ht.wcUri=i;return}ou=(e=(t=Le._getClient())==null?void 0:t.connectWalletConnect)==null?void 0:e.call(t).catch(()=>{}),Le.state.status="connecting",await ou,ou=void 0,Ht.wcPairingExpiry=void 0,Le.state.status="connected"}else await((r=(n=Le._getClient())==null?void 0:n.connectWalletConnect)==null?void 0:r.call(n))},async connectExternal(t,e,n=!0){var i,s;const r=await((s=(i=Le._getClient())==null?void 0:i.connectExternal)==null?void 0:s.call(i,t));return n&&H.setActiveNamespace(e),r},async reconnectExternal(t){var n,r;await((r=(n=Le._getClient())==null?void 0:n.reconnectExternal)==null?void 0:r.call(n,t));const e=t.chain||H.state.activeChain;e&&De.setConnectorId(t.id,e)},async setPreferredAccountType(t,e){var r;if(!e)return;Vt.setLoading(!0,H.state.activeChain);const n=De.getAuthConnector();n&&(it.setPreferredAccountType(t,e),await n.provider.setPreferredAccount(t),Se.setPreferredAccountTypes(Object.entries(H.state.chains).reduce((i,[s,o])=>{const a=s,c=Aa(a);return c!==void 0&&(i[a]=c),i},{})),await Le.reconnectExternal(n),Vt.setLoading(!1,H.state.activeChain),En.sendEvent({type:"track",event:"SET_PREFERRED_ACCOUNT_TYPE",properties:{accountType:t,network:((r=H.state.activeCaipNetwork)==null?void 0:r.caipNetworkId)||""}}))},async signMessage(t){var e;return(e=Le._getClient())==null?void 0:e.signMessage(t)},parseUnits(t,e){var n;return(n=Le._getClient())==null?void 0:n.parseUnits(t,e)},formatUnits(t,e){var n;return(n=Le._getClient())==null?void 0:n.formatUnits(t,e)},async sendTransaction(t){var e;return(e=Le._getClient())==null?void 0:e.sendTransaction(t)},async getCapabilities(t){var e;return(e=Le._getClient())==null?void 0:e.getCapabilities(t)},async grantPermissions(t){var e;return(e=Le._getClient())==null?void 0:e.grantPermissions(t)},async walletGetAssets(t){var e;return((e=Le._getClient())==null?void 0:e.walletGetAssets(t))??{}},async estimateGas(t){var e;return(e=Le._getClient())==null?void 0:e.estimateGas(t)},async writeContract(t){var e;return(e=Le._getClient())==null?void 0:e.writeContract(t)},async getEnsAddress(t){var e;return(e=Le._getClient())==null?void 0:e.getEnsAddress(t)},async getEnsAvatar(t){var e;return(e=Le._getClient())==null?void 0:e.getEnsAvatar(t)},checkInstalled(t){var e,n;return((n=(e=Le._getClient())==null?void 0:e.checkInstalled)==null?void 0:n.call(e,t))||!1},resetWcConnection(){Ht.wcUri=void 0,Ht.wcPairingExpiry=void 0,Ht.wcLinking=void 0,Ht.recentWallet=void 0,Ht.status="disconnected",Ww.resetTransactions(),Se.deleteWalletConnectDeepLink()},resetUri(){Ht.wcUri=void 0,Ht.wcPairingExpiry=void 0,ou=void 0},finalizeWcConnection(){var n,r,i;const{wcLinking:t,recentWallet:e}=Le.state;t&&Se.setWalletConnectDeepLink(t),e&&Se.setAppKitRecent(e),En.sendEvent({type:"track",event:"CONNECT_SUCCESS",properties:{method:t?"mobile":"qrcode",name:((r=(n=mt.state.data)==null?void 0:n.wallet)==null?void 0:r.name)||"Unknown",caipNetworkId:(i=H.getActiveCaipNetwork())==null?void 0:i.caipNetworkId}})},setWcBasic(t){Ht.wcBasic=t},setUri(t){Ht.wcUri=t,Ht.wcPairingExpiry=ot.getPairingExpiry()},setWcLinking(t){Ht.wcLinking=t},setWcError(t){Ht.wcError=t,Ht.buffering=!1},setRecentWallet(t){Ht.recentWallet=t},setBuffering(t){Ht.buffering=t},setStatus(t){Ht.status=t},setIsSwitchingConnection(t){Ht.isSwitchingConnection=t},async disconnect({id:t,namespace:e,initialDisconnect:n}={}){var r;try{await((r=Le._getClient())==null?void 0:r.disconnect({id:t,chainNamespace:e,initialDisconnect:n}))}catch(i){throw new Rf("Failed to disconnect","INTERNAL_SDK_ERROR",i)}},setConnections(t,e){const n=new Map(Ht.connections);n.set(e,t),Ht.connections=n},async handleAuthAccountSwitch({address:t,namespace:e}){var i,s;const n=(s=(i=it.state.user)==null?void 0:i.accounts)==null?void 0:s.find(o=>o.type==="smartAccount"),r=n&&n.address.toLowerCase()===t.toLowerCase()&&Hp.canSwitchToSmartAccount(e)?"smartAccount":"eoa";await Le.setPreferredAccountType(r,e)},async handleActiveConnection({connection:t,namespace:e,address:n}){const r=De.getConnectorById(t.connectorId),i=t.connectorId===ve.CONNECTOR_ID.AUTH;if(!r)throw new Error(`No connector found for connection: ${t.connectorId}`);if(i)i&&n&&await Le.handleAuthAccountSwitch({address:n,namespace:e});else{const s=await Le.connectExternal({id:r.id,type:r.type,provider:r.provider,address:n,chain:e},e);return s==null?void 0:s.address}return n},async handleDisconnectedConnection({connection:t,namespace:e,address:n,closeModalOnConnect:r}){var l,u;const i=De.getConnectorById(t.connectorId),s=(u=(l=t.auth)==null?void 0:l.name)==null?void 0:u.toLowerCase(),o=t.connectorId===ve.CONNECTOR_ID.AUTH,a=t.connectorId===ve.CONNECTOR_ID.WALLET_CONNECT;if(!i)throw new Error(`No connector found for connection: ${t.connectorId}`);let c;if(o)if(s&&Hp.isSocialProvider(s)){const{address:d}=await Hp.connectSocial({social:s,closeModalOnConnect:r,onOpenFarcaster(){Vt.open({view:"ConnectingFarcaster"})},onConnect(){mt.replace("ProfileWallets")}});c=d}else{const{address:d}=await Hp.connectEmail({closeModalOnConnect:r,onOpen(){Vt.open({view:"EmailLogin"})},onConnect(){mt.replace("ProfileWallets")}});c=d}else if(a){const{address:d}=await Hp.connectWalletConnect({walletConnect:!0,connector:i,closeModalOnConnect:r,onOpen(h){Vt.open({view:h?"AllWallets":"ConnectingWalletConnect"})},onConnect(){mt.replace("ProfileWallets")}});c=d}else{const d=await Le.connectExternal({id:i.id,type:i.type,provider:i.provider,chain:e},e);d&&(c=d.address)}return o&&n&&await Le.handleAuthAccountSwitch({address:n,namespace:e}),c},async switchConnection({connection:t,address:e,namespace:n,closeModalOnConnect:r,onChange:i}){let s;const o=it.getCaipAddress(n);if(o){const{address:c}=ms.parseCaipAddress(o);s=c}const a=cb.getConnectionStatus(t,n);switch(a){case"connected":case"active":{const c=await Le.handleActiveConnection({connection:t,namespace:n,address:e});if(s&&c){const l=c.toLowerCase()!==s.toLowerCase();i==null||i({address:c,namespace:n,hasSwitchedAccount:l,hasSwitchedWallet:a==="active"})}break}case"disconnected":{const c=await Le.handleDisconnectedConnection({connection:t,namespace:n,address:e,closeModalOnConnect:r});c&&(i==null||i({address:c,namespace:n,hasSwitchedAccount:!0,hasSwitchedWallet:!0}));break}default:throw new Error(`Invalid connection status: ${a}`)}}},Le=Ns(Fpe),th=Dn({loading:!1,open:!1,selectedNetworkId:void 0,activeChain:void 0,initialized:!1}),tc={state:th,subscribe(t){return Vr(th,()=>t(th))},subscribeOpen(t){return hi(th,"open",t)},set(t){Object.assign(th,{...th,...t})}},zpe={async getTokenList(){var r;const t=H.state.activeCaipNetwork,e=await dt.fetchSwapTokens({chainId:t==null?void 0:t.caipNetworkId});return((r=e==null?void 0:e.tokens)==null?void 0:r.map(i=>({...i,eip2612:!1,quantity:{decimals:"0",numeric:"0"},price:0,value:0})))||[]},async fetchGasPrice(){var e;const t=H.state.activeCaipNetwork;if(!t)return null;try{switch(t.chainNamespace){case"solana":const n=(e=await(Le==null?void 0:Le.estimateGas({chainNamespace:"solana"})))==null?void 0:e.toString();return{standard:n,fast:n,instant:n};case"eip155":default:return await dt.fetchGasPrice({chainId:t.caipNetworkId})}}catch{return null}},async fetchSwapAllowance({tokenAddress:t,userAddress:e,sourceTokenAmount:n,sourceTokenDecimals:r}){const i=await dt.fetchSwapAllowance({tokenAddress:t,userAddress:e});if(i!=null&&i.allowance&&n&&r){const s=Le.parseUnits(n,r)||0;return BigInt(i.allowance)>=s}return!1},async getMyTokensWithBalance(t){const e=await $T.getMyTokensWithBalance(t);return it.setTokenBalance(e,H.state.activeChain),this.mapBalancesToSwapTokens(e)},mapBalancesToSwapTokens(t){return(t==null?void 0:t.map(e=>({...e,address:e!=null&&e.address?e.address:nF(),decimals:parseInt(e.quantity.decimals,10),logoUri:e.iconUrl,eip2612:!1})))||[]}},gn=Dn({tokenBalances:[],loading:!1}),Hpe={state:gn,subscribe(t){return Vr(gn,()=>t(gn))},subscribeKey(t,e){return hi(gn,t,e)},setToken(t){t&&(gn.token=hd(t))},setTokenAmount(t){gn.sendTokenAmount=t},setReceiverAddress(t){gn.receiverAddress=t},setReceiverProfileImageUrl(t){gn.receiverProfileImageUrl=t},setReceiverProfileName(t){gn.receiverProfileName=t},setNetworkBalanceInUsd(t){gn.networkBalanceInUSD=t},setLoading(t){gn.loading=t},async sendToken(){var t;try{switch(cn.setLoading(!0),(t=H.state.activeCaipNetwork)==null?void 0:t.chainNamespace){case"eip155":await cn.sendEvmToken();return;case"solana":await cn.sendSolanaToken();return;default:throw new Error("Unsupported chain")}}finally{cn.setLoading(!1)}},async sendEvmToken(){var n,r,i;const t=H.state.activeChain;if(!t)throw new Error("SendController:sendEvmToken - activeChainNamespace is required");const e=Aa(t);if(!cn.state.sendTokenAmount||!cn.state.receiverAddress)throw new Error("An amount and receiver address are required");if(!cn.state.token)throw new Error("A token is required");(n=cn.state.token)!=null&&n.address?(En.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===qu.ACCOUNT_TYPES.SMART_ACCOUNT,token:cn.state.token.address,amount:cn.state.sendTokenAmount,network:((r=H.state.activeCaipNetwork)==null?void 0:r.caipNetworkId)||""}}),await cn.sendERC20Token({receiverAddress:cn.state.receiverAddress,tokenAddress:cn.state.token.address,sendTokenAmount:cn.state.sendTokenAmount,decimals:cn.state.token.quantity.decimals})):(En.sendEvent({type:"track",event:"SEND_INITIATED",properties:{isSmartAccount:e===qu.ACCOUNT_TYPES.SMART_ACCOUNT,token:cn.state.token.symbol||"",amount:cn.state.sendTokenAmount,network:((i=H.state.activeCaipNetwork)==null?void 0:i.caipNetworkId)||""}}),await cn.sendNativeToken({receiverAddress:cn.state.receiverAddress,sendTokenAmount:cn.state.sendTokenAmount,decimals:cn.state.token.quantity.decimals}))},async fetchTokenBalance(t){var s,o;gn.loading=!0;const e=(s=H.state.activeCaipNetwork)==null?void 0:s.caipNetworkId,n=(o=H.state.activeCaipNetwork)==null?void 0:o.chainNamespace,r=H.state.activeCaipAddress,i=r?ot.getPlainAddress(r):void 0;if(gn.lastRetry&&!ot.isAllowedRetry(gn.lastRetry,30*pn.ONE_SEC_MS))return gn.loading=!1,[];try{if(i&&e&&n){const a=await $T.getMyTokensWithBalance();return gn.tokenBalances=a,gn.lastRetry=void 0,a}}catch(a){gn.lastRetry=Date.now(),t==null||t(a),pa.showError("Token Balance Unavailable")}finally{gn.loading=!1}return[]},fetchNetworkBalance(){if(gn.tokenBalances.length===0)return;const t=zpe.mapBalancesToSwapTokens(gn.tokenBalances);if(!t)return;const e=t.find(n=>n.address===nF());e&&(gn.networkBalanceInUSD=e?Qfe.multiply(e.quantity.numeric,e.price).toString():"0")},async sendNativeToken(t){var s,o,a;mt.pushTransactionStack({});const e=t.receiverAddress,n=it.state.address,r=Le.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));await Le.sendTransaction({chainNamespace:ve.CHAIN.EVM,to:e,address:n,data:"0x",value:r??BigInt(0)}),En.sendEvent({type:"track",event:"SEND_SUCCESS",properties:{isSmartAccount:Aa("eip155")===qu.ACCOUNT_TYPES.SMART_ACCOUNT,token:((s=cn.state.token)==null?void 0:s.symbol)||"",amount:t.sendTokenAmount,network:((o=H.state.activeCaipNetwork)==null?void 0:o.caipNetworkId)||""}}),(a=Le._getClient())==null||a.updateBalance("eip155"),cn.resetSend()},async sendERC20Token(t){mt.pushTransactionStack({onSuccess(){mt.replace("Account")}});const e=Le.parseUnits(t.sendTokenAmount.toString(),Number(t.decimals));if(it.state.address&&t.sendTokenAmount&&t.receiverAddress&&t.tokenAddress){const n=ot.getPlainAddress(t.tokenAddress);if(!n)throw new Error("SendController:sendERC20Token - tokenAddress is required");await Le.writeContract({fromAddress:it.state.address,tokenAddress:n,args:[t.receiverAddress,e??BigInt(0)],method:"transfer",abi:rpe.getERC20Abi(n),chainNamespace:ve.CHAIN.EVM}),cn.resetSend()}},async sendSolanaToken(){var t;if(!cn.state.sendTokenAmount||!cn.state.receiverAddress)throw new Error("An amount and receiver address are required");mt.pushTransactionStack({onSuccess(){mt.replace("Account")}}),await Le.sendTransaction({chainNamespace:"solana",to:cn.state.receiverAddress,value:cn.state.sendTokenAmount}),(t=Le._getClient())==null||t.updateBalance("solana"),cn.resetSend()},resetSend(){gn.token=void 0,gn.sendTokenAmount=void 0,gn.receiverAddress=void 0,gn.receiverProfileImageUrl=void 0,gn.receiverProfileName=void 0,gn.loading=!1,gn.tokenBalances=[]}},cn=Ns(Hpe),o_={currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map,user:void 0,preferredAccountType:void 0},$y={caipNetwork:void 0,supportsAllNetworks:!0,smartAccountEnabledNetworks:[]},$e=Dn({chains:mpe(),activeCaipAddress:void 0,activeChain:void 0,activeCaipNetwork:void 0,noAdapters:!1,universalAdapter:{networkControllerClient:void 0,connectionControllerClient:void 0},isSwitchingNamespace:!1}),jpe={state:$e,subscribe(t){return Vr($e,()=>{t($e)})},subscribeKey(t,e){return hi($e,t,e)},subscribeChainProp(t,e,n){let r;return Vr($e.chains,()=>{var s;const i=n||$e.activeChain;if(i){const o=(s=$e.chains.get(i))==null?void 0:s[t];r!==o&&(r=o,e(o))}})},initialize(t,e,n){const{chainId:r,namespace:i}=Se.getActiveNetworkProps(),s=e==null?void 0:e.find(u=>u.id.toString()===(r==null?void 0:r.toString())),a=t.find(u=>(u==null?void 0:u.namespace)===i)||(t==null?void 0:t[0]),c=t.map(u=>u.namespace).filter(u=>u!==void 0),l=we.state.enableEmbedded?new Set([...c]):new Set([...(e==null?void 0:e.map(u=>u.chainNamespace))??[]]);((t==null?void 0:t.length)===0||!a)&&($e.noAdapters=!0),$e.noAdapters||($e.activeChain=a==null?void 0:a.namespace,$e.activeCaipNetwork=s,H.setChainNetworkData(a==null?void 0:a.namespace,{caipNetwork:s}),$e.activeChain&&tc.set({activeChain:a==null?void 0:a.namespace})),l.forEach(u=>{const d=e==null?void 0:e.filter(g=>g.chainNamespace===u),h=Se.getPreferredAccountTypes()||{},f={...we.state.defaultAccountTypes,...h};H.state.chains.set(u,{namespace:u,networkState:Dn({...$y,caipNetwork:d==null?void 0:d[0]}),accountState:Dn({...o_,preferredAccountType:f[u]}),caipNetworks:d??[],...n}),H.setRequestedCaipNetworks(d??[],u)})},removeAdapter(t){var e,n;if($e.activeChain===t){const r=Array.from($e.chains.entries()).find(([i])=>i!==t);if(r){const i=(n=(e=r[1])==null?void 0:e.caipNetworks)==null?void 0:n[0];i&&H.setActiveCaipNetwork(i)}}$e.chains.delete(t)},addAdapter(t,{networkControllerClient:e,connectionControllerClient:n},r){if(!t.namespace)throw new Error("ChainController:addAdapter - adapter must have a namespace");$e.chains.set(t.namespace,{namespace:t.namespace,networkState:{...$y,caipNetwork:r[0]},accountState:o_,caipNetworks:r,connectionControllerClient:n,networkControllerClient:e}),H.setRequestedCaipNetworks((r==null?void 0:r.filter(i=>i.chainNamespace===t.namespace))??[],t.namespace)},addNetwork(t){var n;const e=$e.chains.get(t.chainNamespace);if(e){const r=[...e.caipNetworks||[]];(n=e.caipNetworks)!=null&&n.find(i=>i.id===t.id)||r.push(t),$e.chains.set(t.chainNamespace,{...e,caipNetworks:r}),H.setRequestedCaipNetworks(r,t.chainNamespace),De.filterByNamespace(t.chainNamespace,!0)}},removeNetwork(t,e){var r,i,s;const n=$e.chains.get(t);if(n){const o=((r=$e.activeCaipNetwork)==null?void 0:r.id)===e,a=[...((i=n.caipNetworks)==null?void 0:i.filter(c=>c.id!==e))||[]];o&&((s=n==null?void 0:n.caipNetworks)!=null&&s[0])&&H.setActiveCaipNetwork(n.caipNetworks[0]),$e.chains.set(t,{...n,caipNetworks:a}),H.setRequestedCaipNetworks(a||[],t),a.length===0&&De.filterByNamespace(t,!1)}},setAdapterNetworkState(t,e){const n=$e.chains.get(t);n&&(n.networkState={...n.networkState||$y,...e},$e.chains.set(t,n))},setChainAccountData(t,e,n=!0){if(!t)throw new Error("Chain is required to update chain account data");const r=$e.chains.get(t);if(r){const i={...r.accountState||o_,...e};$e.chains.set(t,{...r,accountState:i}),($e.chains.size===1||$e.activeChain===t)&&(e.caipAddress&&($e.activeCaipAddress=e.caipAddress),it.replaceState(i))}},setChainNetworkData(t,e){if(!t)return;const n=$e.chains.get(t);if(n){const r={...n.networkState||$y,...e};$e.chains.set(t,{...n,networkState:r})}},setAccountProp(t,e,n,r=!0){H.setChainAccountData(n,{[t]:e},r)},setActiveNamespace(t){var r,i;$e.activeChain=t;const e=t?$e.chains.get(t):void 0,n=(r=e==null?void 0:e.networkState)==null?void 0:r.caipNetwork;n!=null&&n.id&&t&&($e.activeCaipAddress=(i=e==null?void 0:e.accountState)==null?void 0:i.caipAddress,$e.activeCaipNetwork=n,H.setChainNetworkData(t,{caipNetwork:n}),Se.setActiveCaipNetworkId(n==null?void 0:n.caipNetworkId),tc.set({activeChain:t,selectedNetworkId:n==null?void 0:n.caipNetworkId}))},setActiveCaipNetwork(t){var r,i,s;if(!t)return;$e.activeChain!==t.chainNamespace&&H.setIsSwitchingNamespace(!0);const e=$e.chains.get(t.chainNamespace);$e.activeChain=t.chainNamespace,$e.activeCaipNetwork=t,H.setChainNetworkData(t.chainNamespace,{caipNetwork:t}),(r=e==null?void 0:e.accountState)!=null&&r.address?$e.activeCaipAddress=`${t.chainNamespace}:${t.id}:${(i=e==null?void 0:e.accountState)==null?void 0:i.address}`:$e.activeCaipAddress=void 0,H.setAccountProp("caipAddress",$e.activeCaipAddress,t.chainNamespace),e&&it.replaceState(e.accountState),cn.resetSend(),tc.set({activeChain:$e.activeChain,selectedNetworkId:(s=$e.activeCaipNetwork)==null?void 0:s.caipNetworkId}),Se.setActiveCaipNetworkId(t.caipNetworkId),!H.checkIfSupportedNetwork(t.chainNamespace)&&we.state.enableNetworkSwitch&&!we.state.allowUnsupportedChain&&!Le.state.wcBasic&&H.showUnsupportedChainUI()},addCaipNetwork(t){var n;if(!t)return;const e=$e.chains.get(t.chainNamespace);e&&((n=e==null?void 0:e.caipNetworks)==null||n.push(t))},async switchActiveNamespace(t){var i;if(!t)return;const e=t!==H.state.activeChain,n=(i=H.getNetworkData(t))==null?void 0:i.caipNetwork,r=H.getCaipNetworkByNamespace(t,n==null?void 0:n.id);e&&r&&await H.switchActiveNetwork(r)},async switchActiveNetwork(t){var s;const e=H.state.activeChain;if(!e)throw new Error("ChainController:switchActiveNetwork - namespace is required");const n=H.state.chains.get(e),r=!((s=n==null?void 0:n.caipNetworks)!=null&&s.some(o=>{var a;return o.id===((a=$e.activeCaipNetwork)==null?void 0:a.id)})),i=H.getNetworkControllerClient(t.chainNamespace);if(i){try{await i.switchCaipNetwork(t),r&&Vt.close()}catch{mt.goBack()}En.sendEvent({type:"track",event:"SWITCH_NETWORK",properties:{network:t.caipNetworkId}})}},getNetworkControllerClient(t){const e=t||$e.activeChain;if(!e)throw new Error("ChainController:getNetworkControllerClient - chain is required");const n=$e.chains.get(e);if(!n)throw new Error("Chain adapter not found");if(!n.networkControllerClient)throw new Error("NetworkController client not set");return n.networkControllerClient},getConnectionControllerClient(t){const e=t||$e.activeChain;if(!e)throw new Error("Chain is required to get connection controller client");const n=$e.chains.get(e);if(!(n!=null&&n.connectionControllerClient))throw new Error("ConnectionController client not set");return n.connectionControllerClient},getNetworkProp(t,e){var r;const n=(r=$e.chains.get(e))==null?void 0:r.networkState;if(n)return n[t]},getRequestedCaipNetworks(t){const e=$e.chains.get(t),{approvedCaipNetworkIds:n=[],requestedCaipNetworks:r=[]}=(e==null?void 0:e.networkState)||{};return ot.sortRequestedNetworks(n,r).filter(o=>o==null?void 0:o.id)},getAllRequestedCaipNetworks(){const t=[];return $e.chains.forEach(e=>{if(!e.namespace)throw new Error("ChainController:getAllRequestedCaipNetworks - chainAdapter must have a namespace");const n=H.getRequestedCaipNetworks(e.namespace);t.push(...n)}),t},setRequestedCaipNetworks(t,e){H.setAdapterNetworkState(e,{requestedCaipNetworks:t});const r=H.getAllRequestedCaipNetworks().map(s=>s.chainNamespace),i=Array.from(new Set(r));De.filterByNamespaces(i)},getAllApprovedCaipNetworkIds(){const t=[];return $e.chains.forEach(e=>{if(!e.namespace)throw new Error("ChainController:getAllApprovedCaipNetworkIds - chainAdapter must have a namespace");const n=H.getApprovedCaipNetworkIds(e.namespace);t.push(...n)}),t},getActiveCaipNetwork(t){var e,n;return t?(n=(e=$e.chains.get(t))==null?void 0:e.networkState)==null?void 0:n.caipNetwork:$e.activeCaipNetwork},getActiveCaipAddress(){return $e.activeCaipAddress},getApprovedCaipNetworkIds(t){var r;const e=$e.chains.get(t);return((r=e==null?void 0:e.networkState)==null?void 0:r.approvedCaipNetworkIds)||[]},async setApprovedCaipNetworksData(t){const e=H.getNetworkControllerClient(),n=await(e==null?void 0:e.getApprovedCaipNetworksData());H.setAdapterNetworkState(t,{approvedCaipNetworkIds:n==null?void 0:n.approvedCaipNetworkIds,supportsAllNetworks:n==null?void 0:n.supportsAllNetworks})},checkIfSupportedNetwork(t,e){var i;const n=e||((i=$e.activeCaipNetwork)==null?void 0:i.caipNetworkId),r=H.getRequestedCaipNetworks(t);return r.length?r==null?void 0:r.some(s=>s.caipNetworkId===n):!0},checkIfSupportedChainId(t){if(!$e.activeChain)return!0;const e=H.getRequestedCaipNetworks($e.activeChain);return e==null?void 0:e.some(n=>n.id===t)},setSmartAccountEnabledNetworks(t,e){H.setAdapterNetworkState(e,{smartAccountEnabledNetworks:t})},checkIfSmartAccountEnabled(){var r;const t=K5.caipNetworkIdToNumber((r=$e.activeCaipNetwork)==null?void 0:r.caipNetworkId),e=$e.activeChain;if(!e||!t)return!1;const n=H.getNetworkProp("smartAccountEnabledNetworks",e);return!!(n!=null&&n.includes(Number(t)))},showUnsupportedChainUI(){Vt.open({view:"UnsupportedChain"})},checkIfNamesSupported(){const t=$e.activeCaipNetwork;return!!(t!=null&&t.chainNamespace&&pn.NAMES_SUPPORTED_CHAIN_NAMESPACES.includes(t.chainNamespace))},resetNetwork(t){H.setAdapterNetworkState(t,{approvedCaipNetworkIds:void 0,supportsAllNetworks:!0})},resetAccount(t){var i,s;const e=t;if(!e)throw new Error("Chain is required to set account prop");const n=(s=(i=H.state.chains.get(e))==null?void 0:i.accountState)==null?void 0:s.preferredAccountType,r=we.state.defaultAccountTypes[e];$e.activeCaipAddress=void 0,H.setChainAccountData(e,{smartAccountDeployed:!1,currentTab:0,caipAddress:void 0,address:void 0,balance:void 0,balanceSymbol:void 0,profileName:void 0,profileImage:void 0,addressExplorerUrl:void 0,tokenBalance:[],connectedWalletInfo:void 0,preferredAccountType:r||n,socialProvider:void 0,socialWindow:void 0,farcasterUrl:void 0,user:void 0,status:"disconnected"}),De.removeConnectorId(e)},setIsSwitchingNamespace(t){$e.isSwitchingNamespace=t},getFirstCaipNetworkSupportsAuthConnector(){var n,r;const t=[];let e;if($e.chains.forEach(i=>{ve.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(s=>s===i.namespace)&&i.namespace&&t.push(i.namespace)}),t.length>0){const i=t[0];return e=i?(r=(n=$e.chains.get(i))==null?void 0:n.caipNetworks)==null?void 0:r[0]:void 0,e}},getAccountData(t){var n;const e=t||$e.activeChain;if(e)return(n=H.state.chains.get(e))==null?void 0:n.accountState},getNetworkData(t){var n;const e=t||$e.activeChain;if(e)return(n=H.state.chains.get(e))==null?void 0:n.networkState},getCaipNetworkByNamespace(t,e){var i,s,o;if(!t)return;const n=H.state.chains.get(t),r=(i=n==null?void 0:n.caipNetworks)==null?void 0:i.find(a=>a.id===e);return r||((s=n==null?void 0:n.networkState)==null?void 0:s.caipNetwork)||((o=n==null?void 0:n.caipNetworks)==null?void 0:o[0])},getRequestedCaipNetworkIds(){const t=De.state.filterByNamespace;return(t?[$e.chains.get(t)]:Array.from($e.chains.values())).flatMap(n=>(n==null?void 0:n.caipNetworks)||[]).map(n=>n.caipNetworkId)},getCaipNetworks(t){return t?H.getRequestedCaipNetworks(t):H.getAllRequestedCaipNetworks()},setLastConnectedSIWECaipNetwork(t){$e.lastConnectedSIWECaipNetwork=t},getLastConnectedSIWECaipNetwork(){return $e.lastConnectedSIWECaipNetwork}},H=Ns(jpe),Vpe={purchaseCurrencies:[{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},{id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"Ether",symbol:"ETH",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]}],paymentCurrencies:[{id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},{id:"EUR",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]}]},rF=ot.getBlockchainApiUrl(),Ui=Dn({clientId:null,api:new I0({baseUrl:rF,clientId:null}),supportedChains:{http:[],ws:[]}}),dt={state:Ui,async get(t){const{st:e,sv:n}=dt.getSdkProperties(),r=we.state.projectId,i={...t.params||{},st:e,sv:n,projectId:r};return Ui.api.get({...t,params:i})},getSdkProperties(){const{sdkType:t,sdkVersion:e}=we.state;return{st:t||"unknown",sv:e||"unknown"}},async isNetworkSupported(t){if(!t)return!1;try{Ui.supportedChains.http.length||await dt.getSupportedNetworks()}catch{return!1}return Ui.supportedChains.http.includes(t)},async getSupportedNetworks(){try{const t=await dt.get({path:"v1/supported-chains"});return Ui.supportedChains=t,t}catch{return Ui.supportedChains}},async fetchIdentity({address:t,caipNetworkId:e}){if(!await dt.isNetworkSupported(e))return{avatar:"",name:""};const r=Se.getIdentityFromCacheForAddress(t);if(r)return r;const i=await dt.get({path:`/v1/identity/${t}`,params:{sender:H.state.activeCaipAddress?ot.getPlainAddress(H.state.activeCaipAddress):void 0}});return Se.updateIdentityCache({address:t,identity:i,timestamp:Date.now()}),i},async fetchTransactions({account:t,cursor:e,signal:n,cache:r,chainId:i}){var c;if(!await dt.isNetworkSupported((c=H.state.activeCaipNetwork)==null?void 0:c.caipNetworkId))return{data:[],next:void 0};const o=Se.getTransactionsCacheForAddress({address:t,chainId:i});if(o)return o;const a=await dt.get({path:`/v1/account/${t}/history`,params:{cursor:e,chainId:i},signal:n,cache:r});return Se.updateTransactionsCache({address:t,chainId:i,timestamp:Date.now(),transactions:a}),a},async fetchSwapQuote({amount:t,userAddress:e,from:n,to:r,gasPrice:i}){var o;return await dt.isNetworkSupported((o=H.state.activeCaipNetwork)==null?void 0:o.caipNetworkId)?dt.get({path:"/v1/convert/quotes",headers:{"Content-Type":"application/json"},params:{amount:t,userAddress:e,from:n,to:r,gasPrice:i}}):{quotes:[]}},async fetchSwapTokens({chainId:t}){var n;return await dt.isNetworkSupported((n=H.state.activeCaipNetwork)==null?void 0:n.caipNetworkId)?dt.get({path:"/v1/convert/tokens",params:{chainId:t}}):{tokens:[]}},async fetchTokenPrice({addresses:t}){var i;if(!await dt.isNetworkSupported((i=H.state.activeCaipNetwork)==null?void 0:i.caipNetworkId))return{fungibles:[]};const n=Se.getTokenPriceCacheForAddresses(t);if(n)return n;const r=await Ui.api.post({path:"/v1/fungible/price",body:{currency:"usd",addresses:t,projectId:we.state.projectId},headers:{"Content-Type":"application/json"}});return Se.updateTokenPriceCache({addresses:t,timestamp:Date.now(),tokenPrice:r}),r},async fetchSwapAllowance({tokenAddress:t,userAddress:e}){var r;return await dt.isNetworkSupported((r=H.state.activeCaipNetwork)==null?void 0:r.caipNetworkId)?dt.get({path:"/v1/convert/allowance",params:{tokenAddress:t,userAddress:e},headers:{"Content-Type":"application/json"}}):{allowance:"0"}},async fetchGasPrice({chainId:t}){var i;const{st:e,sv:n}=dt.getSdkProperties();if(!await dt.isNetworkSupported((i=H.state.activeCaipNetwork)==null?void 0:i.caipNetworkId))throw new Error("Network not supported for Gas Price");return dt.get({path:"/v1/convert/gas-price",headers:{"Content-Type":"application/json"},params:{chainId:t,st:e,sv:n}})},async generateSwapCalldata({amount:t,from:e,to:n,userAddress:r,disableEstimate:i}){var o;if(!await dt.isNetworkSupported((o=H.state.activeCaipNetwork)==null?void 0:o.caipNetworkId))throw new Error("Network not supported for Swaps");return Ui.api.post({path:"/v1/convert/build-transaction",headers:{"Content-Type":"application/json"},body:{amount:t,eip155:{slippage:pn.CONVERT_SLIPPAGE_TOLERANCE},projectId:we.state.projectId,from:e,to:n,userAddress:r,disableEstimate:i}})},async generateApproveCalldata({from:t,to:e,userAddress:n}){var o;const{st:r,sv:i}=dt.getSdkProperties();if(!await dt.isNetworkSupported((o=H.state.activeCaipNetwork)==null?void 0:o.caipNetworkId))throw new Error("Network not supported for Swaps");return dt.get({path:"/v1/convert/build-approve",headers:{"Content-Type":"application/json"},params:{userAddress:n,from:t,to:e,st:r,sv:i}})},async getBalance(t,e,n){var l;const{st:r,sv:i}=dt.getSdkProperties();if(!await dt.isNetworkSupported((l=H.state.activeCaipNetwork)==null?void 0:l.caipNetworkId))return pa.showError("Token Balance Unavailable"),{balances:[]};const o=`${e}:${t}`,a=Se.getBalanceCacheForCaipAddress(o);if(a)return a;const c=await dt.get({path:`/v1/account/${t}/balance`,params:{currency:"usd",chainId:e,forceUpdate:n,st:r,sv:i}});return Se.updateBalanceCache({caipAddress:o,balance:c,timestamp:Date.now()}),c},async lookupEnsName(t){var n;return await dt.isNetworkSupported((n=H.state.activeCaipNetwork)==null?void 0:n.caipNetworkId)?dt.get({path:`/v1/profile/account/${t}`,params:{apiVersion:"2"}}):{addresses:{},attributes:[]}},async reverseLookupEnsName({address:t}){var n;return await dt.isNetworkSupported((n=H.state.activeCaipNetwork)==null?void 0:n.caipNetworkId)?dt.get({path:`/v1/profile/reverse/${t}`,params:{sender:it.state.address,apiVersion:"2"}}):[]},async getEnsNameSuggestions(t){var n;return await dt.isNetworkSupported((n=H.state.activeCaipNetwork)==null?void 0:n.caipNetworkId)?dt.get({path:`/v1/profile/suggestions/${t}`,params:{zone:"reown.id"}}):{suggestions:[]}},async registerEnsName({coinType:t,address:e,message:n,signature:r}){var s;return await dt.isNetworkSupported((s=H.state.activeCaipNetwork)==null?void 0:s.caipNetworkId)?Ui.api.post({path:"/v1/profile/account",body:{coin_type:t,address:e,message:n,signature:r},headers:{"Content-Type":"application/json"}}):{success:!1}},async generateOnRampURL({destinationWallets:t,partnerUserId:e,defaultNetwork:n,purchaseAmount:r,paymentAmount:i}){var a;return await dt.isNetworkSupported((a=H.state.activeCaipNetwork)==null?void 0:a.caipNetworkId)?(await Ui.api.post({path:"/v1/generators/onrampurl",params:{projectId:we.state.projectId},body:{destinationWallets:t,defaultNetwork:n,partnerUserId:e,defaultExperience:"buy",presetCryptoAmount:r,presetFiatAmount:i}})).url:""},async getOnrampOptions(){var e;if(!await dt.isNetworkSupported((e=H.state.activeCaipNetwork)==null?void 0:e.caipNetworkId))return{paymentCurrencies:[],purchaseCurrencies:[]};try{return await dt.get({path:"/v1/onramp/options"})}catch{return Vpe}},async getOnrampQuote({purchaseCurrency:t,paymentCurrency:e,amount:n,network:r}){var i;try{return await dt.isNetworkSupported((i=H.state.activeCaipNetwork)==null?void 0:i.caipNetworkId)?await Ui.api.post({path:"/v1/onramp/quote",params:{projectId:we.state.projectId},body:{purchaseCurrency:t,paymentCurrency:e,amount:n,network:r}}):null}catch{return{networkFee:{amount:n,currency:e.id},paymentSubtotal:{amount:n,currency:e.id},paymentTotal:{amount:n,currency:e.id},purchaseAmount:{amount:n,currency:e.id},quoteId:"mocked-quote-id"}}},async getSmartSessions(t){var n;return await dt.isNetworkSupported((n=H.state.activeCaipNetwork)==null?void 0:n.caipNetworkId)?dt.get({path:`/v1/sessions/${t}`}):[]},async revokeSmartSession(t,e,n){var i;return await dt.isNetworkSupported((i=H.state.activeCaipNetwork)==null?void 0:i.caipNetworkId)?Ui.api.post({path:`/v1/sessions/${t}/revoke`,params:{projectId:we.state.projectId},body:{pci:e,signature:n}}):{success:!1}},setClientId(t){Ui.clientId=t,Ui.api=new I0({baseUrl:rF,clientId:t})}};function Wpe(t,{strict:e=!0}={}){return!t||typeof t!="string"?!1:e?/^0x[0-9a-fA-F]*$/.test(t):t.startsWith("0x")}function oR(t){return Wpe(t,{strict:!1})?Math.ceil((t.length-2)/2):t.length}const iF="2.37.12";let jp={getDocsUrl:({docsBaseUrl:t,docsPath:e="",docsSlug:n})=>e?`${t??"https://viem.sh"}${e}${n?`#${n}`:""}`:void 0,version:`viem@${iF}`};class Ts extends Error{constructor(e,n={}){var a;const r=(()=>{var c;return n.cause instanceof Ts?n.cause.details:(c=n.cause)!=null&&c.message?n.cause.message:n.details})(),i=n.cause instanceof Ts&&n.cause.docsPath||n.docsPath,s=(a=jp.getDocsUrl)==null?void 0:a.call(jp,{...n,docsPath:i}),o=[e||"An error occurred.","",...n.metaMessages?[...n.metaMessages,""]:[],...s?[`Docs: ${s}`]:[],...r?[`Details: ${r}`]:[],...jp.version?[`Version: ${jp.version}`]:[]].join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseError"}),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=e,this.version=iF}walk(e){return sF(this,e)}}function sF(t,e){return e!=null&&e(t)?t:t&&typeof t=="object"&&"cause"in t&&t.cause!==void 0?sF(t.cause,e):e?null:t}class oF extends Ts{constructor({size:e,targetSize:n,type:r}){super(`${r.charAt(0).toUpperCase()}${r.slice(1).toLowerCase()} size (${e}) exceeds padding size (${n}).`,{name:"SizeExceedsPaddingSizeError"})}}function UT(t,{dir:e,size:n=32}={}){return typeof t=="string"?Gpe(t,{dir:e,size:n}):qpe(t,{dir:e,size:n})}function Gpe(t,{dir:e,size:n=32}={}){if(n===null)return t;const r=t.replace("0x","");if(r.length>n*2)throw new oF({size:Math.ceil(r.length/2),targetSize:n,type:"hex"});return`0x${r[e==="right"?"padEnd":"padStart"](n*2,"0")}`}function qpe(t,{dir:e,size:n=32}={}){if(n===null)return t;if(t.length>n)throw new oF({size:t.length,targetSize:n,type:"bytes"});const r=new Uint8Array(n);for(let i=0;ie)throw new Xpe({givenSize:oR(t),maxSize:e})}const Ype=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function aR(t,e={}){return typeof t=="number"||typeof t=="bigint"?Jpe(t,e):typeof t=="string"?lF(t,e):typeof t=="boolean"?Zpe(t,e):cF(t,e)}function Zpe(t,e={}){const n=`0x${Number(t)}`;return typeof e.size=="number"?(aF(n,{size:e.size}),UT(n,{size:e.size})):n}function cF(t,e={}){let n="";for(let i=0;is||ithis.maxSize){const r=this.keys().next().value;r&&this.delete(r)}return this}}const Ku=(t,e,n)=>JSON.stringify(t,(r,i)=>typeof i=="bigint"?i.toString():i,n);function tge(t,e){let n=t.toString();const r=n.startsWith("-");r&&(n=n.slice(1)),n=n.padStart(e,"0");let[i,s]=[n.slice(0,n.length-e),n.slice(n.length-e)];return s=s.replace(/(0+)$/,""),`${r?"-":""}${i||"0"}${s?`.${s}`:""}`}const LT=t=>t;class kg extends Ts{constructor({body:e,cause:n,details:r,headers:i,status:s,url:o}){super("HTTP request failed.",{cause:n,details:r,metaMessages:[s&&`Status: ${s}`,`URL: ${LT(o)}`,e&&`Request body: ${Ku(e)}`].filter(Boolean),name:"HttpRequestError"}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"headers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=i,this.status=s,this.url=o}}class uF extends Ts{constructor({body:e,error:n,url:r}){super("RPC Request failed.",{cause:n,details:n.message,metaMessages:[`URL: ${LT(r)}`,`Request body: ${Ku(e)}`],name:"RpcRequestError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=n.code,this.data=n.data}}class cR extends Ts{constructor({body:e,url:n}){super("The request took too long to respond.",{details:"The request timed out.",metaMessages:[`URL: ${LT(n)}`,`Request body: ${Ku(e)}`],name:"TimeoutError"})}}const nge=-1;class rs extends Ts{constructor(e,{code:n,docsPath:r,metaMessages:i,name:s,shortMessage:o}){super(o,{cause:e,docsPath:r,metaMessages:i||(e==null?void 0:e.metaMessages),name:s||"RpcError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=s||e.name,this.code=e instanceof uF?e.code:n??nge}}class Ps extends rs{constructor(e,n){super(e,n),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=n.data}}class Mm extends rs{constructor(e){super(e,{code:Mm.code,name:"ParseRpcError",shortMessage:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."})}}Object.defineProperty(Mm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});class Nm extends rs{constructor(e){super(e,{code:Nm.code,name:"InvalidRequestRpcError",shortMessage:"JSON is not a valid request object."})}}Object.defineProperty(Nm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});class Pm extends rs{constructor(e,{method:n}={}){super(e,{code:Pm.code,name:"MethodNotFoundRpcError",shortMessage:`The method${n?` "${n}"`:""} does not exist / is not available.`})}}Object.defineProperty(Pm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});class Dm extends rs{constructor(e){super(e,{code:Dm.code,name:"InvalidParamsRpcError",shortMessage:["Invalid parameters were provided to the RPC method.","Double check you have provided the correct parameters."].join(` +`)})}}Object.defineProperty(Dm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});class Of extends rs{constructor(e){super(e,{code:Of.code,name:"InternalRpcError",shortMessage:"An internal error was received."})}}Object.defineProperty(Of,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});class Rm extends rs{constructor(e){super(e,{code:Rm.code,name:"InvalidInputRpcError",shortMessage:["Missing or invalid parameters.","Double check you have provided the correct parameters."].join(` +`)})}}Object.defineProperty(Rm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3});class Om extends rs{constructor(e){super(e,{code:Om.code,name:"ResourceNotFoundRpcError",shortMessage:"Requested resource not found."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ResourceNotFoundRpcError"})}}Object.defineProperty(Om,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001});class Um extends rs{constructor(e){super(e,{code:Um.code,name:"ResourceUnavailableRpcError",shortMessage:"Requested resource not available."})}}Object.defineProperty(Um,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002});class Uf extends rs{constructor(e){super(e,{code:Uf.code,name:"TransactionRejectedRpcError",shortMessage:"Transaction creation failed."})}}Object.defineProperty(Uf,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003});class Bu extends rs{constructor(e,{method:n}={}){super(e,{code:Bu.code,name:"MethodNotSupportedRpcError",shortMessage:`Method${n?` "${n}"`:""} is not supported.`})}}Object.defineProperty(Bu,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004});class Lf extends rs{constructor(e){super(e,{code:Lf.code,name:"LimitExceededRpcError",shortMessage:"Request exceeds defined limit."})}}Object.defineProperty(Lf,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005});class Lm extends rs{constructor(e){super(e,{code:Lm.code,name:"JsonRpcVersionUnsupportedError",shortMessage:"Version of JSON-RPC protocol is not supported."})}}Object.defineProperty(Lm,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006});class Xu extends Ps{constructor(e){super(e,{code:Xu.code,name:"UserRejectedRequestError",shortMessage:"User rejected the request."})}}Object.defineProperty(Xu,"code",{enumerable:!0,configurable:!0,writable:!0,value:4001});class km extends Ps{constructor(e){super(e,{code:km.code,name:"UnauthorizedProviderError",shortMessage:"The requested method and/or account has not been authorized by the user."})}}Object.defineProperty(km,"code",{enumerable:!0,configurable:!0,writable:!0,value:4100});class $m extends Ps{constructor(e,{method:n}={}){super(e,{code:$m.code,name:"UnsupportedProviderMethodError",shortMessage:`The Provider does not support the requested method${n?` " ${n}"`:""}.`})}}Object.defineProperty($m,"code",{enumerable:!0,configurable:!0,writable:!0,value:4200});class Bm extends Ps{constructor(e){super(e,{code:Bm.code,name:"ProviderDisconnectedError",shortMessage:"The Provider is disconnected from all chains."})}}Object.defineProperty(Bm,"code",{enumerable:!0,configurable:!0,writable:!0,value:4900});class Fm extends Ps{constructor(e){super(e,{code:Fm.code,name:"ChainDisconnectedError",shortMessage:"The Provider is not connected to the requested chain."})}}Object.defineProperty(Fm,"code",{enumerable:!0,configurable:!0,writable:!0,value:4901});class zm extends Ps{constructor(e){super(e,{code:zm.code,name:"SwitchChainError",shortMessage:"An error occurred when attempting to switch chain."})}}Object.defineProperty(zm,"code",{enumerable:!0,configurable:!0,writable:!0,value:4902});class Hm extends Ps{constructor(e){super(e,{code:Hm.code,name:"UnsupportedNonOptionalCapabilityError",shortMessage:"This Wallet does not support a capability that was not marked as optional."})}}Object.defineProperty(Hm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5700});class jm extends Ps{constructor(e){super(e,{code:jm.code,name:"UnsupportedChainIdError",shortMessage:"This Wallet does not support the requested chain ID."})}}Object.defineProperty(jm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5710});class Vm extends Ps{constructor(e){super(e,{code:Vm.code,name:"DuplicateIdError",shortMessage:"There is already a bundle submitted with this ID."})}}Object.defineProperty(Vm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5720});class Wm extends Ps{constructor(e){super(e,{code:Wm.code,name:"UnknownBundleIdError",shortMessage:"This bundle id is unknown / has not been submitted"})}}Object.defineProperty(Wm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5730});class Gm extends Ps{constructor(e){super(e,{code:Gm.code,name:"BundleTooLargeError",shortMessage:"The call bundle is too large for the Wallet to process."})}}Object.defineProperty(Gm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5740});class qm extends Ps{constructor(e){super(e,{code:qm.code,name:"AtomicReadyWalletRejectedUpgradeError",shortMessage:"The Wallet can support atomicity after an upgrade, but the user rejected the upgrade."})}}Object.defineProperty(qm,"code",{enumerable:!0,configurable:!0,writable:!0,value:5750});class Km extends Ps{constructor(e){super(e,{code:Km.code,name:"AtomicityNotSupportedError",shortMessage:"The wallet does not support atomic execution but the request requires it."})}}Object.defineProperty(Km,"code",{enumerable:!0,configurable:!0,writable:!0,value:5760});class rge extends rs{constructor(e){super(e,{name:"UnknownRpcError",shortMessage:"An unknown RPC error occurred."})}}class kT extends Ts{constructor({cause:e,message:n}={}){var i;const r=(i=n==null?void 0:n.replace("execution reverted: ",""))==null?void 0:i.replace("execution reverted","");super(`Execution reverted ${r?`with reason: ${r}`:"for an unknown reason"}.`,{cause:e,name:"ExecutionRevertedError"})}}Object.defineProperty(kT,"code",{enumerable:!0,configurable:!0,writable:!0,value:3});Object.defineProperty(kT,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});function ige(){let t=()=>{},e=()=>{};return{promise:new Promise((r,i)=>{t=r,e=i}),resolve:t,reject:e}}const a_=new Map;function sge({fn:t,id:e,shouldSplitBatch:n,wait:r=0,sort:i}){const s=async()=>{const u=c();o();const d=u.map(({args:h})=>h);d.length!==0&&t(d).then(h=>{i&&Array.isArray(h)&&h.sort(i);for(let f=0;f{for(let f=0;fa_.delete(e),a=()=>c().map(({args:u})=>u),c=()=>a_.get(e)||[],l=u=>a_.set(e,[...c(),u]);return{flush:o,async schedule(u){const{promise:d,resolve:h,reject:f}=ige();return(n==null?void 0:n([...a(),u]))&&s(),c().length>0?(l({args:u,resolve:h,reject:f}),d):(l({args:u,resolve:h,reject:f}),setTimeout(s,r),d)}}}async function dF(t){return new Promise(e=>setTimeout(e,t))}function oge(t,{delay:e=100,retryCount:n=2,shouldRetry:r=()=>!0}={}){return new Promise((i,s)=>{const o=async({count:a=0}={})=>{const c=async({error:l})=>{const u=typeof e=="function"?e({count:a,error:l}):e;u&&await dF(u),o({count:a+1})};try{const l=await t();i(l)}catch(l){if(ayA*2){Fy="",By=0;for(let e=0;ezy.delete(n));return zy.set(n,r),r}function lge(t,e={}){return async(n,r={})=>{var d;const{dedupe:i=!1,methods:s,retryDelay:o=150,retryCount:a=3,uid:c}={...e,...r},{method:l}=n;if((d=s==null?void 0:s.exclude)!=null&&d.includes(l))throw new Bu(new Error("method not supported"),{method:l});if(s!=null&&s.include&&!s.include.includes(l))throw new Bu(new Error("method not supported"),{method:l});const u=i?lF(`${c}.${Ku(n)}`):void 0;return cge(()=>oge(async()=>{try{return await t(n)}catch(h){const f=h;switch(f.code){case Mm.code:throw new Mm(f);case Nm.code:throw new Nm(f);case Pm.code:throw new Pm(f,{method:n.method});case Dm.code:throw new Dm(f);case Of.code:throw new Of(f);case Rm.code:throw new Rm(f);case Om.code:throw new Om(f);case Um.code:throw new Um(f);case Uf.code:throw new Uf(f);case Bu.code:throw new Bu(f,{method:n.method});case Lf.code:throw new Lf(f);case Lm.code:throw new Lm(f);case Xu.code:throw new Xu(f);case km.code:throw new km(f);case $m.code:throw new $m(f);case Bm.code:throw new Bm(f);case Fm.code:throw new Fm(f);case zm.code:throw new zm(f);case Hm.code:throw new Hm(f);case jm.code:throw new jm(f);case Vm.code:throw new Vm(f);case Wm.code:throw new Wm(f);case Gm.code:throw new Gm(f);case qm.code:throw new qm(f);case Km.code:throw new Km(f);case 5e3:throw new Xu(f);default:throw h instanceof Ts?h:new rge(f)}}},{delay:({count:h,error:f})=>{var g;if(f&&f instanceof kg){const m=(g=f==null?void 0:f.headers)==null?void 0:g.get("Retry-After");if(m!=null&&m.match(/\d/))return Number.parseInt(m,10)*1e3}return~~(1<uge(h)}),{enabled:i,id:u})}}function uge(t){return"code"in t&&typeof t.code=="number"?t.code===-1||t.code===Lf.code||t.code===Of.code:t instanceof kg&&t.status?t.status===403||t.status===408||t.status===413||t.status===429||t.status===500||t.status===502||t.status===503||t.status===504:!0}function dge(t,{errorInstance:e=new Error("timed out"),timeout:n,signal:r}){return new Promise((i,s)=>{(async()=>{let o;try{const a=new AbortController;n>0&&(o=setTimeout(()=>{r&&a.abort()},n)),i(await t({signal:(a==null?void 0:a.signal)||null}))}catch(a){(a==null?void 0:a.name)==="AbortError"&&s(e),s(a)}finally{clearTimeout(o)}})()})}function hge(){return{current:0,take(){return this.current++},reset(){this.current=0}}}const lR=hge();function fge(t,e={}){return{async request(n){var h;const{body:r,fetchFn:i=e.fetchFn??fetch,onRequest:s=e.onRequest,onResponse:o=e.onResponse,timeout:a=e.timeout??1e4}=n,c={...e.fetchOptions??{},...n.fetchOptions??{}},{headers:l,method:u,signal:d}=c;try{const f=await dge(async({signal:m})=>{const y={...c,body:Array.isArray(r)?Ku(r.map(b=>({jsonrpc:"2.0",id:b.id??lR.take(),...b}))):Ku({jsonrpc:"2.0",id:r.id??lR.take(),...r}),headers:{"Content-Type":"application/json",...l},method:u||"POST",signal:d||(a>0?m:null)},p=new Request(t,y),v=await(s==null?void 0:s(p,y))??{...y,url:t};return await i(v.url??t,v)},{errorInstance:new cR({body:r,url:t}),timeout:a,signal:!0});o&&await o(f);let g;if((h=f.headers.get("Content-Type"))!=null&&h.startsWith("application/json"))g=await f.json();else{g=await f.text();try{g=JSON.parse(g||"{}")}catch(m){if(f.ok)throw m;g={error:g}}}if(!f.ok)throw new kg({body:r,details:Ku(g.error)||f.statusText,headers:f.headers,status:f.status,url:t});return g}catch(f){throw f instanceof kg||f instanceof cR?f:new kg({body:r,cause:f,url:t})}}}}function hF({key:t,methods:e,name:n,request:r,retryCount:i=3,retryDelay:s=150,timeout:o,type:a},c){const l=age();return{config:{key:t,methods:e,name:n,request:r,retryCount:i,retryDelay:s,timeout:o,type:a},request:lge(r,{methods:e,retryCount:i,retryDelay:s,uid:l}),value:c}}function uR(t,e={}){const{key:n="fallback",name:r="Fallback",rank:i=!1,shouldThrow:s=pge,retryCount:o,retryDelay:a}=e;return({chain:c,pollingInterval:l=4e3,timeout:u,...d})=>{let h=t,f=()=>{};const g=hF({key:n,name:r,async request({method:m,params:y}){let p;const v=async(w=0)=>{const b=h[w]({...d,chain:c,retryCount:0,timeout:u});try{const S=await b.request({method:m,params:y});return f({method:m,params:y,response:S,transport:b,status:"success"}),S}catch(S){if(f({error:S,method:m,params:y,transport:b,status:"error"}),s(S)||w===h.length-1||(p??(p=h.slice(w+1).some(x=>{const{include:T,exclude:N}=x({chain:c}).config.methods||{};return T?T.includes(m):N?!N.includes(m):!0})),!p))throw S;return v(w+1)}};return v()},retryCount:o,retryDelay:a,type:"fallback"},{onResponse:m=>f=m,transports:h.map(m=>m({chain:c,retryCount:0}))});if(i){const m=typeof i=="object"?i:{};gge({chain:c,interval:m.interval??l,onTransports:y=>h=y,ping:m.ping,sampleCount:m.sampleCount,timeout:m.timeout,transports:h,weights:m.weights})}return g}}function pge(t){return!!("code"in t&&typeof t.code=="number"&&(t.code===Uf.code||t.code===Xu.code||kT.nodeMessage.test(t.message)||t.code===5e3))}function gge({chain:t,interval:e=4e3,onTransports:n,ping:r,sampleCount:i=10,timeout:s=1e3,transports:o,weights:a={}}){const{stability:c=.7,latency:l=.3}=a,u=[],d=async()=>{const h=await Promise.all(o.map(async m=>{const y=m({chain:t,retryCount:0,timeout:s}),p=Date.now();let v,w;try{await(r?r({transport:y}):y.request({method:"net_listening"})),w=1}catch{w=0}finally{v=Date.now()}return{latency:v-p,success:w}}));u.push(h),u.length>i&&u.shift();const f=Math.max(...u.map(m=>Math.max(...m.map(({latency:y})=>y)))),g=o.map((m,y)=>{const p=u.map(x=>x[y].latency),w=1-p.reduce((x,T)=>x+T,0)/p.length/f,b=u.map(x=>x[y].success),S=b.reduce((x,T)=>x+T,0)/b.length;return S===0?[0,y]:[l*w+c*S,y]}).sort((m,y)=>y[0]-m[0]);n(g.map(([,m])=>o[m])),await dF(e),d()};d()}class mge extends Ts{constructor(){super("No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",{docsPath:"/docs/clients/intro",name:"UrlRequiredError"})}}function Hy(t,e={}){const{batch:n,fetchFn:r,fetchOptions:i,key:s="http",methods:o,name:a="HTTP JSON-RPC",onFetchRequest:c,onFetchResponse:l,retryDelay:u,raw:d}=e;return({chain:h,retryCount:f,timeout:g})=>{const{batchSize:m=1e3,wait:y=0}=typeof n=="object"?n:{},p=e.retryCount??f,v=g??e.timeout??1e4,w=t||(h==null?void 0:h.rpcUrls.default.http[0]);if(!w)throw new mge;const b=fge(w,{fetchFn:r,fetchOptions:i,onRequest:c,onResponse:l,timeout:v});return hF({key:s,methods:o,name:a,async request({method:S,params:x}){const T={method:S,params:x},{schedule:N}=sge({id:w,wait:y,shouldSplitBatch(L){return L.length>m},fn:L=>b.request({body:L}),sort:(L,$)=>L.id-$.id}),_=async L=>n?N(L):[await b.request({body:L})],[{error:E,result:A}]=await _(T);if(d)return{error:E,result:A};if(E)throw new uF({body:T,error:E,url:w});return A},retryCount:p,retryDelay:u,timeout:v,type:"http"},{fetchOptions:i,url:w})}}const c_={createBalance(t,e){const n={name:t.metadata.name||"",symbol:t.metadata.symbol||"",decimals:t.metadata.decimals||0,value:t.metadata.value||0,price:t.metadata.price||0,iconUrl:t.metadata.iconUrl||""};return{name:n.name,symbol:n.symbol,chainId:e,address:t.address==="native"?void 0:this.convertAddressToCAIP10Address(t.address,e),value:n.value,price:n.price,quantity:{decimals:n.decimals.toString(),numeric:this.convertHexToBalance({hex:t.balance,decimals:n.decimals})},iconUrl:n.iconUrl}},convertHexToBalance({hex:t,decimals:e}){return tge(BigInt(t),e)},convertAddressToCAIP10Address(t,e){return`${e}:${t}`},createCAIP2ChainId(t,e){return`${e}:${parseInt(t,16)}`},getChainIdHexFromCAIP2ChainId(t){const e=t.split(":");if(e.length<2||!e[1])return"0x0";const n=e[1],r=parseInt(n,10);return isNaN(r)?"0x0":`0x${r.toString(16)}`},isWalletGetAssetsResponse(t){return typeof t!="object"||t===null?!1:Object.values(t).every(e=>Array.isArray(e)&&e.every(n=>this.isValidAsset(n)))},isValidAsset(t){return typeof t=="object"&&t!==null&&typeof t.address=="string"&&typeof t.balance=="string"&&(t.type==="ERC20"||t.type==="NATIVE")&&typeof t.metadata=="object"&&t.metadata!==null&&typeof t.metadata.name=="string"&&typeof t.metadata.symbol=="string"&&typeof t.metadata.decimals=="number"&&typeof t.metadata.price=="number"&&typeof t.metadata.iconUrl=="string"}},$T={async getMyTokensWithBalance(t){const e=it.state.address,n=H.state.activeCaipNetwork,r=De.getConnectorId("eip155")===ve.CONNECTOR_ID.AUTH;if(!e||!n)return[];const i=`${n.caipNetworkId}:${e}`,s=Se.getBalanceCacheForCaipAddress(i);if(s)return s.balances;if(n.chainNamespace===ve.CHAIN.EVM&&r){const a=await this.getEIP155Balances(e,n);if(a)return this.filterLowQualityTokens(a)}const o=await dt.getBalance(e,n.caipNetworkId,t);return this.filterLowQualityTokens(o.balances)},async getEIP155Balances(t,e){var n,r;try{const i=c_.getChainIdHexFromCAIP2ChainId(e.caipNetworkId),s=await Le.getCapabilities(t);if(!((r=(n=s==null?void 0:s[i])==null?void 0:n.assetDiscovery)!=null&&r.supported))return null;const o=await Le.walletGetAssets({account:t,chainFilter:[i]});if(!c_.isWalletGetAssetsResponse(o))return null;const c=(o[i]||[]).map(l=>c_.createBalance(l,e.caipNetworkId));return Se.updateBalanceCache({caipAddress:`${e.caipNetworkId}:${t}`,balance:{balances:c},timestamp:Date.now()}),c}catch{return null}},filterLowQualityTokens(t){return t.filter(e=>e.quantity.decimals!=="0")}},ea=Dn({currentTab:0,tokenBalance:[],smartAccountDeployed:!1,addressLabels:new Map}),yge={state:ea,replaceState(t){t&&Object.assign(ea,hd(t))},subscribe(t){return H.subscribeChainProp("accountState",e=>{if(e)return t(e)})},subscribeKey(t,e,n){let r;return H.subscribeChainProp("accountState",i=>{if(i){const s=i[t];r!==s&&(r=s,e(s))}},n)},setStatus(t,e){H.setAccountProp("status",t,e)},getCaipAddress(t){var e,n;if(t)return(n=(e=H.state.chains.get(t))==null?void 0:e.accountState)==null?void 0:n.caipAddress},setCaipAddress(t,e){const n=t?ot.getPlainAddress(t):void 0;e===H.state.activeChain&&(H.state.activeCaipAddress=t),H.setAccountProp("caipAddress",t,e),H.setAccountProp("address",n,e)},setBalance(t,e,n){H.setAccountProp("balance",t,n),H.setAccountProp("balanceSymbol",e,n)},setProfileName(t,e){H.setAccountProp("profileName",t,e)},setProfileImage(t,e){H.setAccountProp("profileImage",t,e)},setUser(t,e){H.setAccountProp("user",t,e)},setAddressExplorerUrl(t,e){H.setAccountProp("addressExplorerUrl",t,e)},setSmartAccountDeployed(t,e){H.setAccountProp("smartAccountDeployed",t,e)},setCurrentTab(t){H.setAccountProp("currentTab",t,H.state.activeChain)},setTokenBalance(t,e){t&&H.setAccountProp("tokenBalance",t,e)},setShouldUpdateToAddress(t,e){H.setAccountProp("shouldUpdateToAddress",t,e)},addAddressLabel(t,e,n){var i,s;if(!n)return;const r=((s=(i=H.state.chains.get(n))==null?void 0:i.accountState)==null?void 0:s.addressLabels)||new Map;r.set(t,e),H.setAccountProp("addressLabels",r,n)},removeAddressLabel(t,e){var r,i;if(!e)return;const n=((i=(r=H.state.chains.get(e))==null?void 0:r.accountState)==null?void 0:i.addressLabels)||new Map;n.delete(t),H.setAccountProp("addressLabels",n,e)},setConnectedWalletInfo(t,e){H.setAccountProp("connectedWalletInfo",t,e,!1)},setPreferredAccountType(t,e){H.setAccountProp("preferredAccountType",t,e)},setSocialProvider(t,e){t&&H.setAccountProp("socialProvider",t,e)},setSocialWindow(t,e){H.setAccountProp("socialWindow",t?hd(t):void 0,e)},setFarcasterUrl(t,e){H.setAccountProp("farcasterUrl",t,e)},async fetchTokenBalance(t){var s,o;ea.balanceLoading=!0;const e=(s=H.state.activeCaipNetwork)==null?void 0:s.caipNetworkId,n=(o=H.state.activeCaipNetwork)==null?void 0:o.chainNamespace,r=H.state.activeCaipAddress,i=r?ot.getPlainAddress(r):void 0;if(ea.lastRetry&&!ot.isAllowedRetry(ea.lastRetry,30*pn.ONE_SEC_MS))return ea.balanceLoading=!1,[];try{if(i&&e&&n){const a=await $T.getMyTokensWithBalance();return it.setTokenBalance(a,n),ea.lastRetry=void 0,ea.balanceLoading=!1,a}}catch(a){ea.lastRetry=Date.now(),t==null||t(a),pa.showError("Token Balance Unavailable")}finally{ea.balanceLoading=!1}return[]},resetAccount(t){H.resetAccount(t)}},it=Ns(yge),wge={onSwitchNetwork({network:t,ignoreSwitchConfirmation:e=!1}){const n=H.state.activeCaipNetwork,r=mt.state.data;if(t.id===(n==null?void 0:n.id))return;const s=it.getCaipAddress(H.state.activeChain),o=t.chainNamespace!==H.state.activeChain,a=it.getCaipAddress(t.chainNamespace),l=De.getConnectorId(H.state.activeChain)===ve.CONNECTOR_ID.AUTH,u=ve.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(d=>d===t.chainNamespace);e||l&&u?mt.push("SwitchNetwork",{...r,network:t}):s&&o&&!a?mt.push("SwitchActiveChain",{switchToChain:t.chainNamespace,navigateTo:"Connect",navigateWithReplace:!0,network:t}):mt.push("SwitchNetwork",{...r,network:t})}},Li=Dn({loading:!1,loadingNamespaceMap:new Map,open:!1,shake:!1,namespace:void 0}),vge={state:Li,subscribe(t){return Vr(Li,()=>t(Li))},subscribeKey(t,e){return hi(Li,t,e)},async open(t){var s,o;const e=t==null?void 0:t.namespace,n=H.state.activeChain,r=e&&e!==n,i=(s=H.getAccountData(t==null?void 0:t.namespace))==null?void 0:s.caipAddress;if(Le.state.wcBasic?ut.prefetch({fetchNetworkImages:!1,fetchConnectorImages:!1}):await ut.prefetch(),De.setFilterByNamespace(t==null?void 0:t.namespace),Vt.setLoading(!0,e),e&&r){const a=((o=H.getNetworkData(e))==null?void 0:o.caipNetwork)||H.getRequestedCaipNetworks(e)[0];a&&wge.onSwitchNetwork({network:a,ignoreSwitchConfirmation:!0})}else{const a=H.state.noAdapters;we.state.manualWCControl||a&&!i?ot.isMobile()?mt.reset("AllWallets"):mt.reset("ConnectingWalletConnectBasic"):t!=null&&t.view?mt.reset(t.view,t.data):i?mt.reset("Account"):mt.reset("Connect")}Li.open=!0,tc.set({open:!0}),En.sendEvent({type:"track",event:"MODAL_OPEN",properties:{connected:!!i}})},close(){const t=we.state.enableEmbedded,e=!!H.state.activeCaipAddress;Li.open&&En.sendEvent({type:"track",event:"MODAL_CLOSE",properties:{connected:e}}),Li.open=!1,mt.reset("Connect"),Vt.clearLoading(),t?e?mt.replace("Account"):mt.push("Connect"):tc.set({open:!1}),Le.resetUri()},setLoading(t,e){e&&Li.loadingNamespaceMap.set(e,t),Li.loading=t,tc.set({loading:t})},clearLoading(){Li.loadingNamespaceMap.clear(),Li.loading=!1,tc.set({loading:!1})},shake(){Li.shake||(Li.shake=!0,setTimeout(()=>{Li.shake=!1},500))}},Vt=Ns(vge),$g={id:"2b92315d-eab7-5bef-84fa-089a131333f5",name:"USD Coin",symbol:"USDC",networks:[{name:"ethereum-mainnet",display_name:"Ethereum",chain_id:"1",contract_address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},{name:"polygon-mainnet",display_name:"Polygon",chain_id:"137",contract_address:"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"}]},wA={id:"USD",payment_method_limits:[{id:"card",min:"10.00",max:"7500.00"},{id:"ach_bank_account",min:"10.00",max:"25000.00"}]},bge={providers:Q5,selectedProvider:null,error:null,purchaseCurrency:$g,paymentCurrency:wA,purchaseCurrencies:[$g],paymentCurrencies:[],quotesLoading:!1},Gt=Dn(bge),Ege={state:Gt,subscribe(t){return Vr(Gt,()=>t(Gt))},subscribeKey(t,e){return hi(Gt,t,e)},setSelectedProvider(t){var e,n;if(t&&t.name==="meld"){const r=H.state.activeChain,i=r===ve.CHAIN.SOLANA?"SOL":"USDC",s=r?((n=(e=H.state.chains.get(r))==null?void 0:e.accountState)==null?void 0:n.address)??"":"",o=new URL(t.url);o.searchParams.append("publicKey",ype),o.searchParams.append("destinationCurrencyCode",i),o.searchParams.append("walletAddress",s),o.searchParams.append("externalCustomerId",we.state.projectId),Gt.selectedProvider={...t,url:o.toString()}}else Gt.selectedProvider=t},setOnrampProviders(t){if(Array.isArray(t)&&t.every(e=>typeof e=="string")){const e=t,n=Q5.filter(r=>e.includes(r.name));Gt.providers=n}else Gt.providers=[]},setPurchaseCurrency(t){Gt.purchaseCurrency=t},setPaymentCurrency(t){Gt.paymentCurrency=t},setPurchaseAmount(t){vA.state.purchaseAmount=t},setPaymentAmount(t){vA.state.paymentAmount=t},async getAvailableCurrencies(){const t=await dt.getOnrampOptions();Gt.purchaseCurrencies=t.purchaseCurrencies,Gt.paymentCurrencies=t.paymentCurrencies,Gt.paymentCurrency=t.paymentCurrencies[0]||wA,Gt.purchaseCurrency=t.purchaseCurrencies[0]||$g,await ut.fetchCurrencyImages(t.paymentCurrencies.map(e=>e.id)),await ut.fetchTokenImages(t.purchaseCurrencies.map(e=>e.symbol))},async getQuote(){var t,e;Gt.quotesLoading=!0;try{const n=await dt.getOnrampQuote({purchaseCurrency:Gt.purchaseCurrency,paymentCurrency:Gt.paymentCurrency,amount:((t=Gt.paymentAmount)==null?void 0:t.toString())||"0",network:(e=Gt.purchaseCurrency)==null?void 0:e.symbol});return Gt.quotesLoading=!1,Gt.purchaseAmount=Number(n==null?void 0:n.purchaseAmount.amount),n}catch(n){return Gt.error=n.message,Gt.quotesLoading=!1,null}finally{Gt.quotesLoading=!1}},resetState(){Gt.selectedProvider=null,Gt.error=null,Gt.purchaseCurrency=$g,Gt.paymentCurrency=wA,Gt.purchaseCurrencies=[$g],Gt.paymentCurrencies=[],Gt.paymentAmount=void 0,Gt.purchaseAmount=void 0,Gt.quotesLoading=!1}},vA=Ns(Ege),dR=2147483648,_ge={convertEVMChainIdToCoinType(t){if(t>=dR)throw new Error("Invalid chainId");return(dR|t)>>>0}},Ls=Dn({suggestions:[],loading:!1}),Sge={state:Ls,subscribe(t){return Vr(Ls,()=>t(Ls))},subscribeKey(t,e){return hi(Ls,t,e)},async resolveName(t){var e,n;try{return await dt.lookupEnsName(t)}catch(r){const i=r;throw new Error(((n=(e=i==null?void 0:i.reasons)==null?void 0:e[0])==null?void 0:n.description)||"Error resolving name")}},async isNameRegistered(t){try{return await dt.lookupEnsName(t),!0}catch{return!1}},async getSuggestions(t){try{Ls.loading=!0,Ls.suggestions=[];const e=await dt.getEnsNameSuggestions(t);return Ls.suggestions=e.suggestions.map(n=>({...n,name:n.name}))||[],Ls.suggestions}catch(e){const n=Bg.parseEnsApiError(e,"Error fetching name suggestions");throw new Error(n)}finally{Ls.loading=!1}},async getNamesForAddress(t){try{if(!H.state.activeCaipNetwork)return[];const n=Se.getEnsFromCacheForAddress(t);if(n)return n;const r=await dt.reverseLookupEnsName({address:t});return Se.updateEnsCache({address:t,ens:r,timestamp:Date.now()}),r}catch(e){const n=Bg.parseEnsApiError(e,"Error fetching names for address");throw new Error(n)}},async registerName(t){const e=H.state.activeCaipNetwork,n=it.state.address,r=De.getAuthConnector();if(!e)throw new Error("Network not found");if(!n||!r)throw new Error("Address or auth connector not found");Ls.loading=!0;try{const i=JSON.stringify({name:t,attributes:{},timestamp:Math.floor(Date.now()/1e3)});mt.pushTransactionStack({onCancel(){mt.replace("RegisterAccountName")}});const s=await Le.signMessage(i);Ls.loading=!1;const o=e.id;if(!o)throw new Error("Network not found");const a=_ge.convertEVMChainIdToCoinType(Number(o));await dt.registerEnsName({coinType:a,address:n,signature:s,message:i}),it.setProfileName(t,e.chainNamespace),mt.replace("RegisterAccountNameSuccess")}catch(i){const s=Bg.parseEnsApiError(i,`Error registering name ${t}`);throw mt.replace("RegisterAccountName"),new Error(s)}finally{Ls.loading=!1}},validateName(t){return/^[a-zA-Z0-9-]{4,}$/u.test(t)},parseEnsApiError(t,e){var r,i;const n=t;return((i=(r=n==null?void 0:n.reasons)==null?void 0:r[0])==null?void 0:i.description)||e}},Bg=Ns(Sge);let au=null;const ca={getSIWX(){return we.state.siwx},async initializeIfEnabled(t=H.getActiveCaipAddress()){var s,o,a;const e=we.state.siwx;if(!(e&&t))return;const[n,r,i]=t.split(":");if(H.checkIfSupportedNetwork(n,`${n}:${r}`))try{if((s=we.state.remoteFeatures)!=null&&s.emailCapture){const l=(o=H.getAccountData(n))==null?void 0:o.user;await Vt.open({view:"DataCapture",data:{email:(l==null?void 0:l.email)??void 0}});return}if(au&&await au,(await e.getSessions(`${n}:${r}`,i)).length)return;await Vt.open({view:"SIWXSignMessage"})}catch(c){console.error("SIWXUtil:initializeIfEnabled",c),En.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:this.getSIWXEventProperties()}),await((a=Le._getClient())==null?void 0:a.disconnect().catch(console.error)),mt.reset("Connect"),pa.showError("A problem occurred while trying initialize authentication")}},async requestSignMessage(){const t=we.state.siwx,e=ot.getPlainAddress(H.getActiveCaipAddress()),n=sR(),r=Le._getClient();if(!t)throw new Error("SIWX is not enabled");if(!e)throw new Error("No ActiveCaipAddress found");if(!n)throw new Error("No ActiveCaipNetwork or client found");if(!r)throw new Error("No ConnectionController client found");try{const i=await t.createMessage({chainId:n.caipNetworkId,accountAddress:e}),s=i.toString();De.getConnectorId(n.chainNamespace)===ve.CONNECTOR_ID.AUTH&&mt.pushTransactionStack({});const a=await r.signMessage(s);await t.addSession({data:i,message:s,signature:a}),H.setLastConnectedSIWECaipNetwork(n),Vt.close(),En.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:this.getSIWXEventProperties()})}catch(i){const s=this.getSIWXEventProperties();(!Vt.state.open||mt.state.view==="ApproveTransaction")&&await Vt.open({view:"SIWXSignMessage"}),pa.showError("Error signing message"),En.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:s}),console.error("SWIXUtil:requestSignMessage",i)}},async cancelSignMessage(){var t;try{const e=this.getSIWX();if((t=e==null?void 0:e.getRequired)==null?void 0:t.call(e)){const r=H.getLastConnectedSIWECaipNetwork();if(r){const i=await(e==null?void 0:e.getSessions(r==null?void 0:r.caipNetworkId,ot.getPlainAddress(H.getActiveCaipAddress())||""));i&&i.length>0?await H.switchActiveNetwork(r):await Le.disconnect()}else await Le.disconnect()}else Vt.close();Vt.close(),En.sendEvent({event:"CLICK_CANCEL_SIWX",type:"track",properties:this.getSIWXEventProperties()})}catch(e){console.error("SIWXUtil:cancelSignMessage",e)}},async getAllSessions(){const t=this.getSIWX(),e=H.getAllRequestedCaipNetworks(),n=[];return await Promise.all(e.map(async r=>{const i=await(t==null?void 0:t.getSessions(r.caipNetworkId,ot.getPlainAddress(H.getActiveCaipAddress())||""));i&&n.push(...i)})),n},async getSessions(t){const e=we.state.siwx;let n=t==null?void 0:t.address;if(!n){const i=H.getActiveCaipAddress();n=ot.getPlainAddress(i)}let r=t==null?void 0:t.caipNetworkId;if(!r){const i=H.getActiveCaipNetwork();r=i==null?void 0:i.caipNetworkId}return e&&n&&r?e.getSessions(r,n):[]},async isSIWXCloseDisabled(){var e;const t=this.getSIWX();if(t){const n=mt.state.view==="ApproveTransaction",r=mt.state.view==="SIWXSignMessage";if(n||r)return((e=t.getRequired)==null?void 0:e.call(t))&&(await this.getSessions()).length===0}return!1},async authConnectorAuthenticate({authConnector:t,chainId:e,socialUri:n,preferredAccountType:r,chainNamespace:i}){var u;const s=ca.getSIWX();if(!s||!i.includes(ve.CHAIN.EVM)||(u=we.state.remoteFeatures)!=null&&u.emailCapture){const d=await t.connect({chainId:e,socialUri:n,preferredAccountType:r});return{address:d.address,chainId:d.chainId,accounts:d.accounts}}const o=`${i}:${e}`,a=await s.createMessage({chainId:o,accountAddress:"<>"}),c={accountAddress:a.accountAddress,chainId:a.chainId,domain:a.domain,uri:a.uri,version:a.version,nonce:a.nonce,notBefore:a.notBefore,statement:a.statement,resources:a.resources,requestId:a.requestId,issuedAt:a.issuedAt,expirationTime:a.expirationTime,serializedMessage:a.toString()},l=await t.connect({chainId:e,socialUri:n,siwxMessage:c,preferredAccountType:r});return c.accountAddress=l.address,c.serializedMessage=l.message||"",l.signature&&l.message&&await ca.addEmbeddedWalletSession(c,l.message,l.signature),{address:l.address,chainId:l.chainId,accounts:l.accounts}},async addEmbeddedWalletSession(t,e,n){if(au)return au;const r=ca.getSIWX();return r?(au=r.addSession({data:t,message:e,signature:n}).finally(()=>{au=null}),au):Promise.resolve()},async universalProviderAuthenticate({universalProvider:t,chains:e,methods:n}){var a,c,l;const r=ca.getSIWX(),i=new Set(e.map(u=>u.split(":")[0]));if(!r||i.size!==1||!i.has("eip155"))return!1;const s=await r.createMessage({chainId:((a=sR())==null?void 0:a.caipNetworkId)||"",accountAddress:""}),o=await t.authenticate({nonce:s.nonce,domain:s.domain,uri:s.uri,exp:s.expirationTime,iat:s.issuedAt,nbf:s.notBefore,requestId:s.requestId,version:s.version,resources:s.resources,statement:s.statement,chainId:s.chainId,methods:n,chains:[s.chainId,...e.filter(u=>u!==s.chainId)]});if(pa.showLoading("Authenticating...",{autoClose:!1}),it.setConnectedWalletInfo({...o.session.peer.metadata,name:o.session.peer.metadata.name,icon:(c=o.session.peer.metadata.icons)==null?void 0:c[0],type:"WALLET_CONNECT"},Array.from(i)[0]),(l=o==null?void 0:o.auths)!=null&&l.length){const u=o.auths.map(d=>{const h=t.client.formatAuthMessage({request:d.p,iss:d.p.iss});return{data:{...d.p,accountAddress:d.p.iss.split(":").slice(-1).join(""),chainId:d.p.iss.split(":").slice(2,4).join(":"),uri:d.p.aud,version:d.p.version||s.version,expirationTime:d.p.exp,issuedAt:d.p.iat,notBefore:d.p.nbf},message:h,signature:d.s.s,cacao:d}});try{await r.setSessions(u),En.sendEvent({type:"track",event:"SIWX_AUTH_SUCCESS",properties:ca.getSIWXEventProperties()})}catch(d){throw console.error("SIWX:universalProviderAuth - failed to set sessions",d),En.sendEvent({type:"track",event:"SIWX_AUTH_ERROR",properties:ca.getSIWXEventProperties()}),await t.disconnect().catch(console.error),d}finally{pa.hide()}}return!0},getSIWXEventProperties(){var e;const t=H.state.activeChain;if(!t)throw new Error("SIWXUtil:getSIWXEventProperties - namespace is required");return{network:((e=H.state.activeCaipNetwork)==null?void 0:e.caipNetworkId)||"",isSmartAccount:Aa(t)===qu.ACCOUNT_TYPES.SMART_ACCOUNT}},async clearSessions(){const t=this.getSIWX();t&&await t.setSessions([])}},vu={EIP155:ve.CHAIN.EVM,CONNECTOR_TYPE_WALLET_CONNECT:"WALLET_CONNECT",CONNECTOR_TYPE_INJECTED:"INJECTED",CONNECTOR_TYPE_ANNOUNCED:"ANNOUNCED"},Xm={NetworkImageIds:{1:"ba0ba0cd-17c6-4806-ad93-f9d174f17900",42161:"3bff954d-5cb0-47a0-9a23-d20192e74600",43114:"30c46e53-e989-45fb-4549-be3bd4eb3b00",56:"93564157-2e8e-4ce7-81df-b264dbee9b00",250:"06b26297-fe0c-4733-5d6b-ffa5498aac00",10:"ab9c186a-c52f-464b-2906-ca59d760a400",137:"41d04d42-da3b-4453-8506-668cc0727900",5e3:"e86fae9b-b770-4eea-e520-150e12c81100",295:"6a97d510-cac8-4e58-c7ce-e8681b044c00",11155111:"e909ea0a-f92a-4512-c8fc-748044ea6800",84532:"a18a7ecd-e307-4360-4746-283182228e00",1301:"4eeea7ef-0014-4649-5d1d-07271a80f600",130:"2257980a-3463-48c6-cbac-a42d2a956e00",10143:"0a728e83-bacb-46db-7844-948f05434900",100:"02b53f6a-e3d4-479e-1cb4-21178987d100",9001:"f926ff41-260d-4028-635e-91913fc28e00",324:"b310f07f-4ef7-49f3-7073-2a0a39685800",314:"5a73b3dd-af74-424e-cae0-0de859ee9400",4689:"34e68754-e536-40da-c153-6ef2e7188a00",1088:"3897a66d-40b9-4833-162f-a2c90531c900",1284:"161038da-44ae-4ec7-1208-0ea569454b00",1285:"f1d73bb6-5450-4e18-38f7-fb6484264a00",7777777:"845c60df-d429-4991-e687-91ae45791600",42220:"ab781bbc-ccc6-418d-d32d-789b15da1f00",8453:"7289c336-3981-4081-c5f4-efc26ac64a00",1313161554:"3ff73439-a619-4894-9262-4470c773a100",2020:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",2021:"b8101fc0-9c19-4b6f-ec65-f6dfff106e00",80094:"e329c2c9-59b0-4a02-83e4-212ff3779900",2741:"fc2427d1-5af9-4a9c-8da5-6f94627cd900","5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"a1b58899-f671-4276-6a5e-56ca5bd59700","4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z":"a1b58899-f671-4276-6a5e-56ca5bd59700",EtWTRABZaYq6iMfeYKouRu166VU2xqa1:"a1b58899-f671-4276-6a5e-56ca5bd59700","000000000019d6689c085ae165831e93":"0b4838db-0161-4ffe-022d-532bf03dba00","000000000933ea01ad0ee984209779ba":"39354064-d79b-420b-065d-f980c4b78200"},ConnectorImageIds:{[ve.CONNECTOR_ID.COINBASE]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[ve.CONNECTOR_ID.COINBASE_SDK]:"0c2840c3-5b04-4c44-9661-fbd4b49e1800",[ve.CONNECTOR_ID.SAFE]:"461db637-8616-43ce-035a-d89b8a1d5800",[ve.CONNECTOR_ID.LEDGER]:"54a1aa77-d202-4f8d-0fb2-5d2bb6db0300",[ve.CONNECTOR_ID.WALLET_CONNECT]:"ef1a1fcf-7fe8-4d69-bd6d-fda1345b4400",[ve.CONNECTOR_ID.INJECTED]:"07ba87ed-43aa-4adf-4540-9e6a2b9cae00"},ConnectorNamesMap:{[ve.CONNECTOR_ID.INJECTED]:"Browser Wallet",[ve.CONNECTOR_ID.WALLET_CONNECT]:"WalletConnect",[ve.CONNECTOR_ID.COINBASE]:"Coinbase",[ve.CONNECTOR_ID.COINBASE_SDK]:"Coinbase",[ve.CONNECTOR_ID.LEDGER]:"Ledger",[ve.CONNECTOR_ID.SAFE]:"Safe"}},ws={getCaipTokens(t){if(!t)return;const e={};return Object.entries(t).forEach(([n,r])=>{e[`${vu.EIP155}:${n}`]=r}),e},isLowerCaseMatch(t,e){return(t==null?void 0:t.toLowerCase())===(e==null?void 0:e.toLowerCase())},getActiveNamespaceConnectedToAuth(){const t=H.state.activeChain;return ve.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(e=>De.getConnectorId(e)===ve.CONNECTOR_ID.AUTH&&e===t)},withRetry({conditionFn:t,intervalMs:e,maxRetries:n}){let r=0;return new Promise(i=>{async function s(){return r+=1,await t()?i(!0):r>=n?i(!1):(setTimeout(s,e),null)}s()})}},xge=new AbortController,$s={EmbeddedWalletAbortController:xge,UniversalProviderErrors:{UNAUTHORIZED_DOMAIN_NOT_ALLOWED:{message:"Unauthorized: origin not allowed",alertErrorKey:"ORIGIN_NOT_ALLOWED"},JWT_VALIDATION_ERROR:{message:"JWT validation error: JWT Token is not yet valid",alertErrorKey:"JWT_TOKEN_NOT_VALID"},INVALID_KEY:{message:"Unauthorized: invalid key",alertErrorKey:"INVALID_PROJECT_ID"}},ALERT_ERRORS:{SWITCH_NETWORK_NOT_FOUND:{code:"APKT001",displayMessage:"Network Not Found",debugMessage:"The specified network is not recognized. Please ensure it is included in the `networks` array of your `createAppKit` configuration."},ORIGIN_NOT_ALLOWED:{code:"APKT002",displayMessage:"Invalid App Configuration",debugMessage:()=>`The origin ${Wh()?window.origin:"unknown"} is not in your allow list. Please update your allowed domains at https://dashboard.reown.com.`},IFRAME_LOAD_FAILED:{code:"APKT003",displayMessage:"Network Error: Wallet Load Failed",debugMessage:()=>"Failed to load the embedded wallet. This may be due to network issues or server downtime. Please check your network connection and try again shortly. Contact support if the issue persists."},IFRAME_REQUEST_TIMEOUT:{code:"APKT004",displayMessage:"Wallet Request Timeout",debugMessage:()=>"The request to the embedded wallet timed out. Please check your network connection and try again shortly. Contact support if the issue persists."},UNVERIFIED_DOMAIN:{code:"APKT005",displayMessage:"Unverified Domain",debugMessage:()=>"Embedded wallet load failed. Ensure your domain is verified in https://dashboard.reown.com."},JWT_TOKEN_NOT_VALID:{code:"APKT006",displayMessage:"Session Expired",debugMessage:"Your session is invalid or expired. Please check your system’s date and time settings, then reconnect."},INVALID_PROJECT_ID:{code:"APKT007",displayMessage:"Invalid Project ID",debugMessage:"The specified project ID is invalid. Please visit https://dashboard.reown.com to obtain a valid project ID."},PROJECT_ID_NOT_CONFIGURED:{code:"APKT008",displayMessage:"Project ID Missing",debugMessage:"No project ID is configured. You can create and configure a project ID at https://dashboard.reown.com."},SERVER_ERROR_APP_CONFIGURATION:{code:"APKT009",displayMessage:"Server Error",debugMessage:t=>`Unable to fetch App Configuration. ${t}. Please check your network connection and try again shortly. Contact support if the issue persists.`},RATE_LIMITED_APP_CONFIGURATION:{code:"APKT010",displayMessage:"Rate Limited",debugMessage:"You have been rate limited while retrieving App Configuration. Please wait a few minutes and try again. Contact support if the issue persists."}},ALERT_WARNINGS:{LOCAL_CONFIGURATION_IGNORED:{debugMessage:t=>`[Reown Config Notice] ${t}`}}},Age={createLogger(t,e="error"){const n=w0({level:e}),{logger:r}=Q$({opts:n});return r.error=(...i)=>{for(const s of i)if(s instanceof Error){t(s,...i);return}t(void 0,...i)},r}},Cge="rpc.walletconnect.org";function hR(t,e){const n=new URL("https://rpc.walletconnect.org/v1/");return n.searchParams.set("chainId",t),n.searchParams.set("projectId",e),n.toString()}const l_=["near:mainnet","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","eip155:1101","eip155:56","eip155:42161","eip155:7777777","eip155:59144","eip155:324","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","eip155:5000","solana:4sgjmw1sunhzsxgspuhpqldx6wiyjntz","eip155:80084","eip155:5003","eip155:100","eip155:8453","eip155:42220","eip155:1313161555","eip155:17000","eip155:1","eip155:300","eip155:1313161554","eip155:1329","eip155:84532","eip155:421614","eip155:11155111","eip155:8217","eip155:43114","solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z","eip155:999999999","eip155:11155420","eip155:80002","eip155:97","eip155:43113","eip155:137","eip155:10","eip155:1301","bip122:000000000019d6689c085ae165831e93","bip122:000000000933ea01ad0ee984209779ba"],xh={extendRpcUrlWithProjectId(t,e){let n=!1;try{n=new URL(t).host===Cge}catch{n=!1}if(n){const r=new URL(t);return r.searchParams.has("projectId")||r.searchParams.set("projectId",e),r.toString()}return t},isCaipNetwork(t){return"chainNamespace"in t&&"caipNetworkId"in t},getChainNamespace(t){return this.isCaipNetwork(t)?t.chainNamespace:ve.CHAIN.EVM},getCaipNetworkId(t){return this.isCaipNetwork(t)?t.caipNetworkId:`${ve.CHAIN.EVM}:${t.id}`},getDefaultRpcUrl(t,e,n){var i,s,o;const r=(o=(s=(i=t.rpcUrls)==null?void 0:i.default)==null?void 0:s.http)==null?void 0:o[0];return l_.includes(e)?hR(e,n):r||""},extendCaipNetwork(t,{customNetworkImageUrls:e,projectId:n,customRpcUrls:r}){var h,f,g,m,y,p,v;const i=this.getChainNamespace(t),s=this.getCaipNetworkId(t),o=(g=(f=(h=t.rpcUrls)==null?void 0:h.default)==null?void 0:f.http)==null?void 0:g[0],a=this.getDefaultRpcUrl(t,s,n),c=((p=(y=(m=t==null?void 0:t.rpcUrls)==null?void 0:m.chainDefault)==null?void 0:y.http)==null?void 0:p[0])||o,l=((v=r==null?void 0:r[s])==null?void 0:v.map(w=>w.url))||[],u=[...l,...a?[a]:[]],d=[...l];return c&&!d.includes(c)&&d.push(c),{...t,chainNamespace:i,caipNetworkId:s,assets:{imageId:Xm.NetworkImageIds[t.id],imageUrl:e==null?void 0:e[t.id]},rpcUrls:{...t.rpcUrls,default:{http:u},chainDefault:{http:d}}}},extendCaipNetworks(t,{customNetworkImageUrls:e,projectId:n,customRpcUrls:r}){return t.map(i=>xh.extendCaipNetwork(i,{customNetworkImageUrls:e,customRpcUrls:r,projectId:n}))},getViemTransport(t,e,n){var i,s,o;const r=[];return n==null||n.forEach(a=>{r.push(Hy(a.url,a.config))}),l_.includes(t.caipNetworkId)&&r.push(Hy(hR(t.caipNetworkId,e),{fetchOptions:{headers:{"Content-Type":"text/plain"}}})),(o=(s=(i=t==null?void 0:t.rpcUrls)==null?void 0:i.default)==null?void 0:s.http)==null||o.forEach(a=>{r.push(Hy(a))}),uR(r)},extendWagmiTransports(t,e,n){if(l_.includes(t.caipNetworkId)){const r=this.getDefaultRpcUrl(t,t.caipNetworkId,e);return uR([n,Hy(r)])}return n},getUnsupportedNetwork(t){return{id:t.split(":")[1],caipNetworkId:t,name:ve.UNSUPPORTED_NETWORK_NAME,chainNamespace:t.split(":")[0],nativeCurrency:{name:"",decimals:0,symbol:""},rpcUrls:{default:{http:[]}}}},getCaipNetworkFromStorage(t){var c;const e=Se.getActiveCaipNetworkId(),n=H.getAllRequestedCaipNetworks(),r=Array.from(((c=H.state.chains)==null?void 0:c.keys())||[]),i=e==null?void 0:e.split(":")[0],s=i?r.includes(i):!1,o=n==null?void 0:n.find(l=>l.caipNetworkId===e);return s&&!o&&e?this.getUnsupportedNetwork(e):o||t||(n==null?void 0:n[0])}},lb={eip155:void 0,solana:void 0,polkadot:void 0,bip122:void 0,cosmos:void 0,sui:void 0,stacks:void 0},ki=Dn({providers:{...lb},providerIds:{...lb}}),Qn={state:ki,subscribeKey(t,e){return hi(ki,t,e)},subscribe(t){return Vr(ki,()=>{t(ki)})},subscribeProviders(t){return Vr(ki.providers,()=>t(ki.providers))},setProvider(t,e){t&&e&&(ki.providers[t]=hd(e))},getProvider(t){if(t)return ki.providers[t]},setProviderId(t,e){e&&(ki.providerIds[t]=e)},getProviderId(t){if(t)return ki.providerIds[t]},reset(){ki.providers={...lb},ki.providerIds={...lb}},resetChain(t){ki.providers[t]=void 0,ki.providerIds[t]=void 0}},Tge={VIEW_DIRECTION:{Next:"next",Prev:"prev"},DEFAULT_CONNECT_METHOD_ORDER:["email","social","wallet"],ANIMATION_DURATIONS:{HeaderText:120,ModalHeight:150,ViewTransition:150}},bA={filterOutDuplicatesByRDNS(t){const e=we.state.enableEIP6963?De.state.connectors:[],n=Se.getRecentWallets(),r=e.map(a=>{var c;return(c=a.info)==null?void 0:c.rdns}).filter(Boolean),i=n.map(a=>a.rdns).filter(Boolean),s=r.concat(i);if(s.includes("io.metamask.mobile")&&ot.isMobile()){const a=s.indexOf("io.metamask.mobile");s[a]="io.metamask"}return t.filter(a=>!(a!=null&&a.rdns&&s.includes(String(a.rdns))||!(a!=null&&a.rdns)&&e.some(l=>l.name===a.name)))},filterOutDuplicatesByIds(t){const e=De.state.connectors.filter(a=>a.type==="ANNOUNCED"||a.type==="INJECTED"),n=Se.getRecentWallets(),r=e.map(a=>a.explorerId),i=n.map(a=>a.id),s=r.concat(i);return t.filter(a=>!s.includes(a==null?void 0:a.id))},filterOutDuplicateWallets(t){const e=this.filterOutDuplicatesByRDNS(t);return this.filterOutDuplicatesByIds(e)},markWalletsAsInstalled(t){const{connectors:e}=De.state,{featuredWalletIds:n}=we.state,r=e.filter(o=>o.type==="ANNOUNCED").reduce((o,a)=>{var c;return(c=a.info)!=null&&c.rdns&&(o[a.info.rdns]=!0),o},{});return t.map(o=>({...o,installed:!!o.rdns&&!!r[o.rdns??""]})).sort((o,a)=>{const c=Number(a.installed)-Number(o.installed);if(c!==0)return c;if(n!=null&&n.length){const l=n.indexOf(o.id),u=n.indexOf(a.id);if(l!==-1&&u!==-1)return l-u;if(l!==-1)return-1;if(u!==-1)return 1}return 0})},getConnectOrderMethod(t,e){var c;const n=(t==null?void 0:t.connectMethodsOrder)||((c=we.state.features)==null?void 0:c.connectMethodsOrder),r=e||De.state.connectors;if(n)return n;const{injected:i,announced:s}=Gw.getConnectorsByType(r,ut.state.recommended,ut.state.featured),o=i.filter(Gw.showConnector),a=s.filter(Gw.showConnector);return o.length||a.length?["wallet","email","social"]:Tge.DEFAULT_CONNECT_METHOD_ORDER},isExcluded(t){const e=!!t.rdns&&ut.state.excludedWallets.some(r=>r.rdns===t.rdns),n=!!t.name&&ut.state.excludedWallets.some(r=>ws.isLowerCaseMatch(r.name,t.name));return e||n},markWalletsWithDisplayIndex(t){return t.map((e,n)=>({...e,display_index:n}))}},Gw={getConnectorsByType(t,e,n){const{customWallets:r}=we.state,i=Se.getRecentWallets(),s=bA.filterOutDuplicateWallets(e),o=bA.filterOutDuplicateWallets(n),a=t.filter(d=>d.type==="MULTI_CHAIN"),c=t.filter(d=>d.type==="ANNOUNCED"),l=t.filter(d=>d.type==="INJECTED"),u=t.filter(d=>d.type==="EXTERNAL");return{custom:r,recent:i,external:u,multiChain:a,announced:c,injected:l,recommended:s,featured:o}},showConnector(t){var i;const e=(i=t.info)==null?void 0:i.rdns,n=!!e&&ut.state.excludedWallets.some(s=>!!s.rdns&&s.rdns===e),r=!!t.name&&ut.state.excludedWallets.some(s=>ws.isLowerCaseMatch(s.name,t.name));return!(t.type==="INJECTED"&&(t.name==="Browser Wallet"&&(!ot.isMobile()||ot.isMobile()&&!e&&!Le.checkInstalled())||n||r)||(t.type==="ANNOUNCED"||t.type==="EXTERNAL")&&(n||r))},getIsConnectedWithWC(){return Array.from(H.state.chains.values()).some(n=>De.getConnectorId(n.namespace)===ve.CONNECTOR_ID.WALLET_CONNECT)},getConnectorTypeOrder({recommended:t,featured:e,custom:n,recent:r,announced:i,injected:s,multiChain:o,external:a,overriddenConnectors:c=(l=>(l=we.state.features)==null?void 0:l.connectorTypeOrder)()??[]}){const h=[{type:"walletConnect",isEnabled:we.state.enableWalletConnect},{type:"recent",isEnabled:r.length>0},{type:"injected",isEnabled:[...s,...i,...o].length>0},{type:"featured",isEnabled:e.length>0},{type:"custom",isEnabled:n&&n.length>0},{type:"external",isEnabled:a.length>0},{type:"recommended",isEnabled:t.length>0}].filter(y=>y.isEnabled),f=new Set(h.map(y=>y.type)),g=c.filter(y=>f.has(y)).map(y=>({type:y,isEnabled:!0})),m=h.filter(({type:y})=>!g.some(({type:v})=>v===y));return Array.from(new Set([...g,...m].map(({type:y})=>y)))},getAuthName({email:t,socialUsername:e,socialProvider:n}){return e?n&&n==="discord"&&e.endsWith("0")?e.slice(0,-1):e:t.length>30?`${t.slice(0,-3)}...`:t},async fetchProviderData(t){var e,n;try{if(t.name==="Browser Wallet"&&!ot.isMobile())return{accounts:[],chainId:void 0};if(t.id===ve.CONNECTOR_ID.AUTH)return{accounts:[],chainId:void 0};const[r,i]=await Promise.all([(e=t.provider)==null?void 0:e.request({method:"eth_accounts"}),(n=t.provider)==null?void 0:n.request({method:"eth_chainId"}).then(s=>Number(s))]);return{accounts:r,chainId:i}}catch(r){return console.warn(`Failed to fetch provider data for ${t.name}`,r),{accounts:[],chainId:void 0}}}};/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const qw=globalThis,BT=qw.ShadowRoot&&(qw.ShadyCSS===void 0||qw.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,FT=Symbol(),fR=new WeakMap;let fF=class{constructor(e,n,r){if(this._$cssResult$=!0,r!==FT)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=n}get styleSheet(){let e=this.o;const n=this.t;if(BT&&e===void 0){const r=n!==void 0&&n.length===1;r&&(e=fR.get(n)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&fR.set(n,e))}return e}toString(){return this.cssText}};const Bs=t=>new fF(typeof t=="string"?t:t+"",void 0,FT),sf=(t,...e)=>{const n=t.length===1?t[0]:e.reduce((r,i,s)=>r+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1],t[0]);return new fF(n,t,FT)},Ige=(t,e)=>{if(BT)t.adoptedStyleSheets=e.map(n=>n instanceof CSSStyleSheet?n:n.styleSheet);else for(const n of e){const r=document.createElement("style"),i=qw.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=n.cssText,t.appendChild(r)}},pR=BT?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let n="";for(const r of e.cssRules)n+=r.cssText;return Bs(n)})(t):t;/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const{is:Mge,defineProperty:Nge,getOwnPropertyDescriptor:Pge,getOwnPropertyNames:Dge,getOwnPropertySymbols:Rge,getPrototypeOf:Oge}=Object,Il=globalThis,gR=Il.trustedTypes,Uge=gR?gR.emptyScript:"",u_=Il.reactiveElementPolyfillSupport,Fg=(t,e)=>t,EA={toAttribute(t,e){switch(e){case Boolean:t=t?Uge:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=t!==null;break;case Number:n=t===null?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch{n=null}}return n}},pF=(t,e)=>!Mge(t,e),mR={attribute:!0,type:String,converter:EA,reflect:!1,useDefault:!1,hasChanged:pF};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Il.litPropertyMetadata??(Il.litPropertyMetadata=new WeakMap);let Ah=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,n=mR){if(n.state&&(n.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((n=Object.create(n)).wrapped=!0),this.elementProperties.set(e,n),!n.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(e,r,n);i!==void 0&&Nge(this.prototype,e,i)}}static getPropertyDescriptor(e,n,r){const{get:i,set:s}=Pge(this.prototype,e)??{get(){return this[n]},set(o){this[n]=o}};return{get:i,set(o){const a=i==null?void 0:i.call(this);s==null||s.call(this,o),this.requestUpdate(e,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??mR}static _$Ei(){if(this.hasOwnProperty(Fg("elementProperties")))return;const e=Oge(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Fg("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Fg("properties"))){const n=this.properties,r=[...Dge(n),...Rge(n)];for(const i of r)this.createProperty(i,n[i])}const e=this[Symbol.metadata];if(e!==null){const n=litPropertyMetadata.get(e);if(n!==void 0)for(const[r,i]of n)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[n,r]of this.elementProperties){const i=this._$Eu(n,r);i!==void 0&&this._$Eh.set(i,n)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const n=[];if(Array.isArray(e)){const r=new Set(e.flat(1/0).reverse());for(const i of r)n.unshift(pR(i))}else e!==void 0&&n.push(pR(e));return n}static _$Eu(e,n){const r=n.attribute;return r===!1?void 0:typeof r=="string"?r:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var e;this._$ES=new Promise(n=>this.enableUpdating=n),this._$AL=new Map,this._$E_(),this.requestUpdate(),(e=this.constructor.l)==null||e.forEach(n=>n(this))}addController(e){var n;(this._$EO??(this._$EO=new Set)).add(e),this.renderRoot!==void 0&&this.isConnected&&((n=e.hostConnected)==null||n.call(e))}removeController(e){var n;(n=this._$EO)==null||n.delete(e)}_$E_(){const e=new Map,n=this.constructor.elementProperties;for(const r of n.keys())this.hasOwnProperty(r)&&(e.set(r,this[r]),delete this[r]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Ige(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(n=>{var r;return(r=n.hostConnected)==null?void 0:r.call(n)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$EO)==null||e.forEach(n=>{var r;return(r=n.hostDisconnected)==null?void 0:r.call(n)})}attributeChangedCallback(e,n,r){this._$AK(e,r)}_$ET(e,n){var s;const r=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,r);if(i!==void 0&&r.reflect===!0){const o=(((s=r.converter)==null?void 0:s.toAttribute)!==void 0?r.converter:EA).toAttribute(n,r.type);this._$Em=e,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,n){var s,o;const r=this.constructor,i=r._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),c=typeof a.converter=="function"?{fromAttribute:a.converter}:((s=a.converter)==null?void 0:s.fromAttribute)!==void 0?a.converter:EA;this._$Em=i;const l=c.fromAttribute(n,a.type);this[i]=l??((o=this._$Ej)==null?void 0:o.get(i))??l,this._$Em=null}}requestUpdate(e,n,r){var i;if(e!==void 0){const s=this.constructor,o=this[e];if(r??(r=s.getPropertyOptions(e)),!((r.hasChanged??pF)(o,n)||r.useDefault&&r.reflect&&o===((i=this._$Ej)==null?void 0:i.get(e))&&!this.hasAttribute(s._$Eu(e,r))))return;this.C(e,n,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,n,{useDefault:r,reflect:i,wrapped:s},o){r&&!(this._$Ej??(this._$Ej=new Map)).has(e)&&(this._$Ej.set(e,o??n??this[e]),s!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||r||(n=void 0),this._$AL.set(e,n)),i===!0&&this._$Em!==e&&(this._$Eq??(this._$Eq=new Set)).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(n){Promise.reject(n)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[s,o]of i){const{wrapped:a}=o,c=this[s];a!==!0||this._$AL.has(s)||c===void 0||this.C(s,void 0,o,c)}}let e=!1;const n=this._$AL;try{e=this.shouldUpdate(n),e?(this.willUpdate(n),(r=this._$EO)==null||r.forEach(i=>{var s;return(s=i.hostUpdate)==null?void 0:s.call(i)}),this.update(n)):this._$EM()}catch(i){throw e=!1,this._$EM(),i}e&&this._$AE(n)}willUpdate(e){}_$AE(e){var n;(n=this._$EO)==null||n.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&(this._$Eq=this._$Eq.forEach(n=>this._$ET(n,this[n]))),this._$EM()}updated(e){}firstUpdated(e){}};Ah.elementStyles=[],Ah.shadowRootOptions={mode:"open"},Ah[Fg("elementProperties")]=new Map,Ah[Fg("finalized")]=new Map,u_==null||u_({ReactiveElement:Ah}),(Il.reactiveElementVersions??(Il.reactiveElementVersions=[])).push("2.1.1");/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const zg=globalThis,ub=zg.trustedTypes,yR=ub?ub.createPolicy("lit-html",{createHTML:t=>t}):void 0,gF="$lit$",ol=`lit$${Math.random().toFixed(9).slice(2)}$`,mF="?"+ol,Lge=`<${mF}>`,fd=document,Ym=()=>fd.createComment(""),Zm=t=>t===null||typeof t!="object"&&typeof t!="function",zT=Array.isArray,kge=t=>zT(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",d_=`[ +\f\r]`,Vp=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,wR=/-->/g,vR=/>/g,cu=RegExp(`>|${d_}(?:([^\\s"'>=/]+)(${d_}*=${d_}*(?:[^ +\f\r"'\`<>=]|("|')|))|$)`,"g"),bR=/'/g,ER=/"/g,yF=/^(?:script|style|textarea|title)$/i,wF=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),USe=wF(1),LSe=wF(2),kf=Symbol.for("lit-noChange"),Tr=Symbol.for("lit-nothing"),_R=new WeakMap,Fu=fd.createTreeWalker(fd,129);function vF(t,e){if(!zT(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return yR!==void 0?yR.createHTML(e):e}const $ge=(t,e)=>{const n=t.length-1,r=[];let i,s=e===2?"":e===3?"":"",o=Vp;for(let a=0;a"?(o=i??Vp,d=-1):u[1]===void 0?d=-2:(d=o.lastIndex-u[2].length,l=u[1],o=u[3]===void 0?cu:u[3]==='"'?ER:bR):o===ER||o===bR?o=cu:o===wR||o===vR?o=Vp:(o=cu,i=void 0);const f=o===cu&&t[a+1].startsWith("/>")?" ":"";s+=o===Vp?c+Lge:d>=0?(r.push(l),c.slice(0,d)+gF+c.slice(d)+ol+f):c+ol+(d===-2?a:f)}return[vF(t,s+(t[n]||"")+(e===2?"":e===3?"":"")),r]};let _A=class bF{constructor({strings:e,_$litType$:n},r){let i;this.parts=[];let s=0,o=0;const a=e.length-1,c=this.parts,[l,u]=$ge(e,n);if(this.el=bF.createElement(l,r),Fu.currentNode=this.el.content,n===2||n===3){const d=this.el.content.firstChild;d.replaceWith(...d.childNodes)}for(;(i=Fu.nextNode())!==null&&c.length0){i.textContent=ub?ub.emptyScript:"";for(let f=0;f2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Tr}_$AI(e,n=this,r,i){const s=this.strings;let o=!1;if(s===void 0)e=$f(this,e,n,0),o=!Zm(e)||e!==this._$AH&&e!==kf,o&&(this._$AH=e);else{const a=e;let c,l;for(e=s[0],c=0;c{const r=(n==null?void 0:n.renderBefore)??e;let i=r._$litPart$;if(i===void 0){const s=(n==null?void 0:n.renderBefore)??null;r._$litPart$=i=new HT(e.insertBefore(Ym(),s),s,void 0,n??{})}return i._$AI(t),i};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Yu=globalThis;class Kw extends Ah{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var n;const e=super.createRenderRoot();return(n=this.renderOptions).renderBefore??(n.renderBefore=e.firstChild),e}update(e){const n=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Vge(n,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Do)==null||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Do)==null||e.setConnected(!1)}render(){return kf}}var KO;Kw._$litElement$=!0,Kw.finalized=!0,(KO=Yu.litElementHydrateSupport)==null||KO.call(Yu,{LitElement:Kw});const f_=Yu.litElementPolyfillSupport;f_==null||f_({LitElement:Kw});(Yu.litElementVersions??(Yu.litElementVersions=[])).push("4.2.1");let Hg,Ml,Nl;function FSe(t,e){Hg=document.createElement("style"),Ml=document.createElement("style"),Nl=document.createElement("style"),Hg.textContent=of(t).core.cssText,Ml.textContent=of(t).dark.cssText,Nl.textContent=of(t).light.cssText,document.head.appendChild(Hg),document.head.appendChild(Ml),document.head.appendChild(Nl),_F(e)}function _F(t){Ml&&Nl&&(t==="light"?(Ml.removeAttribute("media"),Nl.media="enabled"):(Nl.removeAttribute("media"),Ml.media="enabled"))}function Wge(t){Hg&&Ml&&Nl&&(Hg.textContent=of(t).core.cssText,Ml.textContent=of(t).dark.cssText,Nl.textContent=of(t).light.cssText)}function of(t){return{core:sf` + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); + @keyframes w3m-shake { + 0% { + transform: scale(1) rotate(0deg); + } + 20% { + transform: scale(1) rotate(-1deg); + } + 40% { + transform: scale(1) rotate(1.5deg); + } + 60% { + transform: scale(1) rotate(-1.5deg); + } + 80% { + transform: scale(1) rotate(1deg); + } + 100% { + transform: scale(1) rotate(0deg); + } + } + @keyframes w3m-iframe-fade-out { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } + } + @keyframes w3m-iframe-zoom-in { + 0% { + transform: translateY(50px); + opacity: 0; + } + 100% { + transform: translateY(0px); + opacity: 1; + } + } + @keyframes w3m-iframe-zoom-in-mobile { + 0% { + transform: scale(0.95); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } + } + :root { + --w3m-modal-width: 360px; + --w3m-color-mix-strength: ${Bs(t!=null&&t["--w3m-color-mix-strength"]?`${t["--w3m-color-mix-strength"]}%`:"0%")}; + --w3m-font-family: ${Bs((t==null?void 0:t["--w3m-font-family"])||"Inter, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;")}; + --w3m-font-size-master: ${Bs((t==null?void 0:t["--w3m-font-size-master"])||"10px")}; + --w3m-border-radius-master: ${Bs((t==null?void 0:t["--w3m-border-radius-master"])||"4px")}; + --w3m-z-index: ${Bs((t==null?void 0:t["--w3m-z-index"])||999)}; + + --wui-font-family: var(--w3m-font-family); + + --wui-font-size-mini: calc(var(--w3m-font-size-master) * 0.8); + --wui-font-size-micro: var(--w3m-font-size-master); + --wui-font-size-tiny: calc(var(--w3m-font-size-master) * 1.2); + --wui-font-size-small: calc(var(--w3m-font-size-master) * 1.4); + --wui-font-size-paragraph: calc(var(--w3m-font-size-master) * 1.6); + --wui-font-size-medium: calc(var(--w3m-font-size-master) * 1.8); + --wui-font-size-large: calc(var(--w3m-font-size-master) * 2); + --wui-font-size-title-6: calc(var(--w3m-font-size-master) * 2.2); + --wui-font-size-medium-title: calc(var(--w3m-font-size-master) * 2.4); + --wui-font-size-2xl: calc(var(--w3m-font-size-master) * 4); + + --wui-border-radius-5xs: var(--w3m-border-radius-master); + --wui-border-radius-4xs: calc(var(--w3m-border-radius-master) * 1.5); + --wui-border-radius-3xs: calc(var(--w3m-border-radius-master) * 2); + --wui-border-radius-xxs: calc(var(--w3m-border-radius-master) * 3); + --wui-border-radius-xs: calc(var(--w3m-border-radius-master) * 4); + --wui-border-radius-s: calc(var(--w3m-border-radius-master) * 5); + --wui-border-radius-m: calc(var(--w3m-border-radius-master) * 7); + --wui-border-radius-l: calc(var(--w3m-border-radius-master) * 9); + --wui-border-radius-3xl: calc(var(--w3m-border-radius-master) * 20); + + --wui-font-weight-light: 400; + --wui-font-weight-regular: 500; + --wui-font-weight-medium: 600; + --wui-font-weight-bold: 700; + + --wui-letter-spacing-2xl: -1.6px; + --wui-letter-spacing-medium-title: -0.96px; + --wui-letter-spacing-title-6: -0.88px; + --wui-letter-spacing-large: -0.8px; + --wui-letter-spacing-medium: -0.72px; + --wui-letter-spacing-paragraph: -0.64px; + --wui-letter-spacing-small: -0.56px; + --wui-letter-spacing-tiny: -0.48px; + --wui-letter-spacing-micro: -0.2px; + --wui-letter-spacing-mini: -0.16px; + + --wui-spacing-0: 0px; + --wui-spacing-4xs: 2px; + --wui-spacing-3xs: 4px; + --wui-spacing-xxs: 6px; + --wui-spacing-2xs: 7px; + --wui-spacing-xs: 8px; + --wui-spacing-1xs: 10px; + --wui-spacing-s: 12px; + --wui-spacing-m: 14px; + --wui-spacing-l: 16px; + --wui-spacing-2l: 18px; + --wui-spacing-xl: 20px; + --wui-spacing-xxl: 24px; + --wui-spacing-2xl: 32px; + --wui-spacing-3xl: 40px; + --wui-spacing-4xl: 90px; + --wui-spacing-5xl: 95px; + + --wui-icon-box-size-xxs: 14px; + --wui-icon-box-size-xs: 20px; + --wui-icon-box-size-sm: 24px; + --wui-icon-box-size-md: 32px; + --wui-icon-box-size-mdl: 36px; + --wui-icon-box-size-lg: 40px; + --wui-icon-box-size-2lg: 48px; + --wui-icon-box-size-xl: 64px; + + --wui-icon-size-inherit: inherit; + --wui-icon-size-xxs: 10px; + --wui-icon-size-xs: 12px; + --wui-icon-size-sm: 14px; + --wui-icon-size-md: 16px; + --wui-icon-size-mdl: 18px; + --wui-icon-size-lg: 20px; + --wui-icon-size-xl: 24px; + --wui-icon-size-xxl: 28px; + + --wui-wallet-image-size-inherit: inherit; + --wui-wallet-image-size-sm: 40px; + --wui-wallet-image-size-md: 56px; + --wui-wallet-image-size-lg: 80px; + + --wui-visual-size-size-inherit: inherit; + --wui-visual-size-sm: 40px; + --wui-visual-size-md: 55px; + --wui-visual-size-lg: 80px; + + --wui-box-size-md: 100px; + --wui-box-size-lg: 120px; + + --wui-ease-out-power-2: cubic-bezier(0, 0, 0.22, 1); + --wui-ease-out-power-1: cubic-bezier(0, 0, 0.55, 1); + + --wui-ease-in-power-3: cubic-bezier(0.66, 0, 1, 1); + --wui-ease-in-power-2: cubic-bezier(0.45, 0, 1, 1); + --wui-ease-in-power-1: cubic-bezier(0.3, 0, 1, 1); + + --wui-ease-inout-power-1: cubic-bezier(0.45, 0, 0.55, 1); + + --wui-duration-lg: 200ms; + --wui-duration-md: 125ms; + --wui-duration-sm: 75ms; + + --wui-path-network-sm: path( + 'M15.4 2.1a5.21 5.21 0 0 1 5.2 0l11.61 6.7a5.21 5.21 0 0 1 2.61 4.52v13.4c0 1.87-1 3.59-2.6 4.52l-11.61 6.7c-1.62.93-3.6.93-5.22 0l-11.6-6.7a5.21 5.21 0 0 1-2.61-4.51v-13.4c0-1.87 1-3.6 2.6-4.52L15.4 2.1Z' + ); + + --wui-path-network-md: path( + 'M43.4605 10.7248L28.0485 1.61089C25.5438 0.129705 22.4562 0.129705 19.9515 1.61088L4.53951 10.7248C2.03626 12.2051 0.5 14.9365 0.5 17.886V36.1139C0.5 39.0635 2.03626 41.7949 4.53951 43.2752L19.9515 52.3891C22.4562 53.8703 25.5438 53.8703 28.0485 52.3891L43.4605 43.2752C45.9637 41.7949 47.5 39.0635 47.5 36.114V17.8861C47.5 14.9365 45.9637 12.2051 43.4605 10.7248Z' + ); + + --wui-path-network-lg: path( + 'M78.3244 18.926L50.1808 2.45078C45.7376 -0.150261 40.2624 -0.150262 35.8192 2.45078L7.6756 18.926C3.23322 21.5266 0.5 26.3301 0.5 31.5248V64.4752C0.5 69.6699 3.23322 74.4734 7.6756 77.074L35.8192 93.5492C40.2624 96.1503 45.7376 96.1503 50.1808 93.5492L78.3244 77.074C82.7668 74.4734 85.5 69.6699 85.5 64.4752V31.5248C85.5 26.3301 82.7668 21.5266 78.3244 18.926Z' + ); + + --wui-width-network-sm: 36px; + --wui-width-network-md: 48px; + --wui-width-network-lg: 86px; + + --wui-height-network-sm: 40px; + --wui-height-network-md: 54px; + --wui-height-network-lg: 96px; + + --wui-icon-size-network-xs: 12px; + --wui-icon-size-network-sm: 16px; + --wui-icon-size-network-md: 24px; + --wui-icon-size-network-lg: 42px; + + --wui-color-inherit: inherit; + + --wui-color-inverse-100: #fff; + --wui-color-inverse-000: #000; + + --wui-cover: rgba(20, 20, 20, 0.8); + + --wui-color-modal-bg: var(--wui-color-modal-bg-base); + + --wui-color-accent-100: var(--wui-color-accent-base-100); + --wui-color-accent-090: var(--wui-color-accent-base-090); + --wui-color-accent-080: var(--wui-color-accent-base-080); + + --wui-color-success-100: var(--wui-color-success-base-100); + --wui-color-success-125: var(--wui-color-success-base-125); + + --wui-color-warning-100: var(--wui-color-warning-base-100); + + --wui-color-error-100: var(--wui-color-error-base-100); + --wui-color-error-125: var(--wui-color-error-base-125); + + --wui-color-blue-100: var(--wui-color-blue-base-100); + --wui-color-blue-90: var(--wui-color-blue-base-90); + + --wui-icon-box-bg-error-100: var(--wui-icon-box-bg-error-base-100); + --wui-icon-box-bg-blue-100: var(--wui-icon-box-bg-blue-base-100); + --wui-icon-box-bg-success-100: var(--wui-icon-box-bg-success-base-100); + --wui-icon-box-bg-inverse-100: var(--wui-icon-box-bg-inverse-base-100); + + --wui-all-wallets-bg-100: var(--wui-all-wallets-bg-100); + + --wui-avatar-border: var(--wui-avatar-border-base); + + --wui-thumbnail-border: var(--wui-thumbnail-border-base); + + --wui-wallet-button-bg: var(--wui-wallet-button-bg-base); + + --wui-box-shadow-blue: var(--wui-color-accent-glass-020); + } + + @supports (background: color-mix(in srgb, white 50%, black)) { + :root { + --wui-color-modal-bg: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-modal-bg-base) + ); + + --wui-box-shadow-blue: color-mix(in srgb, var(--wui-color-accent-100) 20%, transparent); + + --wui-color-accent-100: color-mix( + in srgb, + var(--wui-color-accent-base-100) 100%, + transparent + ); + --wui-color-accent-090: color-mix( + in srgb, + var(--wui-color-accent-base-100) 90%, + transparent + ); + --wui-color-accent-080: color-mix( + in srgb, + var(--wui-color-accent-base-100) 80%, + transparent + ); + --wui-color-accent-glass-090: color-mix( + in srgb, + var(--wui-color-accent-base-100) 90%, + transparent + ); + --wui-color-accent-glass-080: color-mix( + in srgb, + var(--wui-color-accent-base-100) 80%, + transparent + ); + --wui-color-accent-glass-020: color-mix( + in srgb, + var(--wui-color-accent-base-100) 20%, + transparent + ); + --wui-color-accent-glass-015: color-mix( + in srgb, + var(--wui-color-accent-base-100) 15%, + transparent + ); + --wui-color-accent-glass-010: color-mix( + in srgb, + var(--wui-color-accent-base-100) 10%, + transparent + ); + --wui-color-accent-glass-005: color-mix( + in srgb, + var(--wui-color-accent-base-100) 5%, + transparent + ); + --wui-color-accent-002: color-mix( + in srgb, + var(--wui-color-accent-base-100) 2%, + transparent + ); + + --wui-color-fg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-100) + ); + --wui-color-fg-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-125) + ); + --wui-color-fg-150: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-150) + ); + --wui-color-fg-175: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-175) + ); + --wui-color-fg-200: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-200) + ); + --wui-color-fg-225: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-225) + ); + --wui-color-fg-250: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-250) + ); + --wui-color-fg-275: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-275) + ); + --wui-color-fg-300: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-300) + ); + --wui-color-fg-325: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-325) + ); + --wui-color-fg-350: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-fg-350) + ); + + --wui-color-bg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-100) + ); + --wui-color-bg-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-125) + ); + --wui-color-bg-150: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-150) + ); + --wui-color-bg-175: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-175) + ); + --wui-color-bg-200: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-200) + ); + --wui-color-bg-225: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-225) + ); + --wui-color-bg-250: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-250) + ); + --wui-color-bg-275: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-275) + ); + --wui-color-bg-300: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-300) + ); + --wui-color-bg-325: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-325) + ); + --wui-color-bg-350: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-bg-350) + ); + + --wui-color-success-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-success-base-100) + ); + --wui-color-success-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-success-base-125) + ); + + --wui-color-warning-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-warning-base-100) + ); + + --wui-color-error-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-error-base-100) + ); + --wui-color-blue-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-blue-base-100) + ); + --wui-color-blue-90: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-blue-base-90) + ); + --wui-color-error-125: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-color-error-base-125) + ); + + --wui-icon-box-bg-error-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-error-base-100) + ); + --wui-icon-box-bg-accent-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-blue-base-100) + ); + --wui-icon-box-bg-success-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-success-base-100) + ); + --wui-icon-box-bg-inverse-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-icon-box-bg-inverse-base-100) + ); + + --wui-all-wallets-bg-100: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-all-wallets-bg-100) + ); + + --wui-avatar-border: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-avatar-border-base) + ); + + --wui-thumbnail-border: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-thumbnail-border-base) + ); + + --wui-wallet-button-bg: color-mix( + in srgb, + var(--w3m-color-mix) var(--w3m-color-mix-strength), + var(--wui-wallet-button-bg-base) + ); + } + } + `,light:sf` + :root { + --w3m-color-mix: ${Bs((t==null?void 0:t["--w3m-color-mix"])||"#fff")}; + --w3m-accent: ${Bs(pl(t,"dark")["--w3m-accent"])}; + --w3m-default: #fff; + + --wui-color-modal-bg-base: ${Bs(pl(t,"dark")["--w3m-background"])}; + --wui-color-accent-base-100: var(--w3m-accent); + + --wui-color-blueberry-100: hsla(230, 100%, 67%, 1); + --wui-color-blueberry-090: hsla(231, 76%, 61%, 1); + --wui-color-blueberry-080: hsla(230, 59%, 55%, 1); + --wui-color-blueberry-050: hsla(231, 100%, 70%, 0.1); + + --wui-color-fg-100: #e4e7e7; + --wui-color-fg-125: #d0d5d5; + --wui-color-fg-150: #a8b1b1; + --wui-color-fg-175: #a8b0b0; + --wui-color-fg-200: #949e9e; + --wui-color-fg-225: #868f8f; + --wui-color-fg-250: #788080; + --wui-color-fg-275: #788181; + --wui-color-fg-300: #6e7777; + --wui-color-fg-325: #9a9a9a; + --wui-color-fg-350: #363636; + + --wui-color-bg-100: #141414; + --wui-color-bg-125: #191a1a; + --wui-color-bg-150: #1e1f1f; + --wui-color-bg-175: #222525; + --wui-color-bg-200: #272a2a; + --wui-color-bg-225: #2c3030; + --wui-color-bg-250: #313535; + --wui-color-bg-275: #363b3b; + --wui-color-bg-300: #3b4040; + --wui-color-bg-325: #252525; + --wui-color-bg-350: #ffffff; + + --wui-color-success-base-100: #26d962; + --wui-color-success-base-125: #30a46b; + + --wui-color-warning-base-100: #f3a13f; + + --wui-color-error-base-100: #f25a67; + --wui-color-error-base-125: #df4a34; + + --wui-color-blue-base-100: rgba(102, 125, 255, 1); + --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); + + --wui-color-success-glass-001: rgba(38, 217, 98, 0.01); + --wui-color-success-glass-002: rgba(38, 217, 98, 0.02); + --wui-color-success-glass-005: rgba(38, 217, 98, 0.05); + --wui-color-success-glass-010: rgba(38, 217, 98, 0.1); + --wui-color-success-glass-015: rgba(38, 217, 98, 0.15); + --wui-color-success-glass-020: rgba(38, 217, 98, 0.2); + --wui-color-success-glass-025: rgba(38, 217, 98, 0.25); + --wui-color-success-glass-030: rgba(38, 217, 98, 0.3); + --wui-color-success-glass-060: rgba(38, 217, 98, 0.6); + --wui-color-success-glass-080: rgba(38, 217, 98, 0.8); + + --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); + + --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); + + --wui-color-error-glass-001: rgba(242, 90, 103, 0.01); + --wui-color-error-glass-002: rgba(242, 90, 103, 0.02); + --wui-color-error-glass-005: rgba(242, 90, 103, 0.05); + --wui-color-error-glass-010: rgba(242, 90, 103, 0.1); + --wui-color-error-glass-015: rgba(242, 90, 103, 0.15); + --wui-color-error-glass-020: rgba(242, 90, 103, 0.2); + --wui-color-error-glass-025: rgba(242, 90, 103, 0.25); + --wui-color-error-glass-030: rgba(242, 90, 103, 0.3); + --wui-color-error-glass-060: rgba(242, 90, 103, 0.6); + --wui-color-error-glass-080: rgba(242, 90, 103, 0.8); + + --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); + + --wui-color-gray-glass-001: rgba(255, 255, 255, 0.01); + --wui-color-gray-glass-002: rgba(255, 255, 255, 0.02); + --wui-color-gray-glass-005: rgba(255, 255, 255, 0.05); + --wui-color-gray-glass-010: rgba(255, 255, 255, 0.1); + --wui-color-gray-glass-015: rgba(255, 255, 255, 0.15); + --wui-color-gray-glass-020: rgba(255, 255, 255, 0.2); + --wui-color-gray-glass-025: rgba(255, 255, 255, 0.25); + --wui-color-gray-glass-030: rgba(255, 255, 255, 0.3); + --wui-color-gray-glass-060: rgba(255, 255, 255, 0.6); + --wui-color-gray-glass-080: rgba(255, 255, 255, 0.8); + --wui-color-gray-glass-090: rgba(255, 255, 255, 0.9); + + --wui-color-dark-glass-100: rgba(42, 42, 42, 1); + + --wui-icon-box-bg-error-base-100: #3c2426; + --wui-icon-box-bg-blue-base-100: #20303f; + --wui-icon-box-bg-success-base-100: #1f3a28; + --wui-icon-box-bg-inverse-base-100: #243240; + + --wui-all-wallets-bg-100: #222b35; + + --wui-avatar-border-base: #252525; + + --wui-thumbnail-border-base: #252525; + + --wui-wallet-button-bg-base: var(--wui-color-bg-125); + + --w3m-card-embedded-shadow-color: rgb(17 17 18 / 25%); + } + `,dark:sf` + :root { + --w3m-color-mix: ${Bs((t==null?void 0:t["--w3m-color-mix"])||"#000")}; + --w3m-accent: ${Bs(pl(t,"light")["--w3m-accent"])}; + --w3m-default: #000; + + --wui-color-modal-bg-base: ${Bs(pl(t,"light")["--w3m-background"])}; + --wui-color-accent-base-100: var(--w3m-accent); + + --wui-color-blueberry-100: hsla(231, 100%, 70%, 1); + --wui-color-blueberry-090: hsla(231, 97%, 72%, 1); + --wui-color-blueberry-080: hsla(231, 92%, 74%, 1); + + --wui-color-fg-100: #141414; + --wui-color-fg-125: #2d3131; + --wui-color-fg-150: #474d4d; + --wui-color-fg-175: #636d6d; + --wui-color-fg-200: #798686; + --wui-color-fg-225: #828f8f; + --wui-color-fg-250: #8b9797; + --wui-color-fg-275: #95a0a0; + --wui-color-fg-300: #9ea9a9; + --wui-color-fg-325: #9a9a9a; + --wui-color-fg-350: #d0d0d0; + + --wui-color-bg-100: #ffffff; + --wui-color-bg-125: #f5fafa; + --wui-color-bg-150: #f3f8f8; + --wui-color-bg-175: #eef4f4; + --wui-color-bg-200: #eaf1f1; + --wui-color-bg-225: #e5eded; + --wui-color-bg-250: #e1e9e9; + --wui-color-bg-275: #dce7e7; + --wui-color-bg-300: #d8e3e3; + --wui-color-bg-325: #f3f3f3; + --wui-color-bg-350: #202020; + + --wui-color-success-base-100: #26b562; + --wui-color-success-base-125: #30a46b; + + --wui-color-warning-base-100: #f3a13f; + + --wui-color-error-base-100: #f05142; + --wui-color-error-base-125: #df4a34; + + --wui-color-blue-base-100: rgba(102, 125, 255, 1); + --wui-color-blue-base-90: rgba(102, 125, 255, 0.9); + + --wui-color-success-glass-001: rgba(38, 181, 98, 0.01); + --wui-color-success-glass-002: rgba(38, 181, 98, 0.02); + --wui-color-success-glass-005: rgba(38, 181, 98, 0.05); + --wui-color-success-glass-010: rgba(38, 181, 98, 0.1); + --wui-color-success-glass-015: rgba(38, 181, 98, 0.15); + --wui-color-success-glass-020: rgba(38, 181, 98, 0.2); + --wui-color-success-glass-025: rgba(38, 181, 98, 0.25); + --wui-color-success-glass-030: rgba(38, 181, 98, 0.3); + --wui-color-success-glass-060: rgba(38, 181, 98, 0.6); + --wui-color-success-glass-080: rgba(38, 181, 98, 0.8); + + --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2); + + --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2); + + --wui-color-error-glass-001: rgba(240, 81, 66, 0.01); + --wui-color-error-glass-002: rgba(240, 81, 66, 0.02); + --wui-color-error-glass-005: rgba(240, 81, 66, 0.05); + --wui-color-error-glass-010: rgba(240, 81, 66, 0.1); + --wui-color-error-glass-015: rgba(240, 81, 66, 0.15); + --wui-color-error-glass-020: rgba(240, 81, 66, 0.2); + --wui-color-error-glass-025: rgba(240, 81, 66, 0.25); + --wui-color-error-glass-030: rgba(240, 81, 66, 0.3); + --wui-color-error-glass-060: rgba(240, 81, 66, 0.6); + --wui-color-error-glass-080: rgba(240, 81, 66, 0.8); + + --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2); + + --wui-icon-box-bg-error-base-100: #f4dfdd; + --wui-icon-box-bg-blue-base-100: #d9ecfb; + --wui-icon-box-bg-success-base-100: #daf0e4; + --wui-icon-box-bg-inverse-base-100: #dcecfc; + + --wui-all-wallets-bg-100: #e8f1fa; + + --wui-avatar-border-base: #f3f4f4; + + --wui-thumbnail-border-base: #eaefef; + + --wui-wallet-button-bg-base: var(--wui-color-bg-125); + + --wui-color-gray-glass-001: rgba(0, 0, 0, 0.01); + --wui-color-gray-glass-002: rgba(0, 0, 0, 0.02); + --wui-color-gray-glass-005: rgba(0, 0, 0, 0.05); + --wui-color-gray-glass-010: rgba(0, 0, 0, 0.1); + --wui-color-gray-glass-015: rgba(0, 0, 0, 0.15); + --wui-color-gray-glass-020: rgba(0, 0, 0, 0.2); + --wui-color-gray-glass-025: rgba(0, 0, 0, 0.25); + --wui-color-gray-glass-030: rgba(0, 0, 0, 0.3); + --wui-color-gray-glass-060: rgba(0, 0, 0, 0.6); + --wui-color-gray-glass-080: rgba(0, 0, 0, 0.8); + --wui-color-gray-glass-090: rgba(0, 0, 0, 0.9); + + --wui-color-dark-glass-100: rgba(233, 233, 233, 1); + + --w3m-card-embedded-shadow-color: rgb(224 225 233 / 25%); + } + `}}const zSe=sf` + *, + *::after, + *::before, + :host { + margin: 0; + padding: 0; + box-sizing: border-box; + font-style: normal; + text-rendering: optimizeSpeed; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-tap-highlight-color: transparent; + font-family: var(--wui-font-family); + backface-visibility: hidden; + } +`,HSe=sf` + button, + a { + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + position: relative; + transition: + color var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1), + border var(--wui-duration-lg) var(--wui-ease-out-power-1), + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), + box-shadow var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: background-color, color, border, box-shadow, border-radius; + outline: none; + border: none; + column-gap: var(--wui-spacing-3xs); + background-color: transparent; + text-decoration: none; + } + + wui-flex { + transition: border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: border-radius; + } + + button:disabled > wui-wallet-image, + button:disabled > wui-all-wallets-image, + button:disabled > wui-network-image, + button:disabled > wui-image, + button:disabled > wui-transaction-visual, + button:disabled > wui-logo { + filter: grayscale(1); + } + + @media (hover: hover) and (pointer: fine) { + button:hover:enabled { + background-color: var(--wui-color-gray-glass-005); + } + + button:active:enabled { + background-color: var(--wui-color-gray-glass-010); + } + } + + button:disabled > wui-icon-box { + opacity: 0.5; + } + + input { + border: none; + outline: none; + appearance: none; + } +`,jSe=sf` + .wui-color-inherit { + color: var(--wui-color-inherit); + } + + .wui-color-accent-100 { + color: var(--wui-color-accent-100); + } + + .wui-color-error-100 { + color: var(--wui-color-error-100); + } + + .wui-color-blue-100 { + color: var(--wui-color-blue-100); + } + + .wui-color-blue-90 { + color: var(--wui-color-blue-90); + } + + .wui-color-error-125 { + color: var(--wui-color-error-125); + } + + .wui-color-success-100 { + color: var(--wui-color-success-100); + } + + .wui-color-success-125 { + color: var(--wui-color-success-125); + } + + .wui-color-inverse-100 { + color: var(--wui-color-inverse-100); + } + + .wui-color-inverse-000 { + color: var(--wui-color-inverse-000); + } + + .wui-color-fg-100 { + color: var(--wui-color-fg-100); + } + + .wui-color-fg-200 { + color: var(--wui-color-fg-200); + } + + .wui-color-fg-300 { + color: var(--wui-color-fg-300); + } + + .wui-color-fg-325 { + color: var(--wui-color-fg-325); + } + + .wui-color-fg-350 { + color: var(--wui-color-fg-350); + } + + .wui-bg-color-inherit { + background-color: var(--wui-color-inherit); + } + + .wui-bg-color-blue-100 { + background-color: var(--wui-color-accent-100); + } + + .wui-bg-color-error-100 { + background-color: var(--wui-color-error-100); + } + + .wui-bg-color-error-125 { + background-color: var(--wui-color-error-125); + } + + .wui-bg-color-success-100 { + background-color: var(--wui-color-success-100); + } + + .wui-bg-color-success-125 { + background-color: var(--wui-color-success-100); + } + + .wui-bg-color-inverse-100 { + background-color: var(--wui-color-inverse-100); + } + + .wui-bg-color-inverse-000 { + background-color: var(--wui-color-inverse-000); + } + + .wui-bg-color-fg-100 { + background-color: var(--wui-color-fg-100); + } + + .wui-bg-color-fg-200 { + background-color: var(--wui-color-fg-200); + } + + .wui-bg-color-fg-300 { + background-color: var(--wui-color-fg-300); + } + + .wui-color-fg-325 { + background-color: var(--wui-color-fg-325); + } + + .wui-color-fg-350 { + background-color: var(--wui-color-fg-350); + } +`,Xw={hexStringToNumber(t){const e=t.startsWith("0x")?t.slice(2):t;return parseInt(e,16)},numberToHexString(t){return`0x${t.toString(16)}`},async getUserInfo(t){const[e,n]=await Promise.all([Xw.getAddresses(t),Xw.getChainId(t)]);return{chainId:n,addresses:e}},async getChainId(t){const e=await t.request({method:"eth_chainId"});return Number(e)},async getAddress(t){const[e]=await t.request({method:"eth_accounts"});return e},async getAddresses(t){return await t.request({method:"eth_accounts"})},async addEthereumChain(t,e){var r,i;const n=((r=e.rpcUrls.chainDefault)==null?void 0:r.http)||[];await t.request({method:"wallet_addEthereumChain",params:[{chainId:Xw.numberToHexString(e.id),rpcUrls:[...n],chainName:e.name,nativeCurrency:{name:e.nativeCurrency.name,decimals:e.nativeCurrency.decimals,symbol:e.nativeCurrency.symbol},blockExplorerUrls:[(i=e.blockExplorers)==null?void 0:i.default.url],iconUrls:[Xm.NetworkImageIds[e.id]]}]})}},nh={ACCOUNT_INDEXES:{PAYMENT:0,ORDINAL:1}};function M0(t){return{formatters:void 0,fees:void 0,serializers:void 0,...t}}const SR=M0({id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!1,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",deprecatedCaipNetworkId:"solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ"}),xR=M0({id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",deprecatedCaipNetworkId:"solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K"});M0({id:"4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z",name:"Solana Testnet",network:"solana-testnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:!0,chainNamespace:"solana",caipNetworkId:"solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z"});const SF=M0({id:"000000000019d6689c085ae165831e93",caipNetworkId:"bip122:000000000019d6689c085ae165831e93",chainNamespace:"bip122",name:"Bitcoin",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}}});M0({id:"000000000933ea01ad0ee984209779ba",caipNetworkId:"bip122:000000000933ea01ad0ee984209779ba",chainNamespace:"bip122",name:"Bitcoin Testnet",nativeCurrency:{name:"Bitcoin",symbol:"BTC",decimals:8},rpcUrls:{default:{http:["https://rpc.walletconnect.org/v1"]}},testnet:!0});const Gge={solana:["solana_signMessage","solana_signTransaction","solana_requestAccounts","solana_getAccounts","solana_signAllTransactions","solana_signAndSendTransaction"],eip155:["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_showCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"],bip122:["sendTransfer","signMessage","signPsbt","getAccountAddresses"]},ac={getMethodsByChainNamespace(t){return Gge[t]||[]},createDefaultNamespace(t){return{methods:this.getMethodsByChainNamespace(t),events:["accountsChanged","chainChanged"],chains:[],rpcMap:{}}},applyNamespaceOverrides(t,e){if(!e)return{...t};const n={...t},r=new Set;if(e.methods&&Object.keys(e.methods).forEach(i=>r.add(i)),e.chains&&Object.keys(e.chains).forEach(i=>r.add(i)),e.events&&Object.keys(e.events).forEach(i=>r.add(i)),e.rpcMap&&Object.keys(e.rpcMap).forEach(i=>{const[s]=i.split(":");s&&r.add(s)}),r.forEach(i=>{n[i]||(n[i]=this.createDefaultNamespace(i))}),e.methods&&Object.entries(e.methods).forEach(([i,s])=>{n[i]&&(n[i].methods=s)}),e.chains&&Object.entries(e.chains).forEach(([i,s])=>{n[i]&&(n[i].chains=s)}),e.events&&Object.entries(e.events).forEach(([i,s])=>{n[i]&&(n[i].events=s)}),e.rpcMap){const i=new Set;Object.entries(e.rpcMap).forEach(([s,o])=>{const[a,c]=s.split(":");!a||!c||!n[a]||(n[a].rpcMap||(n[a].rpcMap={}),i.has(a)||(n[a].rpcMap={},i.add(a)),n[a].rpcMap[c]=o)})}return n},createNamespaces(t,e){const n=t.reduce((r,i)=>{const{id:s,chainNamespace:o,rpcUrls:a}=i,c=a.default.http[0];r[o]||(r[o]=this.createDefaultNamespace(o));const l=`${o}:${s}`,u=r[o];switch(u.chains.push(l),l){case SR.caipNetworkId:u.chains.push(SR.deprecatedCaipNetworkId);break;case xR.caipNetworkId:u.chains.push(xR.deprecatedCaipNetworkId);break}return u!=null&&u.rpcMap&&c&&(u.rpcMap[s]=c),r},{});return this.applyNamespaceOverrides(n,e)},resolveReownName:async t=>{var r;const e=await Bg.resolveName(t);return((r=(Object.values(e==null?void 0:e.addresses)||[])[0])==null?void 0:r.address)||!1},getChainsFromNamespaces(t={}){return Object.values(t).flatMap(e=>{const n=e.chains||[],r=e.accounts.map(i=>{const[s,o]=i.split(":");return`${s}:${o}`});return Array.from(new Set([...n,...r]))})},isSessionEventData(t){return typeof t=="object"&&t!==null&&"id"in t&&"topic"in t&&"params"in t&&typeof t.params=="object"&&t.params!==null&&"chainId"in t.params&&"event"in t.params&&typeof t.params.event=="object"&&t.params.event!==null},isOriginAllowed(t,e,n){for(const r of[...e,...n])if(r.includes("*")){const s=`^${r.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&").replace(/\\\*/gu,".*")}$`;if(new RegExp(s,"u").test(t))return!0}else try{if(new URL(r).origin===t)return!0}catch{if(r===t)return!0}return!1},listenWcProvider({universalProvider:t,namespace:e,onConnect:n,onDisconnect:r,onAccountsChanged:i,onChainChanged:s,onDisplayUri:o}){n&&t.on("connect",()=>{const a=ac.getWalletConnectAccounts(t,e);n(a)}),r&&t.on("disconnect",()=>{r()}),i&&t.on("session_event",a=>{if(ac.isSessionEventData(a)){const{name:c,data:l}=a.params.event;if(c==="accountsChanged"&&Array.isArray(l)){const u=l.filter(d=>ot.isCaipAddress(d)).map(d=>ms.parseCaipAddress(d)).filter(d=>d.chainNamespace===e);i(u)}}}),s&&t.on("chainChanged",a=>{s(a)}),o&&t.on("display_uri",a=>{o(a)})},getWalletConnectAccounts(t,e){var i,s,o,a;const n=new Set,r=(a=(o=(s=(i=t==null?void 0:t.session)==null?void 0:i.namespaces)==null?void 0:s[e])==null?void 0:o.accounts)==null?void 0:a.map(c=>ms.parseCaipAddress(c)).filter(({address:c})=>n.has(c.toLowerCase())?!1:(n.add(c.toLowerCase()),!0));return r&&r.length>0?r:[]}};class qge{constructor(e){this.namespace=e.namespace}async syncConnections(e){switch(this.namespace){case ve.CHAIN.EVM:await this.syncEVMConnections(e);break;case ve.CHAIN.SOLANA:await this.syncSolanaConnections(e);break;case ve.CHAIN.BITCOIN:await this.syncBitcoinConnections(e);break;default:throw new Error(`Unsupported chain namespace: ${this.namespace}`)}}async syncEVMConnections({connectors:e,caipNetworks:n,universalProvider:r,getConnectionStatusInfo:i,onConnection:s,onListenProvider:o}){await Promise.all(e.filter(a=>{const{hasDisconnected:c,hasConnected:l}=i(a.id);return!c&&l}).map(async a=>{if(a.id===ve.CONNECTOR_ID.WALLET_CONNECT){const c=ac.getWalletConnectAccounts(r,this.namespace),l=n.find(u=>{var d,h;return u.chainNamespace===this.namespace&&u.id.toString()===((h=(d=c[0])==null?void 0:d.chainId)==null?void 0:h.toString())});c.length>0&&s({connectorId:a.id,accounts:c.map(u=>({address:u.address})),caipNetwork:l})}else{const{accounts:c,chainId:l}=await Gw.fetchProviderData(a);if(c.length>0&&l){const u=n.find(d=>d.chainNamespace===this.namespace&&d.id.toString()===l.toString());s({connectorId:a.id,accounts:c.map(d=>({address:d})),caipNetwork:u}),a.provider&&a.id!==ve.CONNECTOR_ID.AUTH&&a.id!==ve.CONNECTOR_ID.WALLET_CONNECT&&o(a.id,a.provider)}}}))}async syncSolanaConnections({connectors:e,caipNetwork:n,universalProvider:r,getConnectionStatusInfo:i,onConnection:s,onListenProvider:o}){await Promise.all(e.filter(a=>{const{hasDisconnected:c,hasConnected:l}=i(a.id);return!c&&l}).map(async a=>{if(a.id===ve.CONNECTOR_ID.WALLET_CONNECT){const c=ac.getWalletConnectAccounts(r,this.namespace);c.length>0&&s({connectorId:a.id,accounts:c.map(l=>({address:l.address})),caipNetwork:n})}else{const c=await a.connect({chainId:n==null?void 0:n.id});c&&(s({connectorId:a.id,accounts:[{address:c}],caipNetwork:n}),o(a.id,a.provider))}}))}async syncBitcoinConnections({connectors:e,caipNetwork:n,universalProvider:r,getConnectionStatusInfo:i,onConnection:s,onListenProvider:o}){await Promise.all(e.filter(a=>{const{hasDisconnected:c,hasConnected:l}=i(a.id);return!c&&l}).map(async a=>{var h,f,g,m,y,p;if(a.id===ve.CONNECTOR_ID.WALLET_CONNECT){const v=ac.getWalletConnectAccounts(r,this.namespace);v.length>0&&s({connectorId:a.id,accounts:v.map(w=>({address:w.address})),caipNetwork:n});return}const c=await a.connect(),l=await a.getAccountAddresses();let u=l==null?void 0:l.map(v=>ot.createAccount(ve.CHAIN.BITCOIN,v.address,v.purpose||"payment",v.publicKey,v.path));if(u&&u.length>1&&(u=[{namespace:ve.CHAIN.BITCOIN,publicKey:((h=u[nh.ACCOUNT_INDEXES.PAYMENT])==null?void 0:h.publicKey)??"",path:((f=u[nh.ACCOUNT_INDEXES.PAYMENT])==null?void 0:f.path)??"",address:((g=u[nh.ACCOUNT_INDEXES.PAYMENT])==null?void 0:g.address)??"",type:"payment"},{namespace:ve.CHAIN.BITCOIN,publicKey:((m=u[nh.ACCOUNT_INDEXES.ORDINAL])==null?void 0:m.publicKey)??"",path:((y=u[nh.ACCOUNT_INDEXES.ORDINAL])==null?void 0:y.path)??"",address:((p=u[nh.ACCOUNT_INDEXES.ORDINAL])==null?void 0:p.address)??"",type:"ordinal"}]),!(a.chains.find(v=>v.id===(n==null?void 0:n.id))||a.chains[0]))throw new Error("The connector does not support any of the requested chains");c&&(o(a.id,a.provider),s({connectorId:a.id,accounts:u.map(v=>({address:v.address,type:v.type})),caipNetwork:n}))}))}getConnection({address:e,connectorId:n,connections:r,connectors:i}){if(n){const o=r.find(l=>ws.isLowerCaseMatch(l.connectorId,n));if(!o)return null;const a=i.find(l=>ws.isLowerCaseMatch(l.id,o.connectorId)),c=e?o.accounts.find(l=>ws.isLowerCaseMatch(l.address,e)):o.accounts[0];return{...o,account:c,connector:a}}const s=r.find(o=>o.accounts.length>0&&i.some(a=>ws.isLowerCaseMatch(a.id,o.connectorId)));if(s){const[o]=s.accounts,a=i.find(c=>ws.isLowerCaseMatch(c.id,s.connectorId));return{...s,account:o,connector:a}}return null}}const ug={ERROR_CODE_UNRECOGNIZED_CHAIN_ID:4902,ERROR_CODE_DEFAULT:5e3,ERROR_INVALID_CHAIN_ID:32603,DEFAULT_ALLOWED_ANCESTORS:["http://localhost:*","https://localhost:*","http://127.0.0.1:*","https://127.0.0.1:*","https://*.pages.dev","https://*.vercel.app","https://*.ngrok-free.app","https://secure-mobile.walletconnect.com","https://secure-mobile.walletconnect.org"]};class xF{constructor({provider:e,namespace:n}){this.id=ve.CONNECTOR_ID.WALLET_CONNECT,this.name=Xm.ConnectorNamesMap[ve.CONNECTOR_ID.WALLET_CONNECT],this.type="WALLET_CONNECT",this.imageId=Xm.ConnectorImageIds[ve.CONNECTOR_ID.WALLET_CONNECT],this.getCaipNetworks=H.getCaipNetworks.bind(H),this.caipNetworks=this.getCaipNetworks(),this.provider=e,this.chain=n}get chains(){return this.getCaipNetworks()}async connectWalletConnect(){if(!await this.authenticate()){const n=this.getCaipNetworks(),r=we.state.universalProviderConfigOverride,i=ac.createNamespaces(n,r);await this.provider.connect({optionalNamespaces:i})}return{clientId:await this.provider.client.core.crypto.getClientId(),session:this.provider.session}}async disconnect(){await this.provider.disconnect()}async authenticate(){const e=this.chains.map(n=>n.caipNetworkId);return ca.universalProviderAuthenticate({universalProvider:this.provider,chains:e,methods:Kge})}}const Kge=["eth_accounts","eth_requestAccounts","eth_sendRawTransaction","eth_sign","eth_signTransaction","eth_signTypedData","eth_signTypedData_v3","eth_signTypedData_v4","eth_sendTransaction","personal_sign","wallet_switchEthereumChain","wallet_addEthereumChain","wallet_getPermissions","wallet_requestPermissions","wallet_registerOnboarding","wallet_watchAsset","wallet_scanQRCode","wallet_getCallsStatus","wallet_sendCalls","wallet_getCapabilities","wallet_grantPermissions","wallet_revokePermissions","wallet_getAssets"],Xge=[ve.CONNECTOR_ID.AUTH,ve.CONNECTOR_ID.WALLET_CONNECT];class Yge{constructor(e){this.availableConnectors=[],this.availableConnections=[],this.providerHandlers={},this.eventListeners=new Map,this.getCaipNetworks=n=>H.getCaipNetworks(n),this.getConnectorId=n=>De.getConnectorId(n),e&&this.construct(e),e!=null&&e.namespace&&(this.connectionManager=new qge({namespace:e.namespace}))}construct(e){this.projectId=e.projectId,this.namespace=e.namespace,this.adapterType=e.adapterType}get connectors(){return this.availableConnectors}get connections(){return this.availableConnections}get networks(){return this.getCaipNetworks(this.namespace)}onAuthConnected({accounts:e,chainId:n}){const r=this.getCaipNetworks().filter(i=>i.chainNamespace===this.namespace).find(i=>i.id.toString()===(n==null?void 0:n.toString()));e&&r&&this.addConnection({connectorId:ve.CONNECTOR_ID.AUTH,accounts:e,caipNetwork:r})}setAuthProvider(e){e.onConnect(this.onAuthConnected.bind(this)),e.onSocialConnected(this.onAuthConnected.bind(this)),this.addConnector({id:ve.CONNECTOR_ID.AUTH,type:"AUTH",name:ve.CONNECTOR_NAMES.AUTH,provider:e,imageId:Xm.ConnectorImageIds[ve.CONNECTOR_ID.AUTH],chain:this.namespace,chains:[]})}addConnector(...e){const n=new Set;this.availableConnectors=[...e,...this.availableConnectors].filter(r=>n.has(r.id)?!1:(n.add(r.id),!0)),this.emit("connectors",this.availableConnectors)}addConnection(...e){const n=new Set;this.availableConnections=[...e,...this.availableConnections].filter(r=>n.has(r.connectorId.toLowerCase())?!1:(n.add(r.connectorId.toLowerCase()),!0)),this.emit("connections",this.availableConnections)}deleteConnection(e){this.availableConnections=this.availableConnections.filter(n=>!ws.isLowerCaseMatch(n.connectorId,e)),this.emit("connections",this.availableConnections)}clearConnections(e=!1){this.availableConnections=[],e&&this.emit("connections",this.availableConnections)}setStatus(e,n){it.setStatus(e,n)}on(e,n){var r;this.eventListeners.has(e)||this.eventListeners.set(e,new Set),(r=this.eventListeners.get(e))==null||r.add(n)}off(e,n){const r=this.eventListeners.get(e);r&&r.delete(n)}removeAllEventListeners(){this.eventListeners.forEach(e=>{e.clear()})}emit(e,n){const r=this.eventListeners.get(e);r&&r.forEach(i=>i(n))}async connectWalletConnect(e){return{clientId:(await this.getWalletConnectConnector().connectWalletConnect()).clientId}}async switchNetwork(e){const{caipNetwork:n,providerType:r}=e;if(!e.provider)return;const i="provider"in e.provider?e.provider.provider:e.provider;if(r==="WALLET_CONNECT"){i.setDefaultChain(n.caipNetworkId);return}if(i&&r==="AUTH"){const s=i,o=Aa(n.chainNamespace);await s.switchNetwork({chainId:n.caipNetworkId});const a=await s.getUser({chainId:n.caipNetworkId,preferredAccountType:o});this.emit("switchNetwork",a)}}getWalletConnectConnector(){const e=this.connectors.find(n=>n instanceof xF);if(!e)throw new Error("WalletConnectConnector not found");return e}onConnect(e,n){if(e.length>0){const{address:r,chainId:i}=ot.getAccount(e[0]),s=this.getCaipNetworks().filter(a=>a.chainNamespace===this.namespace).find(a=>a.id.toString()===(i==null?void 0:i.toString())),o=this.connectors.find(a=>a.id===n);r&&(this.emit("accountChanged",{address:r,chainId:i,connector:o}),this.addConnection({connectorId:n,accounts:e.map(a=>{const{address:c}=ot.getAccount(a);return{address:c}}),caipNetwork:s}))}}onAccountsChanged(e,n,r=!0){var i,s;if(e.length>0){const{address:o}=ot.getAccount(e[0]),a=(i=this.connectionManager)==null?void 0:i.getConnection({connectorId:n,connections:this.connections,connectors:this.connectors});o&&ws.isLowerCaseMatch(this.getConnectorId(ve.CHAIN.EVM),n)&&this.emit("accountChanged",{address:o,chainId:(s=a==null?void 0:a.caipNetwork)==null?void 0:s.id,connector:a==null?void 0:a.connector}),this.addConnection({connectorId:n,accounts:e.map(c=>{const{address:l}=ot.getAccount(c);return{address:l}}),caipNetwork:a==null?void 0:a.caipNetwork})}else r&&this.onDisconnect(n)}onDisconnect(e){this.removeProviderListeners(e),this.deleteConnection(e),ws.isLowerCaseMatch(this.getConnectorId(ve.CHAIN.EVM),e)&&this.emitFirstAvailableConnection(),this.connections.length===0&&this.emit("disconnect")}onChainChanged(e,n){var o;const r=typeof e=="string"&&e.startsWith("0x")?Xw.hexStringToNumber(e).toString():e.toString(),i=(o=this.connectionManager)==null?void 0:o.getConnection({connectorId:n,connections:this.connections,connectors:this.connectors}),s=this.getCaipNetworks().filter(a=>a.chainNamespace===this.namespace).find(a=>a.id.toString()===r);i&&this.addConnection({connectorId:n,accounts:i.accounts,caipNetwork:s}),ws.isLowerCaseMatch(this.getConnectorId(ve.CHAIN.EVM),n)&&this.emit("switchNetwork",{chainId:r})}listenProviderEvents(e,n){if(Xge.includes(e))return;const r=o=>this.onAccountsChanged(o,e),i=o=>this.onChainChanged(o,e),s=()=>this.onDisconnect(e);this.providerHandlers[e]||(n.on("disconnect",s),n.on("accountsChanged",r),n.on("chainChanged",i),this.providerHandlers[e]={provider:n,disconnect:s,accountsChanged:r,chainChanged:i})}removeProviderListeners(e){if(this.providerHandlers[e]){const{provider:n,disconnect:r,accountsChanged:i,chainChanged:s}=this.providerHandlers[e];n.removeListener("disconnect",r),n.removeListener("accountsChanged",i),n.removeListener("chainChanged",s),this.providerHandlers[e]=null}}emitFirstAvailableConnection(){var n,r;const e=(n=this.connectionManager)==null?void 0:n.getConnection({connections:this.connections,connectors:this.connectors});if(e){const[i]=e.accounts;this.emit("accountChanged",{address:i==null?void 0:i.address,chainId:(r=e.caipNetwork)==null?void 0:r.id,connector:e.connector})}}}class Zge extends Yge{async setUniversalProvider(e){if(!this.namespace)throw new Error("UniversalAdapter:setUniversalProvider - namespace is required");return this.addConnector(new xF({provider:e,caipNetworks:this.getCaipNetworks(),namespace:this.namespace})),Promise.resolve()}async connect(e){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:Number(e.chainId),provider:this.provider,address:""})}async disconnect(){try{await this.getWalletConnectConnector().disconnect(),this.emit("disconnect")}catch(e){console.warn("UniversalAdapter:disconnect - error",e)}return{connections:[]}}syncConnections(){return Promise.resolve()}async getAccounts({namespace:e}){var i,s,o,a;const n=this.provider,r=((a=(o=(s=(i=n==null?void 0:n.session)==null?void 0:i.namespaces)==null?void 0:s[e])==null?void 0:o.accounts)==null?void 0:a.map(c=>{const[,,l]=c.split(":");return l}).filter((c,l,u)=>u.indexOf(c)===l))||[];return Promise.resolve({accounts:r.map(c=>ot.createAccount(e,c,e==="bip122"?"payment":"eoa"))})}async syncConnectors(){return Promise.resolve()}async getBalance(e){var s,o,a,c,l;if(!(e.caipNetwork&&pn.BALANCE_SUPPORTED_CHAINS.includes((s=e.caipNetwork)==null?void 0:s.chainNamespace))||(o=e.caipNetwork)!=null&&o.testnet)return{balance:"0.00",symbol:((a=e.caipNetwork)==null?void 0:a.nativeCurrency.symbol)||""};if(it.state.balanceLoading&&e.chainId===((c=H.state.activeCaipNetwork)==null?void 0:c.id))return{balance:it.state.balance||"0.00",symbol:it.state.balanceSymbol||""};const i=(await it.fetchTokenBalance()).find(u=>{var d,h;return u.chainId===`${(d=e.caipNetwork)==null?void 0:d.chainNamespace}:${e.chainId}`&&u.symbol===((h=e.caipNetwork)==null?void 0:h.nativeCurrency.symbol)});return{balance:(i==null?void 0:i.quantity.numeric)||"0.00",symbol:(i==null?void 0:i.symbol)||((l=e.caipNetwork)==null?void 0:l.nativeCurrency.symbol)||""}}async signMessage(e){var o,a,c;const{provider:n,message:r,address:i}=e;if(!n)throw new Error("UniversalAdapter:signMessage - provider is undefined");let s="";return((o=H.state.activeCaipNetwork)==null?void 0:o.chainNamespace)===ve.CHAIN.SOLANA?s=(await n.request({method:"solana_signMessage",params:{message:sp.encode(new TextEncoder().encode(r)),pubkey:i}},(a=H.state.activeCaipNetwork)==null?void 0:a.caipNetworkId)).signature:s=await n.request({method:"personal_sign",params:[r,i]},(c=H.state.activeCaipNetwork)==null?void 0:c.caipNetworkId),{signature:s}}async estimateGas(){return Promise.resolve({gas:BigInt(0)})}async sendTransaction(){return Promise.resolve({hash:""})}walletGetAssets(e){return Promise.resolve({})}async writeContract(){return Promise.resolve({hash:""})}emitFirstAvailableConnection(){}parseUnits(){return 0n}formatUnits(){return"0"}async getCapabilities(){return Promise.resolve({})}async grantPermissions(){return Promise.resolve({})}async revokePermissions(){return Promise.resolve("0x")}async syncConnection(){return Promise.resolve({id:"WALLET_CONNECT",type:"WALLET_CONNECT",chainId:1,provider:this.provider,address:""})}async switchNetwork(e){var i,s,o,a,c,l;const{caipNetwork:n}=e,r=this.getWalletConnectConnector();if(n.chainNamespace===ve.CHAIN.EVM)try{await((i=r.provider)==null?void 0:i.request({method:"wallet_switchEthereumChain",params:[{chainId:aR(n.id)}]}))}catch(u){if(u.code===ug.ERROR_CODE_UNRECOGNIZED_CHAIN_ID||u.code===ug.ERROR_INVALID_CHAIN_ID||u.code===ug.ERROR_CODE_DEFAULT||((o=(s=u==null?void 0:u.data)==null?void 0:s.originalError)==null?void 0:o.code)===ug.ERROR_CODE_UNRECOGNIZED_CHAIN_ID)try{await((l=r.provider)==null?void 0:l.request({method:"wallet_addEthereumChain",params:[{chainId:aR(n.id),rpcUrls:[(a=n==null?void 0:n.rpcUrls.chainDefault)==null?void 0:a.http],chainName:n.name,nativeCurrency:n.nativeCurrency,blockExplorerUrls:[(c=n.blockExplorers)==null?void 0:c.default.url]}]}))}catch{throw new Error("Chain is not supported")}}r.provider.setDefaultChain(n.caipNetworkId)}getWalletConnectProvider(){const e=this.connectors.find(r=>r.type==="WALLET_CONNECT");return e==null?void 0:e.provider}}const Jge=["email","socials","swaps","onramp","activity","reownBranding","multiWallet","emailCapture"],jy={email:{apiFeatureName:"social_login",localFeatureName:"email",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!(t!=null&&t.config))return!1;const e=t.config;return!!t.isEnabled&&e.includes("email")},processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.email:!!t},socials:{apiFeatureName:"social_login",localFeatureName:"socials",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!(t!=null&&t.config))return!1;const e=t.config;return t.isEnabled&&e.length>0?e.filter(n=>n!=="email"):!1},processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.socials:typeof t=="boolean"?t?pn.DEFAULT_REMOTE_FEATURES.socials:!1:t},swaps:{apiFeatureName:"swap",localFeatureName:"swaps",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!(t!=null&&t.config))return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.swaps:typeof t=="boolean"?t?pn.DEFAULT_REMOTE_FEATURES.swaps:!1:t},onramp:{apiFeatureName:"onramp",localFeatureName:"onramp",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>{if(!(t!=null&&t.config))return!1;const e=t.config;return t.isEnabled&&e.length>0?e:!1},processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.onramp:typeof t=="boolean"?t?pn.DEFAULT_REMOTE_FEATURES.onramp:!1:t},activity:{apiFeatureName:"activity",localFeatureName:"history",returnType:!1,isLegacy:!0,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.activity:!!t},reownBranding:{apiFeatureName:"reown_branding",localFeatureName:"reownBranding",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:t=>t===void 0?pn.DEFAULT_REMOTE_FEATURES.reownBranding:!!t},emailCapture:{apiFeatureName:"email_capture",localFeatureName:"emailCapture",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>t.isEnabled&&(t.config??[]),processFallback:t=>!1},multiWallet:{apiFeatureName:"multi_wallet",localFeatureName:"multiWallet",returnType:!1,isLegacy:!1,isAvailableOnBasic:!1,processApi:t=>!!t.isEnabled,processFallback:()=>pn.DEFAULT_REMOTE_FEATURES.multiWallet}},Qge={localSettingsOverridden:new Set,getApiConfig(t,e){return e==null?void 0:e.find(n=>n.id===t)},addWarning(t,e){if(t!==void 0){const n=jy[e],r=n.isLegacy?`"features.${n.localFeatureName}" (now "${e}")`:`"features.${e}"`;this.localSettingsOverridden.add(r)}},processFeature(t,e,n,r,i){const s=jy[t],o=e[s.localFeatureName];if(i&&!s.isAvailableOnBasic)return!1;if(r){const a=this.getApiConfig(s.apiFeatureName,n);return(a==null?void 0:a.config)===null?this.processFallbackFeature(t,o):a!=null&&a.config?(o!==void 0&&this.addWarning(o,t),this.processApiFeature(t,a)):!1}return this.processFallbackFeature(t,o)},processApiFeature(t,e){return jy[t].processApi(e)},processFallbackFeature(t,e){return jy[t].processFallback(e)},async fetchRemoteFeatures(t){const e=t.basic??!1,n=t.features||{};this.localSettingsOverridden.clear();let r=null,i=!1;try{r=await ut.fetchProjectConfig(),i=r!=null}catch(o){console.warn("[Reown Config] Failed to fetch remote project configuration. Using local/default values.",o)}const s=i&&!e?pn.DEFAULT_REMOTE_FEATURES:pn.DEFAULT_REMOTE_FEATURES_DISABLED;try{for(const o of Jge){const a=this.processFeature(o,n,r,i,e);Object.assign(s,{[o]:a})}}catch(o){return console.warn("[Reown Config] Failed to process the configuration from Cloud. Using default values.",o),pn.DEFAULT_REMOTE_FEATURES}if(i&&this.localSettingsOverridden.size>0){const o=`Your local configuration for ${Array.from(this.localSettingsOverridden).join(", ")} was ignored because a remote configuration was successfully fetched. Please manage these features via your project dashboard on dashboard.reown.com.`;oi.open({debugMessage:$s.ALERT_WARNINGS.LOCAL_CONFIGURATION_IGNORED.debugMessage(o)},"warning")}return s}};class eme{constructor(e){this.chainNamespaces=[],this.remoteFeatures={},this.reportedAlertErrors={},this.getCaipNetwork=(n,r)=>{var i,s,o;if(n){const a=(i=H.getCaipNetworks(n))==null?void 0:i.find(u=>u.id===r);if(a)return a;const c=(s=H.getNetworkData(n))==null?void 0:s.caipNetwork;return c||((o=H.getRequestedCaipNetworks(n).filter(u=>u.chainNamespace===n))==null?void 0:o[0])}return H.state.activeCaipNetwork||this.defaultCaipNetwork},this.getCaipNetworkId=()=>{const n=this.getCaipNetwork();if(n)return n.id},this.getCaipNetworks=n=>H.getCaipNetworks(n),this.getActiveChainNamespace=()=>H.state.activeChain,this.setRequestedCaipNetworks=(n,r)=>{H.setRequestedCaipNetworks(n,r)},this.getApprovedCaipNetworkIds=()=>H.getAllApprovedCaipNetworkIds(),this.getCaipAddress=n=>{var r,i;return H.state.activeChain===n||!n?H.state.activeCaipAddress:(i=(r=H.state.chains.get(n))==null?void 0:r.accountState)==null?void 0:i.caipAddress},this.setClientId=n=>{dt.setClientId(n)},this.getProvider=n=>Qn.getProvider(n),this.getProviderType=n=>Qn.getProviderId(n),this.getPreferredAccountType=n=>Aa(n),this.setCaipAddress=(n,r)=>{it.setCaipAddress(n,r)},this.setBalance=(n,r,i)=>{it.setBalance(n,r,i)},this.setProfileName=(n,r)=>{it.setProfileName(n,r)},this.setProfileImage=(n,r)=>{it.setProfileImage(n,r)},this.setUser=(n,r)=>{it.setUser(n,r)},this.resetAccount=n=>{it.resetAccount(n)},this.setCaipNetwork=n=>{H.setActiveCaipNetwork(n)},this.setCaipNetworkOfNamespace=(n,r)=>{H.setChainNetworkData(r,{caipNetwork:n})},this.setStatus=(n,r)=>{it.setStatus(n,r),De.isConnected()?Se.setConnectionStatus("connected"):Se.setConnectionStatus("disconnected")},this.getAddressByChainNamespace=n=>{var r,i;return(i=(r=H.state.chains.get(n))==null?void 0:r.accountState)==null?void 0:i.address},this.setConnectors=n=>{const r=[...De.state.allConnectors,...n];De.setConnectors(r)},this.setConnections=(n,r)=>{Se.setConnections(n,r),Le.setConnections(n,r)},this.fetchIdentity=n=>dt.fetchIdentity(n),this.getReownName=n=>Bg.getNamesForAddress(n),this.getConnectors=()=>De.getConnectors(),this.getConnectorImage=n=>eF.getConnectorImage(n),this.getConnections=n=>this.remoteFeatures.multiWallet?cb.getConnectionsData(n).connections:(oi.open(ve.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT,"info"),[]),this.getRecentConnections=n=>this.remoteFeatures.multiWallet?cb.getConnectionsData(n).recentConnections:(oi.open(ve.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT,"info"),[]),this.switchConnection=async n=>{if(!this.remoteFeatures.multiWallet){oi.open(ve.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT,"info");return}await Le.switchConnection(n)},this.deleteConnection=n=>{if(!this.remoteFeatures.multiWallet){oi.open(ve.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT,"info");return}Se.deleteAddressFromConnection(n),Le.syncStorageConnections()},this.setConnectedWalletInfo=(n,r)=>{const i=Qn.getProviderId(r),s=n?{...n,type:i}:void 0;it.setConnectedWalletInfo(s,r)},this.getIsConnectedState=()=>!!H.state.activeCaipAddress,this.addAddressLabel=(n,r,i)=>{it.addAddressLabel(n,r,i)},this.removeAddressLabel=(n,r)=>{it.removeAddressLabel(n,r)},this.getAddress=n=>{var r,i;return H.state.activeChain===n||!n?it.state.address:(i=(r=H.state.chains.get(n))==null?void 0:r.accountState)==null?void 0:i.address},this.setApprovedCaipNetworksData=n=>H.setApprovedCaipNetworksData(n),this.resetNetwork=n=>{H.resetNetwork(n)},this.addConnector=n=>{De.addConnector(n)},this.resetWcConnection=()=>{Le.resetWcConnection()},this.setAddressExplorerUrl=(n,r)=>{it.setAddressExplorerUrl(n,r)},this.setSmartAccountDeployed=(n,r)=>{it.setSmartAccountDeployed(n,r)},this.setPreferredAccountType=(n,r)=>{H.setAccountProp("preferredAccountType",n,r)},this.setEIP6963Enabled=n=>{we.setEIP6963Enabled(n)},this.handleUnsafeRPCRequest=()=>{if(this.isOpen()){if(this.isTransactionStackEmpty())return;this.redirect("ApproveTransaction")}else this.open({view:"ApproveTransaction"})},this.options=e,this.version=e.sdkVersion,this.caipNetworks=this.extendCaipNetworks(e),this.chainNamespaces=this.getChainNamespacesSet(e.adapters,this.caipNetworks),this.defaultCaipNetwork=this.extendDefaultCaipNetwork(e),this.chainAdapters=this.createAdapters(e.adapters),this.readyPromise=this.initialize(e)}getChainNamespacesSet(e,n){const r=e==null?void 0:e.map(s=>s.namespace).filter(s=>!!s);if(r!=null&&r.length)return[...new Set(r)];const i=n==null?void 0:n.map(s=>s.chainNamespace);return[...new Set(i)]}async initialize(e){var n,r,i;this.initializeProjectSettings(e),this.initControllers(e),await this.initChainAdapters(),this.sendInitializeEvent(e),we.state.enableReconnect?(await this.syncExistingConnection(),await this.syncAdapterConnections()):await this.unSyncExistingConnection(),this.remoteFeatures=await Qge.fetchRemoteFeatures(e),we.setRemoteFeatures(this.remoteFeatures),this.remoteFeatures.onramp&&vA.setOnrampProviders(this.remoteFeatures.onramp),((n=we.state.remoteFeatures)!=null&&n.email||Array.isArray((r=we.state.remoteFeatures)==null?void 0:r.socials)&&((i=we.state.remoteFeatures)==null?void 0:i.socials.length)>0)&&await this.checkAllowedOrigins()}async checkAllowedOrigins(){try{const e=await ut.fetchAllowedOrigins();if(!e||!ot.isClient()){oi.open($s.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error");return}const n=window.location.origin;ac.isOriginAllowed(n,e,ug.DEFAULT_ALLOWED_ANCESTORS)||oi.open($s.ALERT_ERRORS.ORIGIN_NOT_ALLOWED,"error")}catch(e){if(!(e instanceof Error)){oi.open($s.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error");return}switch(e.message){case"RATE_LIMITED":oi.open($s.ALERT_ERRORS.RATE_LIMITED_APP_CONFIGURATION,"error");break;case"SERVER_ERROR":{const n=e.cause instanceof Error?e.cause:e;oi.open({displayMessage:$s.ALERT_ERRORS.SERVER_ERROR_APP_CONFIGURATION.displayMessage,debugMessage:$s.ALERT_ERRORS.SERVER_ERROR_APP_CONFIGURATION.debugMessage(n.message)},"error");break}default:oi.open($s.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error")}}}sendInitializeEvent(e){var r;const{...n}=e;delete n.adapters,delete n.universalProvider,En.sendEvent({type:"track",event:"INITIALIZE",properties:{...n,networks:e.networks.map(i=>i.id),siweConfig:{options:((r=e.siweConfig)==null?void 0:r.options)||{}}}})}initControllers(e){this.initializeOptionsController(e),this.initializeChainController(e),this.initializeThemeController(e),this.initializeConnectionController(e),this.initializeConnectorController()}initializeThemeController(e){e.themeMode&&hs.setThemeMode(e.themeMode),e.themeVariables&&hs.setThemeVariables(e.themeVariables)}initializeChainController(e){if(!this.connectionControllerClient||!this.networkControllerClient)throw new Error("ConnectionControllerClient and NetworkControllerClient must be set");H.initialize(e.adapters??[],this.caipNetworks,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient});const n=this.getDefaultNetwork();n&&H.setActiveCaipNetwork(n)}initializeConnectionController(e){Le.initialize(e.adapters??[]),Le.setWcBasic(e.basic??!1)}initializeConnectorController(){De.initialize(this.chainNamespaces)}initializeProjectSettings(e){we.setProjectId(e.projectId),we.setSdkVersion(e.sdkVersion)}initializeOptionsController(e){var i;we.setDebug(e.debug!==!1),we.setEnableWalletConnect(e.enableWalletConnect!==!1),we.setEnableWalletGuide(e.enableWalletGuide!==!1),we.setEnableWallets(e.enableWallets!==!1),we.setEIP6963Enabled(e.enableEIP6963!==!1),we.setEnableNetworkSwitch(e.enableNetworkSwitch!==!1),we.setEnableReconnect(e.enableReconnect!==!1),we.setEnableAuthLogger(e.enableAuthLogger!==!1),we.setCustomRpcUrls(e.customRpcUrls),we.setEnableEmbedded(e.enableEmbedded),we.setAllWallets(e.allWallets),we.setIncludeWalletIds(e.includeWalletIds),we.setExcludeWalletIds(e.excludeWalletIds),we.setFeaturedWalletIds(e.featuredWalletIds),we.setTokens(e.tokens),we.setTermsConditionsUrl(e.termsConditionsUrl),we.setPrivacyPolicyUrl(e.privacyPolicyUrl),we.setCustomWallets(e.customWallets),we.setFeatures(e.features),we.setAllowUnsupportedChain(e.allowUnsupportedChain),we.setUniversalProviderConfigOverride(e.universalProviderConfigOverride),we.setPreferUniversalLinks(e.experimental_preferUniversalLinks),we.setDefaultAccountTypes(e.defaultAccountTypes);const n=this.getDefaultMetaData();if(!e.metadata&&n&&(e.metadata=n),we.setMetadata(e.metadata),we.setDisableAppend(e.disableAppend),we.setEnableEmbedded(e.enableEmbedded),we.setSIWX(e.siwx),!e.projectId){oi.open($s.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,"error");return}if(((i=e.adapters)==null?void 0:i.find(s=>s.namespace===ve.CHAIN.EVM))&&e.siweConfig){if(e.siwx)throw new Error("Cannot set both `siweConfig` and `siwx` options");we.setSIWX(e.siweConfig.mapToSIWX())}}getDefaultMetaData(){var e,n,r,i;return ot.isClient()?{name:((n=(e=document.getElementsByTagName("title"))==null?void 0:e[0])==null?void 0:n.textContent)||"",description:((r=document.querySelector('meta[property="og:description"]'))==null?void 0:r.content)||"",url:window.location.origin,icons:[((i=document.querySelector('link[rel~="icon"]'))==null?void 0:i.href)||""]}:null}setUnsupportedNetwork(e){const n=this.getActiveChainNamespace();if(n){const r=xh.getUnsupportedNetwork(`${n}:${e}`);H.setActiveCaipNetwork(r)}}getDefaultNetwork(){return xh.getCaipNetworkFromStorage(this.defaultCaipNetwork)}extendCaipNetwork(e,n){return xh.extendCaipNetwork(e,{customNetworkImageUrls:n.chainImages,projectId:n.projectId})}extendCaipNetworks(e){return xh.extendCaipNetworks(e.networks,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId})}extendDefaultCaipNetwork(e){const n=e.networks.find(i=>{var s;return i.id===((s=e.defaultNetwork)==null?void 0:s.id)});return n?xh.extendCaipNetwork(n,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId}):void 0}async disconnectNamespace(e,n){var r,i;try{this.setLoading(!0,e);let s={connections:[]};const o=this.getAdapter(e);return(((i=(r=H.state.chains.get(e))==null?void 0:r.accountState)==null?void 0:i.caipAddress)||!we.state.enableReconnect)&&(o!=null&&o.disconnect)&&(s=await o.disconnect({id:n})),this.setLoading(!1,e),s}catch(s){throw this.setLoading(!1,e),new Error(`Failed to disconnect chains: ${s.message}`)}}createClients(){this.connectionControllerClient={connectWalletConnect:async()=>{var l;const e=H.state.activeChain,n=this.getAdapter(e),r=(l=this.getCaipNetwork(e))==null?void 0:l.id,i=Le.getConnections(e),s=this.remoteFeatures.multiWallet,o=i.length>0;if(!n)throw new Error("Adapter not found");const a=await n.connectWalletConnect(r);(!o||!s)&&this.close(),this.setClientId((a==null?void 0:a.clientId)||null),Se.setConnectedNamespaces([...H.state.chains.keys()]),await this.syncWalletConnectAccount(),await ca.initializeIfEnabled()},connectExternal:async({id:e,address:n,info:r,type:i,provider:s,chain:o,caipNetwork:a,socialUri:c})=>{var g,m,y,p,v,w;const l=H.state.activeChain,u=o||l,d=this.getAdapter(u);if(o&&o!==l&&!a){const b=this.getCaipNetworks().find(S=>S.chainNamespace===o);b&&this.setCaipNetwork(b)}if(!u)throw new Error("connectExternal: namespace not found");if(!d)throw new Error("connectExternal: adapter not found");const h=this.getCaipNetwork(u),f=await d.connect({id:e,address:n,info:r,type:i,provider:s,socialUri:c,chainId:(a==null?void 0:a.id)||(h==null?void 0:h.id),rpcUrl:((y=(m=(g=a==null?void 0:a.rpcUrls)==null?void 0:g.default)==null?void 0:m.http)==null?void 0:y[0])||((w=(v=(p=h==null?void 0:h.rpcUrls)==null?void 0:p.default)==null?void 0:v.http)==null?void 0:w[0])});if(f)return Se.addConnectedNamespace(u),this.syncProvider({...f,chainNamespace:u}),this.setStatus("connected",u),this.syncConnectedWalletInfo(u),Se.removeDisconnectedConnectorId(e,u),{address:f.address}},reconnectExternal:async({id:e,info:n,type:r,provider:i})=>{var a;const s=H.state.activeChain,o=this.getAdapter(s);if(!s)throw new Error("reconnectExternal: namespace not found");if(!o)throw new Error("reconnectExternal: adapter not found");o!=null&&o.reconnect&&(await(o==null?void 0:o.reconnect({id:e,info:n,type:r,provider:i,chainId:(a=this.getCaipNetwork())==null?void 0:a.id})),Se.addConnectedNamespace(s),this.syncConnectedWalletInfo(s))},disconnect:async e=>{var l;const{id:n,chainNamespace:r,initialDisconnect:i}=e||{},s=r||H.state.activeChain,o=De.getConnectorId(s),a=n===ve.CONNECTOR_ID.AUTH||o===ve.CONNECTOR_ID.AUTH,c=n===ve.CONNECTOR_ID.WALLET_CONNECT||o===ve.CONNECTOR_ID.WALLET_CONNECT;try{const u=Array.from(H.state.chains.keys());let d=r?[r]:u;(c||a)&&(d=u);const h=d.map(async m=>{const y=De.getConnectorId(m),p=await this.disconnectNamespace(m,n||y);p&&(a&&Se.deleteConnectedSocialProvider(),p.connections.forEach(v=>{Se.addDisconnectedConnectorId(v.connectorId,m)})),i&&this.onDisconnectNamespace({chainNamespace:m,closeModal:!1})}),f=await Promise.allSettled(h);cn.resetSend(),Le.resetWcConnection(),(l=ca.getSIWX())!=null&&l.signOutOnDisconnect&&await ca.clearSessions(),De.setFilterByNamespace(void 0),Le.syncStorageConnections();const g=f.filter(m=>m.status==="rejected");if(g.length>0)throw new Error(g.map(m=>m.reason.message).join(", "));En.sendEvent({type:"track",event:"DISCONNECT_SUCCESS",properties:{namespace:r||"all"}})}catch(u){throw new Error(`Failed to disconnect chains: ${u.message}`)}},checkInstalled:e=>e?e.some(n=>{var r;return!!((r=window.ethereum)!=null&&r[String(n)])}):!!window.ethereum,signMessage:async e=>{const n=H.state.activeChain,r=this.getAdapter(H.state.activeChain);if(!n)throw new Error("signMessage: namespace not found");if(!r)throw new Error("signMessage: adapter not found");const i=await(r==null?void 0:r.signMessage({message:e,address:it.state.address,provider:Qn.getProvider(n)}));return(i==null?void 0:i.signature)||""},sendTransaction:async e=>{const n=e.chainNamespace;if(!n)throw new Error("sendTransaction: namespace not found");if(pn.SEND_SUPPORTED_NAMESPACES.includes(n)){const r=this.getAdapter(n);if(!r)throw new Error("sendTransaction: adapter not found");const i=Qn.getProvider(n),s=await(r==null?void 0:r.sendTransaction({...e,caipNetwork:this.getCaipNetwork(),provider:i}));return(s==null?void 0:s.hash)||""}return""},estimateGas:async e=>{const n=e.chainNamespace;if(n===ve.CHAIN.EVM){const r=this.getAdapter(n);if(!r)throw new Error("estimateGas: adapter is required but got undefined");const i=Qn.getProvider(n),s=this.getCaipNetwork();if(!s)throw new Error("estimateGas: caipNetwork is required but got undefined");const o=await(r==null?void 0:r.estimateGas({...e,provider:i,caipNetwork:s}));return(o==null?void 0:o.gas)||0n}return 0n},getEnsAvatar:async()=>{var n;const e=H.state.activeChain;if(!e)throw new Error("getEnsAvatar: namespace is required but got undefined");return await this.syncIdentity({address:it.state.address,chainId:Number((n=this.getCaipNetwork())==null?void 0:n.id),chainNamespace:e}),it.state.profileImage||!1},getEnsAddress:async e=>await ac.resolveReownName(e),writeContract:async e=>{const n=H.state.activeChain,r=this.getAdapter(n);if(!n)throw new Error("writeContract: namespace is required but got undefined");if(!r)throw new Error("writeContract: adapter is required but got undefined");const i=this.getCaipNetwork(),s=this.getCaipAddress(),o=Qn.getProvider(n);if(!i||!s)throw new Error("writeContract: caipNetwork or caipAddress is required but got undefined");const a=await(r==null?void 0:r.writeContract({...e,caipNetwork:i,provider:o,caipAddress:s}));return a==null?void 0:a.hash},parseUnits:(e,n)=>{const r=this.getAdapter(H.state.activeChain);if(!r)throw new Error("parseUnits: adapter is required but got undefined");return(r==null?void 0:r.parseUnits({value:e,decimals:n}))??0n},formatUnits:(e,n)=>{const r=this.getAdapter(H.state.activeChain);if(!r)throw new Error("formatUnits: adapter is required but got undefined");return(r==null?void 0:r.formatUnits({value:e,decimals:n}))??"0"},getCapabilities:async e=>{const n=this.getAdapter(H.state.activeChain);if(!n)throw new Error("getCapabilities: adapter is required but got undefined");return await(n==null?void 0:n.getCapabilities(e))},grantPermissions:async e=>{const n=this.getAdapter(H.state.activeChain);if(!n)throw new Error("grantPermissions: adapter is required but got undefined");return await(n==null?void 0:n.grantPermissions(e))},revokePermissions:async e=>{const n=this.getAdapter(H.state.activeChain);if(!n)throw new Error("revokePermissions: adapter is required but got undefined");return n!=null&&n.revokePermissions?await n.revokePermissions(e):"0x"},walletGetAssets:async e=>{const n=this.getAdapter(H.state.activeChain);if(!n)throw new Error("walletGetAssets: adapter is required but got undefined");return await(n==null?void 0:n.walletGetAssets(e))??{}},updateBalance:e=>{const n=this.getCaipNetwork(e);!n||!it.state.address||this.updateNativeBalance(it.state.address,n==null?void 0:n.id,e)}},this.networkControllerClient={switchCaipNetwork:async e=>await this.switchCaipNetwork(e),getApprovedCaipNetworksData:async()=>this.getApprovedCaipNetworksData()},Le.setClient(this.connectionControllerClient)}getApprovedCaipNetworksData(){var n,r,i,s,o;if(Qn.getProviderId(H.state.activeChain)===vu.CONNECTOR_TYPE_WALLET_CONNECT){const a=(r=(n=this.universalProvider)==null?void 0:n.session)==null?void 0:r.namespaces;return{supportsAllNetworks:((o=(s=(i=this.universalProvider)==null?void 0:i.session)==null?void 0:s.peer)==null?void 0:o.metadata.name)==="MetaMask Wallet",approvedCaipNetworkIds:this.getChainsFromNamespaces(a)}}return{supportsAllNetworks:!0,approvedCaipNetworkIds:[]}}async switchCaipNetwork(e){if(!e)return;const n=e.chainNamespace;if(this.getAddressByChainNamespace(e.chainNamespace)){const i=Qn.getProvider(n),s=Qn.getProviderId(n);if(e.chainNamespace===H.state.activeChain){const o=this.getAdapter(n);await(o==null?void 0:o.switchNetwork({caipNetwork:e,provider:i,providerType:s}))}else if(this.setCaipNetwork(e),s===vu.CONNECTOR_TYPE_WALLET_CONNECT)this.syncWalletConnectAccount();else{const o=this.getAddressByChainNamespace(n);o&&this.syncAccount({address:o,chainId:e.id,chainNamespace:n})}}else this.setCaipNetwork(e)}getChainsFromNamespaces(e={}){return Object.values(e).flatMap(n=>{const r=n.chains||[],i=n.accounts.map(s=>{const{chainId:o,chainNamespace:a}=ms.parseCaipAddress(s);return`${a}:${o}`});return Array.from(new Set([...r,...i]))})}createAdapters(e){return this.createClients(),this.chainNamespaces.reduce((n,r)=>{var s;const i=e==null?void 0:e.find(o=>o.namespace===r);return i?(i.construct({namespace:r,projectId:(s=this.options)==null?void 0:s.projectId,networks:this.getCaipNetworks()}),n[r]=i):n[r]=new Zge({namespace:r,networks:this.getCaipNetworks()}),n},{})}async initChainAdapter(e){var n;this.onConnectors(e),this.listenAdapter(e),await((n=this.chainAdapters)==null?void 0:n[e].syncConnectors(this.options,this)),await this.createUniversalProviderForAdapter(e)}async initChainAdapters(){await Promise.all(this.chainNamespaces.map(async e=>{await this.initChainAdapter(e)}))}onConnectors(e){const n=this.getAdapter(e);n==null||n.on("connectors",this.setConnectors.bind(this))}listenAdapter(e){const n=this.getAdapter(e);if(!n)return;const r=Se.getConnectionStatus();we.state.enableReconnect===!1?this.setStatus("disconnected",e):r==="connected"?this.setStatus("connecting",e):r==="disconnected"?(Se.clearAddressCache(),this.setStatus(r,e)):this.setStatus(r,e),n.on("switchNetwork",({address:i,chainId:s})=>{var l,u;const o=this.getCaipNetworks().find(d=>d.id.toString()===s.toString()||d.caipNetworkId.toString()===s.toString()),a=H.state.activeChain===e,c=(u=(l=H.state.chains.get(e))==null?void 0:l.accountState)==null?void 0:u.address;if(o){const d=a&&i?i:c;d&&this.syncAccount({address:d,chainId:o.id,chainNamespace:e})}else this.setUnsupportedNetwork(s)}),n.on("disconnect",()=>{const i=this.remoteFeatures.multiWallet,s=Array.from(Le.state.connections.values()).flat();this.onDisconnectNamespace({chainNamespace:e,closeModal:!i||s.length===0})}),n.on("connections",i=>{this.setConnections(i,e)}),n.on("pendingTransactions",()=>{const i=it.state.address,s=H.state.activeCaipNetwork;!i||!(s!=null&&s.id)||this.updateNativeBalance(i,s.id,s.chainNamespace)}),n.on("accountChanged",({address:i,chainId:s,connector:o})=>{var c,l;const a=H.state.activeChain===e;o!=null&&o.provider&&(this.syncProvider({id:o.id,type:o.type,provider:o.provider,chainNamespace:e}),this.syncConnectedWalletInfo(e)),a&&s?this.syncAccount({address:i,chainId:s,chainNamespace:e}):a&&((c=H.state.activeCaipNetwork)!=null&&c.id)?this.syncAccount({address:i,chainId:(l=H.state.activeCaipNetwork)==null?void 0:l.id,chainNamespace:e}):this.syncAccountInfo(i,s,e),Se.addConnectedNamespace(e)})}async createUniversalProviderForAdapter(e){var n,r,i;await this.getUniversalProvider(),this.universalProvider&&await((i=(r=(n=this.chainAdapters)==null?void 0:n[e])==null?void 0:r.setUniversalProvider)==null?void 0:i.call(r,this.universalProvider))}async syncExistingConnection(){await Promise.allSettled(this.chainNamespaces.map(e=>this.syncNamespaceConnection(e)))}async unSyncExistingConnection(){try{await Promise.allSettled(this.chainNamespaces.map(e=>Le.disconnect({namespace:e,initialDisconnect:!0})))}catch(e){console.error("Error disconnecting existing connections:",e)}}async syncNamespaceConnection(e){try{e===ve.CHAIN.EVM&&ot.isSafeApp()&&De.setConnectorId(ve.CONNECTOR_ID.SAFE,e);const n=De.getConnectorId(e);switch(this.setStatus("connecting",e),n){case ve.CONNECTOR_ID.WALLET_CONNECT:await this.syncWalletConnectAccount();break;case ve.CONNECTOR_ID.AUTH:break;default:await this.syncAdapterConnection(e)}}catch(n){console.warn("AppKit couldn't sync existing connection",n),this.setStatus("disconnected",e)}}onDisconnectNamespace(e){const{chainNamespace:n,closeModal:r}=e||{};H.resetAccount(n),H.resetNetwork(n),Se.removeConnectedNamespace(n);const i=Array.from(H.state.chains.keys());(n?[n]:i).forEach(o=>Se.addDisconnectedConnectorId(De.getConnectorId(o)||"",o)),De.removeConnectorId(n),Qn.resetChain(n),this.setUser(void 0,n),this.setStatus("disconnected",n),this.setConnectedWalletInfo(void 0,n),r!==!1&&Vt.close()}async syncAdapterConnections(){await Promise.allSettled(this.chainNamespaces.map(e=>{var i;const n=this.getCaipAddress(e),r=this.getCaipNetwork(e);return(i=this.chainAdapters)==null?void 0:i[e].syncConnections({connectToFirstConnector:!n,caipNetwork:r,getConnectorStorageInfo(s){const a=Se.getConnections()[e]??[];return{hasDisconnected:Se.isConnectorDisconnected(s,e),hasConnected:a.some(c=>ws.isLowerCaseMatch(c.connectorId,s))}}})}))}async syncAdapterConnection(e){var a,c,l;const n=this.getAdapter(e),r=De.getConnectorId(e),i=this.getCaipNetwork(e),o=De.getConnectors(e).find(u=>u.id===r);try{if(!n||!o)throw new Error(`Adapter or connector not found for namespace ${e}`);if(!(i!=null&&i.id))throw new Error("CaipNetwork not found");const u=await(n==null?void 0:n.syncConnection({namespace:e,id:o.id,chainId:i.id,rpcUrl:(l=(c=(a=i==null?void 0:i.rpcUrls)==null?void 0:a.default)==null?void 0:c.http)==null?void 0:l[0]}));u?(this.syncProvider({...u,chainNamespace:e}),await this.syncAccount({...u,chainNamespace:e}),this.setStatus("connected",e)):this.setStatus("disconnected",e)}catch{this.onDisconnectNamespace({chainNamespace:e,closeModal:!1})}}async syncWalletConnectAccount(){var r,i;const e=Object.keys(((i=(r=this.universalProvider)==null?void 0:r.session)==null?void 0:i.namespaces)||{}),n=this.chainNamespaces.map(async s=>{var u,d,h,f,g;const o=this.getAdapter(s);if(!o)return;const a=((f=(h=(d=(u=this.universalProvider)==null?void 0:u.session)==null?void 0:d.namespaces)==null?void 0:h[s])==null?void 0:f.accounts)||[],c=(g=H.state.activeCaipNetwork)==null?void 0:g.id,l=a.find(m=>{const{chainId:y}=ms.parseCaipAddress(m);return y===(c==null?void 0:c.toString())})||a[0];if(l){const m=ms.validateCaipAddress(l),{chainId:y,address:p}=ms.parseCaipAddress(m);if(Qn.setProviderId(s,vu.CONNECTOR_TYPE_WALLET_CONNECT),this.caipNetworks&&H.state.activeCaipNetwork&&o.namespace!==ve.CHAIN.EVM){const v=o.getWalletConnectProvider({caipNetworks:this.getCaipNetworks(),provider:this.universalProvider,activeCaipNetwork:H.state.activeCaipNetwork});Qn.setProvider(s,v)}else Qn.setProvider(s,this.universalProvider);De.setConnectorId(ve.CONNECTOR_ID.WALLET_CONNECT,s),Se.addConnectedNamespace(s),await this.syncAccount({address:p,chainId:y,chainNamespace:s})}else e.includes(s)&&this.setStatus("disconnected",s);this.syncConnectedWalletInfo(s),await H.setApprovedCaipNetworksData(s)});await Promise.all(n)}syncProvider({type:e,provider:n,id:r,chainNamespace:i}){Qn.setProviderId(i,e),Qn.setProvider(i,n),De.setConnectorId(r,i)}async syncAccount(e){var d,h;const n=e.chainNamespace===H.state.activeChain,r=H.getCaipNetworkByNamespace(e.chainNamespace,e.chainId),{address:i,chainId:s,chainNamespace:o}=e,{chainId:a}=Se.getActiveNetworkProps(),c=s||a,l=((d=H.state.activeCaipNetwork)==null?void 0:d.name)===ve.UNSUPPORTED_NETWORK_NAME,u=H.getNetworkProp("supportsAllNetworks",o);if(this.setStatus("connected",o),!(l&&!u)&&c){let f=this.getCaipNetworks().find(y=>y.id.toString()===c.toString()),g=this.getCaipNetworks().find(y=>y.chainNamespace===o);if(!u&&!f&&!g){const y=this.getApprovedCaipNetworkIds()||[],p=y.find(w=>{var b;return((b=ms.parseCaipNetworkId(w))==null?void 0:b.chainId)===c.toString()}),v=y.find(w=>{var b;return((b=ms.parseCaipNetworkId(w))==null?void 0:b.chainNamespace)===o});f=this.getCaipNetworks().find(w=>w.caipNetworkId===p),g=this.getCaipNetworks().find(w=>w.caipNetworkId===v||"deprecatedCaipNetworkId"in w&&w.deprecatedCaipNetworkId===v)}const m=f||g;(m==null?void 0:m.chainNamespace)===H.state.activeChain?we.state.enableNetworkSwitch&&!we.state.allowUnsupportedChain&&((h=H.state.activeCaipNetwork)==null?void 0:h.name)===ve.UNSUPPORTED_NETWORK_NAME?H.showUnsupportedChainUI():this.setCaipNetwork(m):n||r&&this.setCaipNetworkOfNamespace(r,o),this.syncConnectedWalletInfo(o),ws.isLowerCaseMatch(i,it.state.address)||this.syncAccountInfo(i,m==null?void 0:m.id,o),n?await this.syncBalance({address:i,chainId:m==null?void 0:m.id,chainNamespace:o}):await this.syncBalance({address:i,chainId:r==null?void 0:r.id,chainNamespace:o})}}async syncAccountInfo(e,n,r){const i=this.getCaipAddress(r),s=n||(i==null?void 0:i.split(":")[1]);if(!s)return;const o=`${r}:${s}:${e}`;this.setCaipAddress(o,r),await this.syncIdentity({address:e,chainId:s,chainNamespace:r})}async syncReownName(e,n){try{const r=await this.getReownName(e);if(r[0]){const i=r[0];this.setProfileName(i.name,n)}else this.setProfileName(null,n)}catch{this.setProfileName(null,n)}}syncConnectedWalletInfo(e){var i;const n=De.getConnectorId(e),r=Qn.getProviderId(e);if(r===vu.CONNECTOR_TYPE_ANNOUNCED||r===vu.CONNECTOR_TYPE_INJECTED){if(n){const o=this.getConnectors().find(a=>{var d,h;const c=a.id===n,l=((d=a.info)==null?void 0:d.rdns)===n,u=(h=a.connectors)==null?void 0:h.some(f=>{var g;return f.id===n||((g=f.info)==null?void 0:g.rdns)===n});return c||l||!!u});if(o){const{info:a,name:c,imageUrl:l}=o,u=l||this.getConnectorImage(o);this.setConnectedWalletInfo({name:c,icon:u,...a},e)}}}else if(r===vu.CONNECTOR_TYPE_WALLET_CONNECT){const s=Qn.getProvider(e);s!=null&&s.session&&this.setConnectedWalletInfo({...s.session.peer.metadata,name:s.session.peer.metadata.name,icon:(i=s.session.peer.metadata.icons)==null?void 0:i[0]},e)}else if(n&&(n===ve.CONNECTOR_ID.COINBASE_SDK||n===ve.CONNECTOR_ID.COINBASE)){const s=this.getConnectors().find(l=>l.id===n),o=(s==null?void 0:s.name)||"Coinbase Wallet",a=(s==null?void 0:s.imageUrl)||this.getConnectorImage(s),c=s==null?void 0:s.info;this.setConnectedWalletInfo({...c,name:o,icon:a},e)}}async syncBalance(e){!K5.getNetworksByNamespace(this.getCaipNetworks(),e.chainNamespace).find(r=>{var i;return r.id.toString()===((i=e.chainId)==null?void 0:i.toString())})||!e.chainId||await this.updateNativeBalance(e.address,e.chainId,e.chainNamespace)}async ready(){await this.readyPromise}async updateNativeBalance(e,n,r){const i=this.getAdapter(r),s=H.getCaipNetworkByNamespace(r,n);if(i){const o=await i.getBalance({address:e,chainId:n,caipNetwork:s,tokens:this.options.tokens});return this.setBalance(o.balance,o.symbol,r),o}}async initializeUniversalAdapter(){var r,i,s,o,a,c,l,u,d,h;const e=Age.createLogger((f,...g)=>{f&&this.handleAlertError(f),console.error(...g)}),n={projectId:(r=this.options)==null?void 0:r.projectId,metadata:{name:(i=this.options)!=null&&i.metadata?(s=this.options)==null?void 0:s.metadata.name:"",description:(o=this.options)!=null&&o.metadata?(a=this.options)==null?void 0:a.metadata.description:"",url:(c=this.options)!=null&&c.metadata?(l=this.options)==null?void 0:l.metadata.url:"",icons:(u=this.options)!=null&&u.metadata?(d=this.options)==null?void 0:d.metadata.icons:[""]},logger:e};we.setManualWCControl(!!((h=this.options)!=null&&h.manualWCControl)),this.universalProvider=this.options.universalProvider??await w1.init(n),we.state.enableReconnect===!1&&this.universalProvider.session&&await this.universalProvider.disconnect(),this.listenWalletConnect()}listenWalletConnect(){this.universalProvider&&this.chainNamespaces.forEach(e=>{ac.listenWcProvider({universalProvider:this.universalProvider,namespace:e,onDisplayUri:n=>{Le.setUri(n)},onConnect:()=>{Le.finalizeWcConnection()},onDisconnect:()=>{H.state.noAdapters&&this.resetAccount(e),Le.resetWcConnection()},onChainChanged:n=>{const r=H.state.activeChain,i=r&&De.state.activeConnectorIds[r]===ve.CONNECTOR_ID.WALLET_CONNECT;if(r===e&&(H.state.noAdapters||i)){const s=this.getCaipNetworks().find(a=>a.id.toString()===n.toString()||a.caipNetworkId.toString()===n.toString()),o=this.getCaipNetwork();if(!s){this.setUnsupportedNetwork(n);return}(o==null?void 0:o.id.toString())!==(s==null?void 0:s.id.toString())&&(o==null?void 0:o.chainNamespace)===(s==null?void 0:s.chainNamespace)&&this.setCaipNetwork(s)}},onAccountsChanged:n=>{const r=H.state.activeChain,i=r&&De.state.activeConnectorIds[r]===ve.CONNECTOR_ID.WALLET_CONNECT;if(r===e&&(H.state.noAdapters||i)&&n.length>0){const s=n[0];this.syncAccount({address:s.address,chainId:s.chainId,chainNamespace:s.chainNamespace})}}})})}createUniversalProvider(){var e;return!this.universalProviderInitPromise&&ot.isClient()&&((e=this.options)!=null&&e.projectId)&&(this.universalProviderInitPromise=this.initializeUniversalAdapter()),this.universalProviderInitPromise}async getUniversalProvider(){if(!this.universalProvider)try{await this.createUniversalProvider()}catch(e){En.sendEvent({type:"error",event:"INTERNAL_SDK_ERROR",properties:{errorType:"UniversalProviderInitError",errorMessage:e instanceof Error?e.message:"Unknown",uncaught:!1}}),console.error("AppKit:getUniversalProvider - Cannot create provider",e)}return this.universalProvider}handleAlertError(e){const n=Object.entries($s.UniversalProviderErrors).find(([,{message:a}])=>e.message.includes(a)),[r,i]=n??[],{message:s,alertErrorKey:o}=i??{};if(r&&s&&!this.reportedAlertErrors[r]){const a=$s.ALERT_ERRORS[o];a&&(oi.open(a,"error"),this.reportedAlertErrors[r]=!0)}}getAdapter(e){var n;if(e)return(n=this.chainAdapters)==null?void 0:n[e]}createAdapter(e){var i;if(!e)return;const n=e.namespace;if(!n)return;this.createClients();const r=e;r.namespace=n,r.construct({namespace:n,projectId:(i=this.options)==null?void 0:i.projectId,networks:this.getCaipNetworks()}),this.chainNamespaces.includes(n)||this.chainNamespaces.push(n),this.chainAdapters&&(this.chainAdapters[n]=r)}async open(e){if(await this.injectModalUi(),e!=null&&e.uri&&Le.setUri(e.uri),e!=null&&e.arguments)switch(e==null?void 0:e.view){case"Swap":return Vt.open({...e,data:{swap:e.arguments}})}return Vt.open(e)}async close(){await this.injectModalUi(),Vt.close()}setLoading(e,n){Vt.setLoading(e,n)}async disconnect(e){await Le.disconnect({namespace:e})}getSIWX(){return we.state.siwx}getError(){return""}getChainId(){var e;return(e=H.state.activeCaipNetwork)==null?void 0:e.id}async switchNetwork(e){const n=this.getCaipNetworks().find(r=>r.id===e.id);if(!n){oi.open($s.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND,"error");return}await H.switchActiveNetwork(n)}getWalletProvider(){return H.state.activeChain?Qn.state.providers[H.state.activeChain]:null}getWalletProviderType(){return Qn.getProviderId(H.state.activeChain)}subscribeProviders(e){return Qn.subscribeProviders(e)}getThemeMode(){return hs.state.themeMode}getThemeVariables(){return hs.state.themeVariables}setThemeMode(e){hs.setThemeMode(e),_F(hs.state.themeMode)}setTermsConditionsUrl(e){we.setTermsConditionsUrl(e)}setPrivacyPolicyUrl(e){we.setPrivacyPolicyUrl(e)}setThemeVariables(e){hs.setThemeVariables(e),Wge(hs.state.themeVariables)}subscribeTheme(e){return hs.subscribe(e)}subscribeConnections(e){return this.remoteFeatures.multiWallet?Le.subscribe(e):(oi.open(ve.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT,"info"),()=>{})}getWalletInfo(e){var n,r;return e?(r=(n=H.state.chains.get(e))==null?void 0:n.accountState)==null?void 0:r.connectedWalletInfo:it.state.connectedWalletInfo}getAccount(e){const n=e||H.state.activeChain,r=De.getAuthConnector(n),i=H.getAccountData(n),s=Se.getConnectedConnectorId(H.state.activeChain),o=Le.getConnections(n);if(!n)throw new Error("AppKit:getAccount - namespace is required");const a=o.flatMap(c=>c.accounts.map(({address:l,type:u})=>ot.createAccount(n,l,u||"eoa")));if(i)return{allAccounts:a,caipAddress:i.caipAddress,address:ot.getPlainAddress(i.caipAddress),isConnected:!!i.caipAddress,status:i.status,embeddedWalletInfo:r&&s===ve.CONNECTOR_ID.AUTH?{user:i.user?{...i.user,username:Se.getConnectedSocialUsername()}:void 0,authProvider:i.socialProvider||"email",accountType:Aa(n),isSmartAccountDeployed:!!i.smartAccountDeployed}:void 0}}subscribeAccount(e,n){const r=()=>{const i=this.getAccount(n);i&&e(i)};n?H.subscribeChainProp("accountState",r,n):H.subscribe(r),De.subscribe(r)}subscribeNetwork(e){return H.subscribe(({activeCaipNetwork:n})=>{e({caipNetwork:n,chainId:n==null?void 0:n.id,caipNetworkId:n==null?void 0:n.caipNetworkId})})}subscribeWalletInfo(e,n){return n?it.subscribeKey("connectedWalletInfo",e,n):it.subscribeKey("connectedWalletInfo",e)}subscribeShouldUpdateToAddress(e){it.subscribeKey("shouldUpdateToAddress",e)}subscribeCaipNetworkChange(e){H.subscribeKey("activeCaipNetwork",e)}getState(){return tc.state}getRemoteFeatures(){return we.state.remoteFeatures}subscribeState(e){return tc.subscribe(e)}subscribeRemoteFeatures(e){return we.subscribeKey("remoteFeatures",e)}showErrorMessage(e){pa.showError(e)}showSuccessMessage(e){pa.showSuccess(e)}getEvent(){return{...En.state}}subscribeEvents(e){return En.subscribe(e)}replace(e){mt.replace(e)}redirect(e){mt.push(e)}popTransactionStack(e){mt.popTransactionStack(e)}isOpen(){return Vt.state.open}isTransactionStackEmpty(){return mt.state.transactionStack.length===0}static getInstance(){return this.instance}updateFeatures(e){we.setFeatures(e)}updateRemoteFeatures(e){we.setRemoteFeatures(e)}updateOptions(e){const r={...we.state||{},...e};we.setOptions(r)}setConnectMethodsOrder(e){we.setConnectMethodsOrder(e)}setWalletFeaturesOrder(e){we.setWalletFeaturesOrder(e)}setCollapseWallets(e){we.setCollapseWallets(e)}setSocialsOrder(e){we.setSocialsOrder(e)}getConnectMethodsOrder(){return bA.getConnectOrderMethod(we.state.features,De.getConnectors())}addNetwork(e,n){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);const r=this.extendCaipNetwork(n,this.options);this.getCaipNetworks().find(i=>i.id===r.id)||H.addNetwork(r)}removeNetwork(e,n){if(this.chainAdapters&&!this.chainAdapters[e])throw new Error(`Adapter for namespace ${e} doesn't exist`);this.getCaipNetworks().find(i=>i.id===n)&&H.removeNetwork(e,n)}}let AR=!1;class tme extends eme{async open(e){De.isConnected()||await super.open(e)}async close(){await super.close(),this.options.manualWCControl&&Le.finalizeWcConnection()}async syncIdentity(e){return Promise.resolve()}async syncBalance(e){return Promise.resolve()}async injectModalUi(){if(!AR&&ot.isClient()){if(await mm(()=>import("./basic-BikkqjP4.js"),__vite__mapDeps([0,1])),await mm(()=>import("./w3m-modal-DlnuRkWU.js"),__vite__mapDeps([2,1])),!document.querySelector("w3m-modal")){const n=document.createElement("w3m-modal");!we.state.disableAppend&&!we.state.enableEmbedded&&document.body.insertAdjacentElement("beforeend",n)}AR=!0}}}const nme="1.7.17";function rme(t){return new tme({...t,basic:!0,sdkVersion:`html-core-${nme}`})}class jT{constructor({appKit:e,provider:n,config:r}){this.appKit=e,this.provider=n,this.config=r}static async init(e){const n=await Vfe.init({projectId:e.projectId,metadata:e.metadata}),r={networks:e.networks.flatMap(s=>s.chains),projectId:e.projectId,metadata:e.metadata,universalProvider:n,manualWCControl:!0},i=rme(r);return new jT({appKit:i,provider:n,config:e})}async connect(){var n;const e=(n=this.config)==null?void 0:n.networks.reduce((r,i)=>{var s;return r[i.namespace]={...i||{},methods:(i==null?void 0:i.methods)||[],events:(i==null?void 0:i.events)||[],chains:((s=i==null?void 0:i.chains)==null?void 0:s.map(o=>o.caipNetworkId))||[]},r},{});try{await this.appKit.open();const r=await this.provider.connect({optionalNamespaces:e});if(!r)throw new Error("Error connecting to wallet: No session found");return await this.appKit.close(),{session:r}}catch(r){throw await this.appKit.close(),new Error(`Error connecting to wallet: ${r instanceof Error?r.message:"Unknown error"}`)}}async disconnect(){await this.appKit.disconnect(),await this.provider.disconnect()}async request(e,n){return await this.provider.request(e,n)}}var ime=Object.defineProperty,sme=Object.defineProperties,ome=Object.getOwnPropertyDescriptors,db=Object.getOwnPropertySymbols,AF=Object.prototype.hasOwnProperty,CF=Object.prototype.propertyIsEnumerable,CR=(t,e,n)=>e in t?ime(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ur=(t,e)=>{for(var n in e||(e={}))AF.call(e,n)&&CR(t,n,e[n]);if(db)for(var n of db(e))CF.call(e,n)&&CR(t,n,e[n]);return t},qi=(t,e)=>sme(t,ome(e)),ame=(t,e)=>{var n={};for(var r in t)AF.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(t!=null&&db)for(var r of db(t))e.indexOf(r)<0&&CF.call(t,r)&&(n[r]=t[r]);return n},Gh=class TF extends Error{constructor(e,n,r,i){super(e),this.message=e,this.code=n,this.data=r,this.cause=i,this.name="JsonRpcError",this.message=e,this.code=n,this.data=r,this.cause=i}static fromResponse(e){return new TF(e.message,e.code,e.data)}toString(){return`${this.name} (${this.code}): ${this.message}${this.data?`: ${JSON.stringify(this.data)}`:""}`}},cme=(t=>(t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError",t[t.UserRejection=-32e3]="UserRejection",t[t.MethodAddressMismatch=-32001]="MethodAddressMismatch",t[t.MethodAccessDenied=-32002]="MethodAccessDenied",t[t.UnknownError=-31e3]="UnknownError",t[t.UserCanceled=-31001]="UserCanceled",t))(cme||{}),IF="asigna-stx",p_=(t,e)=>new Promise(n=>{function r(i){i.data.source===IF&&i.data[e]&&(n(i.data[e]),window.removeEventListener("message",r))}window.addEventListener("message",r),window.top.postMessage(ume(t,e),"*")}),lme={authenticationRequest:async t=>p_(t,"authenticationRequest"),transactionRequest:async t=>p_(t,"transactionRequest"),request:async(t,e)=>p_(e,t)},ume=(t,e)=>({source:IF,[e]:t}),dme=()=>{typeof window>"u"||window.top!==window.self&&(window.AsignaProvider=lme)};dme();var hme=[{id:"LeatherProvider",name:"Leather",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMjYuODM4NyIgZmlsbD0iIzEyMTAwRiIvPgo8cGF0aCBkPSJNNzQuOTE3MSA1Mi43MTE0QzgyLjQ3NjYgNTEuNTQwOCA5My40MDg3IDQzLjU4MDQgOTMuNDA4NyAzNy4zNzYxQzkzLjQwODcgMzUuNTAzMSA5MS44OTY4IDM0LjIxNTQgODkuNjg3MSAzNC4yMTU0Qzg1LjUwMDQgMzQuMjE1NCA3OC40MDYxIDQwLjUzNjggNzQuOTE3MSA1Mi43MTE0Wk0zOS45MTEgODMuNDk5MUMzMC4wMjU2IDgzLjQ5OTEgMjkuMjExNSA5My4zMzI0IDM5LjA5NjkgOTMuMzMyNEM0My41MTYzIDkzLjMzMjQgNDguODY2MSA5MS41NzY0IDUxLjY1NzMgODguNDE1N0M0Ny41ODY4IDg0LjkwMzggNDQuMjE0MSA4My40OTkxIDM5LjkxMSA4My40OTkxWk0xMDIuODI5IDc5LjI4NDhDMTAzLjQxIDk1Ljc5MDcgOTUuMDM2OSAxMDUuMDM5IDgwLjg0ODQgMTA1LjAzOUM3Mi40NzQ4IDEwNS4wMzkgNjguMjg4MSAxMDEuODc4IDU5LjMzMyA5Ni4wMjQ5QzU0LjY4MSAxMDEuMTc2IDQ1Ljg0MjMgMTA1LjAzOSAzOC41MTU0IDEwNS4wMzlDMTMuMjc4NSAxMDUuMDM5IDE0LjMyNTIgNzIuODQ2MyA0MC4wMjczIDcyLjg0NjNDNDUuMzc3MSA3Mi44NDYzIDQ5LjkxMjggNzQuMjUxMSA1NS43Mjc3IDc3Ljg4TDU5LjU2NTYgNjQuNDE3N0M0My43NDg5IDYwLjA4NjQgMzUuODQwNSA0Ny45MTE4IDQzLjYzMjYgMzAuNDY5M0g1Ni4xOTI5QzQ5LjIxNSA0Mi4wNTg2IDUzLjk4MzIgNTEuNjU3OCA2Mi44MjIgNTIuNzExNEM2Ny41OTAzIDM1LjczNzIgNzcuODI0NiAyMi41MDkgOTEuNDMxNiAyMi41MDlDOTkuMTA3NCAyMi41MDkgMTA1LjE1NSAyNy41NDI4IDEwNS4xNTUgMzYuNjczN0MxMDUuMTU1IDUxLjMwNjYgODYuMDgxOSA2My4yNDcxIDcxLjY2MDcgNjQuNDE3N0w2NS43Mjk1IDg1LjM3MjFDNzIuNDc0OCA5My4yMTUzIDkxLjE5OSAxMDAuODI0IDkxLjE5OSA3OS4yODQ4SDEwMi44MjlaIiBmaWxsPSIjRjVGMUVEIi8+Cjwvc3ZnPgo=",webUrl:"https://leather.io",chromeWebStoreUrl:"https://chrome.google.com/webstore/detail/hiro-wallet/ldinpeekobnhjjdofggfgjlcehhmanlj",mozillaAddOnsUrl:"https://leather.io/install-extension"},{id:"XverseProviders.BitcoinProvider",name:"Xverse Wallet",icon:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiMxNzE3MTciIGQ9Ik0wIDBoNjAwdjYwMEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTQ0MCA0MzUuNHYtNTFjMC0yLS44LTMuOS0yLjItNS4zTDIyMCAxNjIuMmE3LjYgNy42IDAgMCAwLTUuNC0yLjJoLTUxLjFjLTIuNSAwLTQuNiAyLTQuNiA0LjZ2NDcuM2MwIDIgLjggNCAyLjIgNS40bDc4LjIgNzcuOGE0LjYgNC42IDAgMCAxIDAgNi41bC03OSA3OC43Yy0xIC45LTEuNCAyLTEuNCAzLjJ2NTJjMCAyLjQgMiA0LjUgNC42IDQuNUgyNDljMi42IDAgNC42LTIgNC42LTQuNlY0MDVjMC0xLjIuNS0yLjQgMS40LTMuM2w0Mi40LTQyLjJhNC42IDQuNiAwIDAgMSA2LjQgMGw3OC43IDc4LjRhNy42IDcuNiAwIDAgMCA1LjQgMi4yaDQ3LjVjMi41IDAgNC42LTIgNC42LTQuNloiLz48cGF0aCBmaWxsPSIjRUU3QTMwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zMjUuNiAyMjcuMmg0Mi44YzIuNiAwIDQuNiAyLjEgNC42IDQuNnY0Mi42YzAgNCA1IDYuMSA4IDMuMmw1OC43LTU4LjVjLjgtLjggMS4zLTIgMS4zLTMuMnYtNTEuMmMwLTIuNi0yLTQuNi00LjYtNC42TDM4NCAxNjBjLTEuMiAwLTIuNC41LTMuMyAxLjNsLTU4LjQgNTguMWE0LjYgNC42IDAgMCAwIDMuMiA3LjhaIi8+PC9nPjwvc3ZnPg==",webUrl:"https://xverse.app",chromeWebStoreUrl:"https://chrome.google.com/webstore/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg",googlePlayStoreUrl:"https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse",iOSAppStoreUrl:"https://apps.apple.com/app/xverse-bitcoin-web3-wallet/id1552272513",mozillaAddOnsUrl:"https://www.xverse.app/download"},{id:"AsignaProvider",name:"Asigna Multisig",icon:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMDEwMCIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Ik0xNS4xMSA1LjU1YTMgMyAwIDAgMC0xLjgyIDEuM2wtLjA1LjA4LS40My43Mi0uMDcuMTEtLjUuODUtLjA1LjA5LTEuMjkgMi4xOC0uMDQuMDctLjQ3LjgtLjA2LjEtLjQ2Ljc4LS4wNy4xMS0xLjYzIDIuNzYtLjA3LjExLS4zOC42Ni0uMDUuMDgtLjczIDEuMjQtLjM1LjYtLjQuNjctLjA1LjA5TDUuMSAyMC43bC0uMTEuMTgtLjE0LjIzLS4wNy4xMy0uMzMuNTUtLjA0LjA3di4wMWExLjI2IDEuMjYgMCAwIDAtLjE0LjQ3IDEuMzEgMS4zMSAwIDAgMCAxLjI0IDEuNGgxLjVsLjA1LS4wNi4wNC0uMDYuODctMS4yMS4wNS0uMDguNzctMS4wNy4wNS0uMDcuNC0uNTcuMDUtLjA2LjI0LS4zNGExLjUyIDEuNTIgMCAwIDEgMS4zOS0uNjIgMS41IDEuNSAwIDAgMSAuNjQuMiAxLjQ3IDEuNDcgMCAwIDEgLjczIDEuMjcgMS40NCAxLjQ0IDAgMCAxLS4yNy44NGwtLjYzLjg4LS4wNS4wNy0uMzIuNDUtLjA2LjA4LS4wOC4xMi0uMTIuMTYtLjA1LjA4aDIuMTNhMi4zMiAyLjMyIDAgMCAwIDEuNzctLjk2bDEuMTgtMS42My43Ny0xLjA4IDEuMy0xLjhhMS4yNCAxLjI0IDAgMCAxIC41NS0uNDNsLjA4LS4wM2ExLjMgMS4zIDAgMCAxIC4zLS4wNiAxLjI4IDEuMjggMCAwIDEgMS4xNS41NGwuMTEuMmExLjEzIDEuMTMgMCAwIDEgLjEuNDEgMS4xOSAxLjE5IDAgMCAxLS4yMy43N2wtLjAzLjA1LS41Ny44LS43Ljk4LS4yNy4zN2ExLjIyIDEuMjIgMCAwIDAtLjIuNSAxLjA1IDEuMDUgMCAwIDAtLjAyLjIzdi4wNmExLjE3IDEuMTcgMCAwIDAgLjE0LjQzbC4wMi4wNS4wNy4xYTEuNDQgMS40NCAwIDAgMCAuMS4xMWwuMDUuMDYuMDEuMDFhMS44IDEuOCAwIDAgMCAuMTQuMWMwIC4wMi4wMi4wMy4wNC4wM2ExIDEgMCAwIDAgLjA4LjA1bC4wNy4wNGExLjI1IDEuMjUgMCAwIDAgLjUuMWg2LjljLjEgMCAuMi0uMDEuMjktLjAzbC4wNi0uMDJhMS4yNyAxLjI3IDAgMCAwIC4yNy0uMS41Ny41NyAwIDAgMCAuMDctLjAzIDEuMjEgMS4yMSAwIDAgMCAuMjYtLjE5bC4wOC0uMDdhLjkyLjkyIDAgMCAwIC4xNS0uMTkgMS41NSAxLjU1IDAgMCAwIC4wOS0uMTdsLjAyLS4wNWExLjIyIDEuMjIgMCAwIDAgLjA4LS4yNnYtLjA0bC4wMi0uMDh2LS4wOGExLjMyIDEuMzIgMCAwIDAtLjItLjc0bC0xLjYtMi42NC0uMDYtLjEtLjItLjMyLS4zMy0uNTR2LS4wMWwtLjA1LS4wOC0xLjMtMi4xNS0uMDctLjEtLjA0LS4wNi0uOC0xLjMyLS4wNC0uMDctLjItLjM0LS4xLS4xNC0uMS0uMTYtLjUzLS45LS4xMy0uMi0uMDktLjE0LTIuMTctMy41Ny0uMDQtLjA3LS43Mi0xLjE5LS4wNS0uMDctLjQtLjY1YTIuNjUgMi42NSAwIDAgMC0uMy0uNCAyLjk2IDIuOTYgMCAwIDAtLjk3LS43NCAzLjA0IDMuMDQgMCAwIDAtMS4zLS4zYy0uMjUgMC0uNS4wNC0uNzQuMVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNMTkgMTYuM2E1LjQ1IDUuNDUgMCAwIDAtLjgzIDEuNTZsLS4wNC4xNWExLjM2IDEuMzYgMCAwIDEgLjI4LS4xNiAxLjI0IDEuMjQgMCAwIDEgLjM4LS4wOGguMWExLjI4IDEuMjggMCAwIDEgMS4wNS41NGMuMDQuMDYuMDguMTMuMS4yYTEuMjQgMS4yNCAwIDAgMSAuMDkuMjcgMS4xOSAxLjE5IDAgMCAxLS4yLjkxbC0uMDQuMDUtLjU3Ljc5LS43Ljk5LS4yNy4zN2ExLjIzIDEuMjMgMCAwIDAtLjIuNDIgMS4wNiAxLjA2IDAgMCAwLS4wMi4zMXYuMDZhMS4xNyAxLjE3IDAgMCAwIC4xNi40Ny45My45MyAwIDAgMCAuMDcuMSAxLjUgMS41IDAgMCAwIC4xLjEybC4wNS4wNmguMDFhMS45NCAxLjk0IDAgMCAwIC4wOS4wOCAxIDEgMCAwIDAgLjE3LjFsLjA3LjA0YTEuMjUgMS4yNSAwIDAgMCAuNS4xaDYuOWMuMSAwIC4yIDAgLjI4LS4wMmwuMDctLjAyYTEuMzIgMS4zMiAwIDAgMCAuMzQtLjEzbC4xNi0uMS4wMy0uMDNhMS4yOSAxLjI5IDAgMCAwIC4yLS4yIDIuNDMgMi40MyAwIDAgMCAuMTItLjE3Yy4wMy0uMDMuMDUtLjA4LjA3LS4xMmwuMDItLjA1YTEuMjEgMS4yMSAwIDAgMCAuMDktLjN2LS4wOGwuMDEtLjA5YTEuMzIgMS4zMiAwIDAgMC0uMi0uNzNsLTEuNi0yLjY0LS4wNi0uMS0uMi0uMzItLjMzLS41NHYtLjAybC0uMDUtLjA3LTEuMy0yLjE1LS4xMi0uMDctLjA3LS4wNGE0Ljk0IDQuOTQgMCAwIDAtMi40Ni0uNjdjLTEuMDMgMC0xLjc2LjU3LTIuMjYgMS4yWiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMi4yOSAyMS4wOGMwIC4yOS0uMDkuNTgtLjI3Ljg0bC0xLjMxIDEuODRIN2wyLjUyLTMuNTNhMS41NCAxLjU0IDAgMCAxIDIuMS0uMzZjLjQzLjI4LjY2Ljc0LjY2IDEuMloiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTEuMTYgMjEuMjVhLjU2LjU2IDAgMCAxLS41Ny41NS41Ni41NiAwIDAgMS0uNTctLjU2LjU2LjU2IDAgMCAxIC41Ny0uNTUuNTYuNTYgMCAwIDEgLjU3LjU2WiIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjE1LjIzIiB4Mj0iMTkuMyIgeTE9IjI1Ljc4IiB5Mj0iNi4xMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2NTIyRjQiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzlCNkJGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1ODVGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMjIuNTkiIHgyPSIyNC44IiB5MT0iMjQuNzEiIHkyPSIxNS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0MjFGOEIiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzcyMzBGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzk3NzNGRiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==",webUrl:"https://asigna.io",chromeWebStoreUrl:"https://stx.asigna.io/"},{id:"FordefiProviders.UtxoProvider",name:"Fordefi",icon:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbD0iIzEwMTExNCIgZD0iTTAgMGg0MnY0MkgweiIvPgogIDxwYXRoIGQ9Ik0xOS40NyAyNi44OUg1djMuNTdhNC41NyA0LjU3IDAgMCAwIDQuNTggNC41N2g1LjgzbDQuMDYtOC4xNFoiIGZpbGw9IiM3OTk0RkYiLz4KICA8cGF0aCBkPSJNNSAxNy40aDI3LjU4bC0zLjIgNi43OEg1VjE3LjRaIiBmaWxsPSIjNDg2REZGIi8+CiAgPHBhdGggZD0iTTE0LjY3IDdINXY3LjY4aDMzVjdoLTkuNjd2NS43NGgtMlY3aC05LjY3djUuNzRoLTEuOTlWN1oiIGZpbGw9IiM1Q0QxRkEiLz4KPC9zdmc+Cg==",webUrl:"https://www.fordefi.com/",chromeWebStoreUrl:"https://chromewebstore.google.com/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle"}],fme={id:"WalletConnectProvider",name:"WalletConnect",icon:"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiIHg9IjAiIHk9IjAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDQwMHY0MDBIMFYwWiIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMzM5NkZGIiBkPSJNNDAwIDQwMEgwVjBoNDAwdjQwMFoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIyLjUyIDE0OC45N2M0Mi43OS00MS43MyAxMTIuMTctNDEuNzMgMTU0Ljk2IDBsNS4xNSA1LjAyYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTE3LjYyIDE3LjE4YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTcuMDktNi45Yy0yOS44NS0yOS4xMi03OC4yNS0yOS4xMi0xMDguMSAwbC03LjYgNy40YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTE3LjYxLTE3LjE5YTUuMjUgNS4yNSAwIDAgMSAwLTcuNTVsNS42NS01LjUxWm0xOTEuNCAzNS41MiAxNS42OCAxNS4zYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTcwLjcgNjguOTRhNS41OCA1LjU4IDAgMCAxLTcuNzUgMGwtNTAuMTgtNDguOTNhMS40IDEuNCAwIDAgMC0xLjk0IDBsLTUwLjE4IDQ4LjkzYTUuNTggNS41OCAwIDAgMS03Ljc0IDBsLTcwLjctNjguOTRhNS4yNSA1LjI1IDAgMCAxIDAtNy41NmwxNS42Ny0xNS4yOWE1LjU4IDUuNTggMCAwIDEgNy43NSAwbDUwLjE4IDQ4Ljk0Yy41NC41MiAxLjQuNTIgMS45NCAwbDUwLjE4LTQ4Ljk0YTUuNTggNS41OCAwIDAgMSA3Ljc0IDBsNTAuMTggNDguOTRjLjU0LjUyIDEuNC41MiAxLjk0IDBsNTAuMTgtNDguOTRhNS41OCA1LjU4IDAgMCAxIDcuNzUgMFoiLz48L2c+PC9zdmc+",webUrl:"https://walletconnect.com/",chromeWebStoreUrl:""};function Yl(){return Zb(A$())||window.StacksProvider||window.BlockstackProvider}function Vy(t,e){var n,r;return t instanceof e||((r=(n=t==null?void 0:t.constructor)==null?void 0:n.name)==null?void 0:r.toLowerCase())===e.name}function VT(t){return t?typeof t=="string"?t:Vy(t,Kl)?"mainnet":Vy(t,Kb)?"testnet":Vy(t,z4)||Vy(t,L2)?"devnet":"coreApiUrl"in t?t.coreApiUrl:"url"in t?t.url:"transactionVersion"in t?t.transactionVersion===Ro.Mainnet?"mainnet":"testnet":"mainnet":"mainnet"}function al(t){if(typeof t.type=="string")return t;switch(t.type){case pe.BoolFalse:return fN(!1);case pe.BoolTrue:return fN(!0);case pe.Int:return GW(t.value);case pe.UInt:return qW(t.value);case pe.Buffer:return QW(t.buffer);case pe.StringASCII:return ZW(t.data);case pe.StringUTF8:return JW(t.data);case pe.List:return YW(t.list.map(al));case pe.Tuple:return iG(Object.fromEntries(Object.entries(t.data).map(([n,r])=>[n,al(r)])));case pe.OptionalNone:return eG();case pe.OptionalSome:return tG(al(t.value));case pe.ResponseErr:return rG(al(t.value));case pe.ResponseOk:return nG(al(t.value));case pe.PrincipalContract:return KW(hN(t.address),t.contractName.content);case pe.PrincipalStandard:return XW(hN(t.address));default:let e=t;throw new Error(`Unknown clarity type: ${e}`)}}var pme="stx_updateProfile",gme=t=>t,mme=t=>t.profile;function yme(t,e=Yl()){Zl(pme,gme,mme)(t,e)}var wme="stx_signMessage",vme=t=>t,bme=t=>t;function Eme(t,e=Yl()){Zl(wme,vme,bme)(t,e)}var _me="stx_signStructuredMessage",Sme=t=>({message:al(t.message),domain:al(t.domain)}),xme=t=>t;function Ame(t,e=Yl()){if(t.domain.type!==pe.Tuple)throw new Error("Domain must be a tuple");Zl(_me,Sme,xme)(t,e)}var Cme="stx_callContract",Tme=t=>{var e;let n=(e=t.functionArgs)==null?void 0:e.map(r=>typeof r=="string"?sG(r):al(r)).map(r=>cx(r));return qi(ur({},t),{contract:`${t.contractAddress}.${t.contractName}`,functionArgs:n,network:VT(t.network),postConditionMode:NF(t.postConditionMode),postConditions:MF(t.postConditions),address:t.stxAddress})},Ime=t=>({txId:t.txid,txRaw:t.transaction,stacksTransaction:Gb(t.transaction)});function Mme(t,e=Yl()){Zl(Cme,Tme,Ime)(t,e)}var Nme="stx_deployContract",Pme=t=>qi(ur({},t),{name:t.contractName,clarityCode:t.codeBody,network:VT(t.network),postConditionMode:NF(t.postConditionMode),postConditions:MF(t.postConditions),address:t.stxAddress}),Dme=t=>({txId:t.txid,txRaw:t.transaction,stacksTransaction:Gb(t.transaction)});function Rme(t,e=Yl()){Zl(Nme,Pme,Dme)(t,e)}var Ome="stx_transferStx",Ume=t=>qi(ur({},t),{amount:t.amount.toString(),network:VT(t.network),address:t.stxAddress}),Lme=t=>({txId:t.txid,txRaw:t.transaction,stacksTransaction:Gb(t.transaction)});function kme(t,e=Yl()){Zl(Ome,Ume,Lme)(t,e)}var $me="stx_signTransaction",Bme=t=>qi(ur({},t),{transaction:t.txHex}),Fme=t=>qi(ur({},t),{stacksTransaction:Gb(t.transaction)});function zme(t,e=Yl()){Zl($me,Bme,Fme)(t,e)}function MF(t){if(typeof t<"u")return t.map(e=>typeof e=="string"?e:typeof e.type=="string"?qi(ur({},e),{amount:"amount"in e?e.amount.toString():void 0}):pt(J4(e)))}function NF(t){if(typeof t<"u"){if(typeof t=="string")return t;switch(t){case Ef.Allow:return"allow";case Ef.Deny:return"deny";default:let e=t;throw new Error(`Unknown post condition mode: ${e}. Should be one of: 'allow', 'deny'`)}}}var Hme=Yw,jme=Hme,PF="@stacks/connect",Vme={addresses:{stx:[],btc:[]},version:"0.0.1"},TR=t=>[...new Map(t.map(e=>[e.address,e])).values()].map(e=>{var n=ame(e,[]);return"publicKey"in n&&delete n.publicKey,"derivationPath"in n&&delete n.derivationPath,"tweakedPublicKey"in n&&delete n.tweakedPublicKey,n});function Wme(t){try{let e=Gme()||Vme,n=qi(ur({},e),{updatedAt:Date.now(),addresses:ur(ur({},e.addresses),t.addresses&&{stx:t.addresses.stx&&TR([...e.addresses.stx,...t.addresses.stx]),btc:t.addresses.btc&&TR([...e.addresses.btc,...t.addresses.btc])})});localStorage.setItem(PF,pt(Gl(JSON.stringify(n))))}catch(e){console.warn("Failed to store data in localStorage:",e)}}function Gme(){try{let t=localStorage.getItem(PF);return t?JSON.parse(Yf(Ft(t))):null}catch(t){return console.warn("Failed to get data from localStorage:",t),null}}var qme=["stx_signMessage","stx_signTransaction","stx_signStructuredMessage","stx_getAccounts","stx_getAddresses","stx_updateProfile","stx_transferStx","stx_transferSip10Ft","stx_transferSip9Nft","stx_callContract","stx_deployContract","sendTransfer","signPsbt","getAddresses"],SA={id:1,chainNamespace:"stacks",caipNetworkId:"stacks:1",name:"Stacks",nativeCurrency:{name:"STX",symbol:"STX",decimals:6},rpcUrls:{default:{http:["https://api.mainnet.hiro.so"]}}},Kme={projectId:"your_project_id",metadata:{name:"Universal Connector",description:"Universal Connector",url:"https://appkit.reown.com",icons:["https://appkit.reown.com/icon.png"]},networks:[{namespace:"stacks",chains:[SA],methods:qme,events:["stx_chainChanged","stx_accountsChanged"]},{namespace:"bip122",chains:[SF],methods:["signMessage","sendTransfer","signPsbt","getAccountAddresses"],events:["bip122_addressesChanged"]}]};function IR(t){return{jsonrpc:"2.0",id:1,result:t}}var Xme=class{constructor(t){this.connector=t}async connect(){try{let{session:t}=await this.connector.connect();return t}catch(t){throw console.error(">> WalletConnectProvider connect error",t),t}}get stacksAddresses(){var t;let e=(t=this.connector.provider)==null?void 0:t.session,n=e==null?void 0:e.sessionProperties.stacks_getAddresses,r=JSON.parse(n||"[]"),i=[...e.namespaces.stacks.accounts.map(s=>({address:s.split(":")[2],publicKey:""}))||[],...r||[]].sort(s=>s.publicKey?1:-1);return Array.from(new Map(i.map(s=>[s.address,s])).values())}get btcAddresses(){var t;let e=(t=this.connector.provider)==null?void 0:t.session,n=e==null?void 0:e.sessionProperties.bip122_getAccountAddresses,r=JSON.parse(n||"{}"),i=e.namespaces.bip122.accounts.map(o=>({address:o.split(":")[2],publicKey:""})),s=[...(r==null?void 0:r.payment.map(o=>qi(ur({},o),{purpose:"payment"})))||[],...(r==null?void 0:r.ordinal.map(o=>qi(ur({},o),{purpose:"ordinal"})))||[],...i||[]].sort(o=>o.publicKey?1:-1).sort((o,a)=>(o==null?void 0:o.address.length)-(a==null?void 0:a.address.length));return Array.from(new Map(s.map(o=>[o.address,o])).values())}async getAddresses(){var t;let e=(t=this.connector.provider)==null?void 0:t.session;e||(e=await this.connect());let n=this.stacksAddresses||[],r=this.btcAddresses||[];return{addresses:[...n,...r]}}validateRpcMethod(t){var e,n,r,i;if(["getAddresses","stx_getAccounts","stx_getAddresses"].includes(t))return;if(!((e=this.connector.provider)!=null&&e.session))throw new Error("WalletConnectProvider not connected. Please connect first.");let s=(n=this.connector.provider)==null?void 0:n.session.namespaces,o=((r=s.stacks)==null?void 0:r.methods)||[],a=((i=s.bip122)==null?void 0:i.methods)||[];if(![...o,...a].includes(t))throw new Error(`WalletConnectProvider does not support method ${t}. Please use a supported method.`)}getTargetCaipNetworkId(t){var e,n,r,i,s,o,a,c;if(["getAddresses","stx_getAccounts","stx_getAddresses"].includes(t)||(i=(r=(n=(e=this.connector.provider)==null?void 0:e.session)==null?void 0:n.namespaces)==null?void 0:r.stacks)!=null&&i.methods.includes(t))return SA.caipNetworkId;if((c=(a=(o=(s=this.connector.provider)==null?void 0:s.session)==null?void 0:o.namespaces)==null?void 0:a.bip122)!=null&&c.methods.includes(t))return SF.caipNetworkId;throw new Error(`WalletConnectProvider does not support method ${t}. Please use a supported method.`)}async request(t,e){var n,r,i,s;try{this.validateRpcMethod(t);let o=this.getTargetCaipNetworkId(t);switch(t){case"getAddresses":case"stx_getAddresses":case"stx_getAccounts":let a=await this.getAddresses();return IR(a);case"stx_signMessage":let c=((s=(i=(r=(n=this.connector.provider)==null?void 0:n.session)==null?void 0:r.namespaces)==null?void 0:i.stacks)==null?void 0:s.accounts[0]).split(":")[2],l=await this.connector.request({method:t,params:ur({address:c},e)},o);return IR(l);default:return await this.connector.request({method:t,params:e},o)}}catch(o){throw console.error(">> WalletConnectProvider request error",o),o}}async disconnect(){await this.connector.disconnect()}},Yme=async t=>{let e=await jT.init(qi(ur({},Kme),{projectId:t})),n=new Xme(e);window.WalletConnectProvider=n};async function xA(t,e,n){var r;try{let i=await t.request(e,n);if("error"in i)throw Gh.fromResponse(i.error);return i.result}catch(i){if(i instanceof Gh)throw i;if("jsonrpc"in i)throw Gh.fromResponse(i.error);let s=(r=i.code)!=null?r:-31e3;throw new Gh(i.message,s,i.data,i)}}function Zme(t){return t?async function(e,n,r){let i=await xA(e,n,r);if((n==="getAddresses"||n==="wallet_connect")&&"addresses"in i){let{stx:s,btc:o}=s0e(i.addresses).reduce((a,c)=>(a[c.address.startsWith("S")?"stx":"btc"].push(c),a),{stx:[],btc:[]});Wme({addresses:{stx:s,btc:o}})}return i}:xA}async function Jme(...t){let{options:e,method:n,params:r}=Qme(t),i=hme;e!=null&&e.walletConnectProjectId&&(await Yme(e.walletConnectProjectId).catch(console.error),i=[...i,fme]);let s=Object.assign({provider:pK(),defaultProviders:i,forceWalletSelect:!1,persistWalletSelect:!0,enableOverrides:!0,enableLocalStorage:!0},n0e(e)),o=r0e(s.enableOverrides,Zme(s.enableLocalStorage));if(s.provider&&!s.forceWalletSelect){let{method:a,params:c}=AA(s.provider,n,r,s.enableOverrides);return await o(s.provider,a,CA(c))}if(typeof window<"u")return nX(),new Promise((a,c)=>{let l=document.createElement("connect-modal");l.defaultProviders=MR(s.approvedProviderIds,i),l.installedProviders=MR(s.approvedProviderIds,fK(i));let u=document.body.style.overflow;document.body.style.overflow="hidden";let d=()=>{l.remove(),document.body.style.overflow=u};l.callback=f=>{d();let g=Zb(f),{method:m,params:y}=AA(g,n,r,s.enableOverrides),p=i0e(s.persistWalletSelect,f);a(o(g,m,CA(y)).then(p))},l.cancelCallback=()=>{d(),c(new Gh("User canceled the request",-31001))},document.body.appendChild(l);let h=f=>{f.key==="Escape"&&(document.removeEventListener("keydown",h),l.remove(),c(new Gh("User canceled the request",-31001)))};document.addEventListener("keydown",h)})}function Qme(t){return typeof t[0]=="string"?{method:t[0],params:t[1]}:{options:t[0],method:t[1],params:t[2]}}function MR(t,e){return t?e.filter(n=>t.includes(n.id)):e}function Zl(t,e,n){return(r,i)=>{if(!i)throw new Error("[Connect] No installed Stacks wallet found");let s=e(r),o=r,{method:a,params:c}=AA(i,t,s);xA(i,a,CA(c)).then(l=>{var u;let d=n(l);(u=o.onFinish)==null||u.call(o,d)}).catch(o.onCancel)}}function Wy(t){return e0e(t)||t0e(t)}function e0e(t){return"signMultipleTransactions"in t&&"createRepeatInscriptions"in t&&!(t!=null&&t.isLeather)&&!(t!=null&&t.isFordefi)}function t0e(t){return"isFordefi"in t&&!!t.isFordefi}function NR(t){return"isLeather"in t&&!!t.isLeather}function n0e(t){if(t===void 0)return{};let e={};for(let[n,r]of Object.entries(t))r!==void 0&&(e[n]=r);return e}function r0e(t,e){return t?async(n,r,i)=>{let s=await e(n,r,i),o=ur({},s);return s!==null&&"txId"in s&&s.txId&&!("txid"in o)&&(o.txid=s.txId),s!==null&&"hex"in s&&s.hex&&typeof s.hex=="string"&&!("psbt"in o)&&(o.psbt=Yb.encode(Ft(s.hex))),o}:e}function AA(t,e,n,r=!0){if(!r)return{method:e,params:n};if(Wy(t)&&["getAddresses","stx_getAddresses"].includes(e))return{method:"wallet_connect",params:n};if(Wy(t)&&e==="sendTransfer"){let i=qi(ur({},n),{recipients:n.recipients.map(s=>qi(ur({},s),{amount:Number(s.amount)})),network:void 0});return{method:e,params:i}}if(Wy(t)&&e==="signPsbt"){let i=n.signInputs;if(!i)return{method:e,params:n};let s={};for(let a of i)typeof a!="number"&&a.address&&(s[a.address]||(s[a.address]=[]),s[a.address].push(a.index));let o={psbt:n.psbt,signInputs:s,broadcast:n.broadcast};return{method:e,params:o}}if(!Wy(t)&&e==="stx_signMessage"){let i=ur({},n);return delete i.publicKey,{method:e,params:i}}if(NR(t)&&e==="sendTransfer"){let i=qi(ur({},n),{recipients:n.recipients.map(s=>qi(ur({},s),{amount:s.amount.toString()}))});return{method:e,params:i}}if(NR(t)&&e==="signPsbt"){let i={hex:pt(Yb.decode(n.psbt)),signAtIndex:n.signInputs.map(s=>typeof s=="number"?s:s.index),allowedSighash:n.allowedSighash,broadcast:n.broadcast,network:n.network};return{method:e,params:i}}return{method:e,params:n}}var PR=["stx-postcondition","ft-postcondition","nft-postcondition"];function CA(t){if(!t||typeof t!="object")return t;let e=ur({},t);for(let[n,r]of Object.entries(t)){if(typeof r=="bigint"){e[n]=r.toString();continue}if(r){if(Array.isArray(r)){e[n]=r.map(i=>typeof i=="bigint"?i.toString():!i||typeof i!="object"||!("type"in i)?i:PR.includes(i.type)?dN(i):cx(i));continue}typeof r=="object"&&"type"in r&&(e[n]=PR.includes(r.type)?dN(r):cx(r))}}return JSON.parse(JSON.stringify(e))}function i0e(t,e){return function(n){if(t)try{dK(e)}catch{}return n}}function s0e(t){return t.slice().sort((e,n)=>{let r="purpose"in e&&e.purpose==="payment",i="purpose"in n&&n.purpose==="payment";return r&&!i?-1:!r&&i?1:0})}typeof window<"u"&&(window.__CONNECT_VERSION__="__VERSION__");var Yw=async(t,e)=>{var n,r,i,s,o,a;let{onFinish:c,onCancel:l,userSession:u}=t,d=u0e(u);d.isUserSignedIn()&&d.signUserOut();try{let h=await Jme({provider:e,forceWalletSelect:!0},"getAddresses"),f=d.store.getSessionData();(n=f.userData)!=null||(f.userData={profile:{}}),(i=(r=f.userData).profile)!=null||(r.profile={}),(o=(s=f.userData.profile).stxAddress)!=null||(s.stxAddress={mainnet:"",testnet:""});let g=h.addresses.find(p=>(p==null?void 0:p.symbol)==="STX"||p.address.startsWith("S")).address.toUpperCase(),m=g[1]==="P"||g[1]==="M";Object.assign(f.userData.profile.stxAddress,{[m?"mainnet":"testnet"]:g});let y=(a=h.addresses.find(p=>{var v;return(v=p==null?void 0:p.address)!=null&&v.startsWith("S")?!1:p.purpose==="payment"?!0:DR(p==null?void 0:p.address)?h.addresses.every(w=>{var b;return((b=w==null?void 0:w.address)==null?void 0:b.startsWith("S"))||DR(w==null?void 0:w.address)}):!0}))==null?void 0:a.address;y&&(f.userData.profile.btcAddress=y),d.store.setSessionData(f),c==null||c({userSession:d,authResponsePayload:f.userData})}catch(h){console.error("[Connect] Error during auth request",h),l==null||l(h)}},o0e="blockstack-session",a0e=class{constructor(t){t!=null&&t.appConfig&&(this.appConfig=t.appConfig),typeof window>"u"&&typeof self>"u"?this.store=new c0e:this.store=new l0e}makeAuthRequestToken(){}generateAndStoreTransitKey(){}getAuthResponseToken(){}isSignInPending(){return!1}isUserSignedIn(){return!!this.store.getSessionData().userData}async handlePendingSignIn(){return Promise.resolve(this.loadUserData())}loadUserData(){let t=this.store.getSessionData().userData;if(!t)throw new i0("No user data found. Did the user sign in?");return t}encryptContent(){}decryptContent(){}signUserOut(t){this.store.deleteSessionData(),t&&typeof location<"u"&&location.href&&(location.href=t)}},DF=class{constructor(t){t&&this.setSessionData(t)}getSessionData(){throw new Error("Abstract class")}setSessionData(t){throw new Error("Abstract class")}deleteSessionData(){throw new Error("Abstract class")}},c0e=class extends DF{constructor(t){super(t),this.sessionData||this.setSessionData({})}getSessionData(){if(!this.sessionData)throw new i0("No session data was found.");return this.sessionData}setSessionData(t){return this.sessionData=t,!0}deleteSessionData(){return this.setSessionData({}),!0}},l0e=class extends DF{constructor(t){var e;super(t),this.key=typeof((e=t==null?void 0:t.storeOptions)==null?void 0:e.localStorageKey)=="string"?t.storeOptions.localStorageKey:o0e,localStorage.getItem(this.key)||this.setSessionData({})}getSessionData(){let t=localStorage.getItem(this.key);if(!t)throw new i0("No session data was found in localStorage");return JSON.parse(t)}setSessionData(t){return localStorage.setItem(this.key,JSON.stringify(t)),!0}deleteSessionData(){return localStorage.removeItem(this.key),this.setSessionData({}),!0}},u0e=t=>t||new a0e;function DR(t){let e=["bc1p","tb1p","bcrt1p"],n=[62,62,64],r=e.findIndex(i=>t.startsWith(i));return r===-1?!1:t.length===n[r]}var d0e=(t=>(t.ContractCall="contract_call",t.ContractDeploy="smart_contract",t.STXTransfer="token_transfer",t))(d0e||{}),h0e=(t=>(t.BUFFER="buffer",t.UINT="uint",t.INT="int",t.PRINCIPAL="principal",t.BOOL="bool",t))(h0e||{}),RF=(t=>(t[t.DEFAULT=0]="DEFAULT",t[t.ALL=1]="ALL",t[t.NONE=2]="NONE",t[t.SINGLE=3]="SINGLE",t[t.ANYONECANPAY=128]="ANYONECANPAY",t))(RF||{}),f0e="signPsbt",p0e=t=>{var e;return{psbt:Yb.encode(Ft(t.hex)),signInputs:typeof t.signAtIndex=="number"?[t.signAtIndex]:t.signAtIndex,allowedSighash:(e=t.allowedSighash)==null?void 0:e.map(n=>RF[n])}},g0e=t=>({hex:pt(Yb.decode(t.psbt))});function m0e(t,e=Yl()){Zl(f0e,p0e,g0e)(t,e)}var y0e=Object.defineProperty,w0e=Object.defineProperties,v0e=Object.getOwnPropertyDescriptors,RR=Object.getOwnPropertySymbols,b0e=Object.prototype.hasOwnProperty,E0e=Object.prototype.propertyIsEnumerable,OR=(t,e,n)=>e in t?y0e(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Ur=(t,e)=>{for(var n in e||(e={}))b0e.call(e,n)&&OR(t,n,e[n]);if(RR)for(var n of RR(e))E0e.call(e,n)&&OR(t,n,e[n]);return t},us=(t,e)=>w0e(t,v0e(e)),OF={isOpen:!1,isAuthenticating:!1,authData:void 0,userSession:void 0,authOptions:{redirectTo:"",manifestPath:"",onFinish:()=>null,authOrigin:void 0,sendToSignIn:!1,appDetails:{name:"",icon:""}}},_0e=(t,{type:e,payload:n})=>{switch(e){case"data/update-auth-options":return us(Ur({},t),{authOptions:Ur(Ur({},t.authOptions),n)});default:throw new Error(`Unhandled action type: ${e}`)}},UF=Pt.createContext(OF),LF=Pt.createContext(void 0),S0e=({authOptions:t,children:e})=>{let[n,r]=Pt.useReducer(_0e,OF);return iv.createElement(UF.Provider,{value:us(Ur({},n),{authOptions:t})},iv.createElement(LF.Provider,{value:r},e))},x0e=({authOptions:t,children:e})=>iv.createElement(S0e,{authOptions:t},e),A0e=()=>{let t=Pt.useContext(LF);if(!t)throw new Error("This must be used within the ConnectProvider component.");return t},C0e=()=>{let{isOpen:t,isAuthenticating:e,authData:n,authOptions:r,userSession:i}=Pt.useContext(UF),s=A0e(),o=p=>s({type:"data/update-auth-options",payload:p}),a=(p,v,w)=>{if(p){let b=us(Ur(Ur({},r),v),{onFinish:S=>{var x;(x=r.onFinish)==null||x.call(r,S)},sendToSignIn:!0});Yw(b,w);return}else jme(us(Ur({},r),{sendToSignIn:!1}));r&&o(r)},c=(p={},v)=>{Yw(us(Ur(Ur({},r),p),{onFinish:w=>{var b;(b=r.onFinish)==null||b.call(r,w)}}),v)};function l(p,v){return Mme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function u(p,v){return Rme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function d(p,v){return kme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function h(p,v){return yme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function f(p,v){return zme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function g(p,v){return Eme(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function m(p,v){return Ame(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}function y(p,v){return m0e(us(Ur({},p),{authOrigin:r.authOrigin,appDetails:r.appDetails}),v)}return{isOpen:t,isAuthenticating:e,authData:n,authOptions:r,userSession:i,doOpenAuth:a,doAuth:c,authenticate:Yw,doContractCall:l,doContractDeploy:u,doSTXTransfer:d,doSignTransaction:f,doProfileUpdate:h,sign:g,signStructuredData:m,signPsbt:y}};/** + * @license + * Copyright 2010-2024 Three.js Authors + * SPDX-License-Identifier: MIT + */const WT="170",T0e=0,UR=1,I0e=2,kF=1,M0e=2,qa=3,zl=0,Ji=1,Ja=2,Pl=0,af=1,LR=2,kR=3,$R=4,N0e=5,Tu=100,P0e=101,D0e=102,R0e=103,O0e=104,U0e=200,L0e=201,k0e=202,$0e=203,TA=204,IA=205,B0e=206,F0e=207,z0e=208,H0e=209,j0e=210,V0e=211,W0e=212,G0e=213,q0e=214,MA=0,NA=1,PA=2,Bf=3,DA=4,RA=5,OA=6,UA=7,$F=0,K0e=1,X0e=2,Dl=0,Y0e=1,Z0e=2,J0e=3,Q0e=4,eye=5,tye=6,nye=7,BF=300,Ff=301,zf=302,LA=303,kA=304,E1=306,$A=1e3,zu=1001,BA=1002,zo=1003,rye=1004,Gy=1005,ga=1006,g_=1007,Hu=1008,wc=1009,FF=1010,zF=1011,Jm=1012,GT=1013,pd=1014,nc=1015,N0=1016,qT=1017,KT=1018,Hf=1020,HF=35902,jF=1021,VF=1022,Lo=1023,WF=1024,GF=1025,cf=1026,jf=1027,qF=1028,XT=1029,KF=1030,YT=1031,ZT=1033,Zw=33776,Jw=33777,Qw=33778,ev=33779,FA=35840,zA=35841,HA=35842,jA=35843,VA=36196,WA=37492,GA=37496,qA=37808,KA=37809,XA=37810,YA=37811,ZA=37812,JA=37813,QA=37814,eC=37815,tC=37816,nC=37817,rC=37818,iC=37819,sC=37820,oC=37821,tv=36492,aC=36494,cC=36495,XF=36283,lC=36284,uC=36285,dC=36286,iye=3200,sye=3201,YF=0,oye=1,cl="",Gs="srgb",up="srgb-linear",_1="linear",vn="srgb",rh=7680,BR=519,aye=512,cye=513,lye=514,ZF=515,uye=516,dye=517,hye=518,fye=519,FR=35044,zR="300 es",rc=2e3,hb=2001;class dp{addEventListener(e,n){this._listeners===void 0&&(this._listeners={});const r=this._listeners;r[e]===void 0&&(r[e]=[]),r[e].indexOf(n)===-1&&r[e].push(n)}hasEventListener(e,n){if(this._listeners===void 0)return!1;const r=this._listeners;return r[e]!==void 0&&r[e].indexOf(n)!==-1}removeEventListener(e,n){if(this._listeners===void 0)return;const i=this._listeners[e];if(i!==void 0){const s=i.indexOf(n);s!==-1&&i.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const r=this._listeners[e.type];if(r!==void 0){e.target=this;const i=r.slice(0);for(let s=0,o=i.length;s>8&255]+ii[t>>16&255]+ii[t>>24&255]+"-"+ii[e&255]+ii[e>>8&255]+"-"+ii[e>>16&15|64]+ii[e>>24&255]+"-"+ii[n&63|128]+ii[n>>8&255]+"-"+ii[n>>16&255]+ii[n>>24&255]+ii[r&255]+ii[r>>8&255]+ii[r>>16&255]+ii[r>>24&255]).toLowerCase()}function Vi(t,e,n){return Math.max(e,Math.min(n,t))}function pye(t,e){return(t%e+e)%e}function m_(t,e,n){return(1-n)*t+n*e}function Wp(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function $i(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(t*4294967295);case Uint16Array:return Math.round(t*65535);case Uint8Array:return Math.round(t*255);case Int32Array:return Math.round(t*2147483647);case Int16Array:return Math.round(t*32767);case Int8Array:return Math.round(t*127);default:throw new Error("Invalid component type.")}}class Wt{constructor(e=0,n=0){Wt.prototype.isVector2=!0,this.x=e,this.y=n}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,n){return this.x=e,this.y=n,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const n=this.x,r=this.y,i=e.elements;return this.x=i[0]*n+i[3]*r+i[6],this.y=i[1]*n+i[4]*r+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this}clampLength(e,n){const r=this.length();return this.divideScalar(r||1).multiplyScalar(Math.max(e,Math.min(n,r)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const n=Math.sqrt(this.lengthSq()*e.lengthSq());if(n===0)return Math.PI/2;const r=this.dot(e)/n;return Math.acos(Vi(r,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const n=this.x-e.x,r=this.y-e.y;return n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this}lerpVectors(e,n,r){return this.x=e.x+(n.x-e.x)*r,this.y=e.y+(n.y-e.y)*r,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this}rotateAround(e,n){const r=Math.cos(n),i=Math.sin(n),s=this.x-e.x,o=this.y-e.y;return this.x=s*r-o*i+e.x,this.y=s*i+o*r+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Ct{constructor(e,n,r,i,s,o,a,c,l){Ct.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,n,r,i,s,o,a,c,l)}set(e,n,r,i,s,o,a,c,l){const u=this.elements;return u[0]=e,u[1]=i,u[2]=a,u[3]=n,u[4]=s,u[5]=c,u[6]=r,u[7]=o,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const n=this.elements,r=e.elements;return n[0]=r[0],n[1]=r[1],n[2]=r[2],n[3]=r[3],n[4]=r[4],n[5]=r[5],n[6]=r[6],n[7]=r[7],n[8]=r[8],this}extractBasis(e,n,r){return e.setFromMatrix3Column(this,0),n.setFromMatrix3Column(this,1),r.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const n=e.elements;return this.set(n[0],n[4],n[8],n[1],n[5],n[9],n[2],n[6],n[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,n){const r=e.elements,i=n.elements,s=this.elements,o=r[0],a=r[3],c=r[6],l=r[1],u=r[4],d=r[7],h=r[2],f=r[5],g=r[8],m=i[0],y=i[3],p=i[6],v=i[1],w=i[4],b=i[7],S=i[2],x=i[5],T=i[8];return s[0]=o*m+a*v+c*S,s[3]=o*y+a*w+c*x,s[6]=o*p+a*b+c*T,s[1]=l*m+u*v+d*S,s[4]=l*y+u*w+d*x,s[7]=l*p+u*b+d*T,s[2]=h*m+f*v+g*S,s[5]=h*y+f*w+g*x,s[8]=h*p+f*b+g*T,this}multiplyScalar(e){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=e,n[4]*=e,n[7]*=e,n[2]*=e,n[5]*=e,n[8]*=e,this}determinant(){const e=this.elements,n=e[0],r=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8];return n*o*u-n*a*l-r*s*u+r*a*c+i*s*l-i*o*c}invert(){const e=this.elements,n=e[0],r=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],d=u*o-a*l,h=a*c-u*s,f=l*s-o*c,g=n*d+r*h+i*f;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/g;return e[0]=d*m,e[1]=(i*l-u*r)*m,e[2]=(a*r-i*o)*m,e[3]=h*m,e[4]=(u*n-i*c)*m,e[5]=(i*s-a*n)*m,e[6]=f*m,e[7]=(r*c-l*n)*m,e[8]=(o*n-r*s)*m,this}transpose(){let e;const n=this.elements;return e=n[1],n[1]=n[3],n[3]=e,e=n[2],n[2]=n[6],n[6]=e,e=n[5],n[5]=n[7],n[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const n=this.elements;return e[0]=n[0],e[1]=n[3],e[2]=n[6],e[3]=n[1],e[4]=n[4],e[5]=n[7],e[6]=n[2],e[7]=n[5],e[8]=n[8],this}setUvTransform(e,n,r,i,s,o,a){const c=Math.cos(s),l=Math.sin(s);return this.set(r*c,r*l,-r*(c*o+l*a)+o+e,-i*l,i*c,-i*(-l*o+c*a)+a+n,0,0,1),this}scale(e,n){return this.premultiply(y_.makeScale(e,n)),this}rotate(e){return this.premultiply(y_.makeRotation(-e)),this}translate(e,n){return this.premultiply(y_.makeTranslation(e,n)),this}makeTranslation(e,n){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,n,0,0,1),this}makeRotation(e){const n=Math.cos(e),r=Math.sin(e);return this.set(n,-r,0,r,n,0,0,0,1),this}makeScale(e,n){return this.set(e,0,0,0,n,0,0,0,1),this}equals(e){const n=this.elements,r=e.elements;for(let i=0;i<9;i++)if(n[i]!==r[i])return!1;return!0}fromArray(e,n=0){for(let r=0;r<9;r++)this.elements[r]=e[r+n];return this}toArray(e=[],n=0){const r=this.elements;return e[n]=r[0],e[n+1]=r[1],e[n+2]=r[2],e[n+3]=r[3],e[n+4]=r[4],e[n+5]=r[5],e[n+6]=r[6],e[n+7]=r[7],e[n+8]=r[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const y_=new Ct;function JF(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function fb(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function gye(){const t=fb("canvas");return t.style.display="block",t}const HR={};function dg(t){t in HR||(HR[t]=!0,console.warn(t))}function mye(t,e,n){return new Promise(function(r,i){function s(){switch(t.clientWaitSync(e,t.SYNC_FLUSH_COMMANDS_BIT,0)){case t.WAIT_FAILED:i();break;case t.TIMEOUT_EXPIRED:setTimeout(s,n);break;default:r()}}setTimeout(s,n)})}function yye(t){const e=t.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function wye(t){const e=t.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const Kt={enabled:!0,workingColorSpace:up,spaces:{},convert:function(t,e,n){return this.enabled===!1||e===n||!e||!n||(this.spaces[e].transfer===vn&&(t.r=cc(t.r),t.g=cc(t.g),t.b=cc(t.b)),this.spaces[e].primaries!==this.spaces[n].primaries&&(t.applyMatrix3(this.spaces[e].toXYZ),t.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===vn&&(t.r=lf(t.r),t.g=lf(t.g),t.b=lf(t.b))),t},fromWorkingColorSpace:function(t,e){return this.convert(t,this.workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this.workingColorSpace)},getPrimaries:function(t){return this.spaces[t].primaries},getTransfer:function(t){return t===cl?_1:this.spaces[t].transfer},getLuminanceCoefficients:function(t,e=this.workingColorSpace){return t.fromArray(this.spaces[e].luminanceCoefficients)},define:function(t){Object.assign(this.spaces,t)},_getMatrix:function(t,e,n){return t.copy(this.spaces[e].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(t){return this.spaces[t].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(t=this.workingColorSpace){return this.spaces[t].workingColorSpaceConfig.unpackColorSpace}};function cc(t){return t<.04045?t*.0773993808:Math.pow(t*.9478672986+.0521327014,2.4)}function lf(t){return t<.0031308?t*12.92:1.055*Math.pow(t,.41666)-.055}const jR=[.64,.33,.3,.6,.15,.06],VR=[.2126,.7152,.0722],WR=[.3127,.329],GR=new Ct().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),qR=new Ct().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);Kt.define({[up]:{primaries:jR,whitePoint:WR,transfer:_1,toXYZ:GR,fromXYZ:qR,luminanceCoefficients:VR,workingColorSpaceConfig:{unpackColorSpace:Gs},outputColorSpaceConfig:{drawingBufferColorSpace:Gs}},[Gs]:{primaries:jR,whitePoint:WR,transfer:vn,toXYZ:GR,fromXYZ:qR,luminanceCoefficients:VR,outputColorSpaceConfig:{drawingBufferColorSpace:Gs}}});let ih;class vye{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{ih===void 0&&(ih=fb("canvas")),ih.width=e.width,ih.height=e.height;const r=ih.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),n=ih}return n.width>2048||n.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const n=fb("canvas");n.width=e.width,n.height=e.height;const r=n.getContext("2d");r.drawImage(e,0,0,e.width,e.height);const i=r.getImageData(0,0,e.width,e.height),s=i.data;for(let o=0;o0&&(r.userData=this.userData),n||(e.textures[this.uuid]=r),r}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==BF)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case $A:e.x=e.x-Math.floor(e.x);break;case zu:e.x=e.x<0?0:1;break;case BA:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case $A:e.y=e.y-Math.floor(e.y);break;case zu:e.y=e.y<0?0:1;break;case BA:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}Qi.DEFAULT_IMAGE=null;Qi.DEFAULT_MAPPING=BF;Qi.DEFAULT_ANISOTROPY=1;class _n{constructor(e=0,n=0,r=0,i=1){_n.prototype.isVector4=!0,this.x=e,this.y=n,this.z=r,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,n,r,i){return this.x=e,this.y=n,this.z=r,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;case 3:this.w=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this.z=e.z+n.z,this.w=e.w+n.w,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this.z+=e.z*n,this.w+=e.w*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this.z=e.z-n.z,this.w=e.w-n.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const n=this.x,r=this.y,i=this.z,s=this.w,o=e.elements;return this.x=o[0]*n+o[4]*r+o[8]*i+o[12]*s,this.y=o[1]*n+o[5]*r+o[9]*i+o[13]*s,this.z=o[2]*n+o[6]*r+o[10]*i+o[14]*s,this.w=o[3]*n+o[7]*r+o[11]*i+o[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const n=Math.sqrt(1-e.w*e.w);return n<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/n,this.y=e.y/n,this.z=e.z/n),this}setAxisAngleFromRotationMatrix(e){let n,r,i,s;const c=e.elements,l=c[0],u=c[4],d=c[8],h=c[1],f=c[5],g=c[9],m=c[2],y=c[6],p=c[10];if(Math.abs(u-h)<.01&&Math.abs(d-m)<.01&&Math.abs(g-y)<.01){if(Math.abs(u+h)<.1&&Math.abs(d+m)<.1&&Math.abs(g+y)<.1&&Math.abs(l+f+p-3)<.1)return this.set(1,0,0,0),this;n=Math.PI;const w=(l+1)/2,b=(f+1)/2,S=(p+1)/2,x=(u+h)/4,T=(d+m)/4,N=(g+y)/4;return w>b&&w>S?w<.01?(r=0,i=.707106781,s=.707106781):(r=Math.sqrt(w),i=x/r,s=T/r):b>S?b<.01?(r=.707106781,i=0,s=.707106781):(i=Math.sqrt(b),r=x/i,s=N/i):S<.01?(r=.707106781,i=.707106781,s=0):(s=Math.sqrt(S),r=T/s,i=N/s),this.set(r,i,s,n),this}let v=Math.sqrt((y-g)*(y-g)+(d-m)*(d-m)+(h-u)*(h-u));return Math.abs(v)<.001&&(v=1),this.x=(y-g)/v,this.y=(d-m)/v,this.z=(h-u)/v,this.w=Math.acos((l+f+p-1)/2),this}setFromMatrixPosition(e){const n=e.elements;return this.x=n[12],this.y=n[13],this.z=n[14],this.w=n[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this.z=Math.max(e.z,Math.min(n.z,this.z)),this.w=Math.max(e.w,Math.min(n.w,this.w)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this.z=Math.max(e,Math.min(n,this.z)),this.w=Math.max(e,Math.min(n,this.w)),this}clampLength(e,n){const r=this.length();return this.divideScalar(r||1).multiplyScalar(Math.max(e,Math.min(n,r)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this.z+=(e.z-this.z)*n,this.w+=(e.w-this.w)*n,this}lerpVectors(e,n,r){return this.x=e.x+(n.x-e.x)*r,this.y=e.y+(n.y-e.y)*r,this.z=e.z+(n.z-e.z)*r,this.w=e.w+(n.w-e.w)*r,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this.z=e[n+2],this.w=e[n+3],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e[n+2]=this.z,e[n+3]=this.w,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this.z=e.getZ(n),this.w=e.getW(n),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class _ye extends dp{constructor(e=1,n=1,r={}){super(),this.isRenderTarget=!0,this.width=e,this.height=n,this.depth=1,this.scissor=new _n(0,0,e,n),this.scissorTest=!1,this.viewport=new _n(0,0,e,n);const i={width:e,height:n,depth:1};r=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:ga,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},r);const s=new Qi(i,r.mapping,r.wrapS,r.wrapT,r.magFilter,r.minFilter,r.format,r.type,r.anisotropy,r.colorSpace);s.flipY=!1,s.generateMipmaps=r.generateMipmaps,s.internalFormat=r.internalFormat,this.textures=[];const o=r.count;for(let a=0;a=0?1:-1,w=1-p*p;if(w>Number.EPSILON){const S=Math.sqrt(w),x=Math.atan2(S,p*v);y=Math.sin(y*x)/S,a=Math.sin(a*x)/S}const b=a*v;if(c=c*y+h*b,l=l*y+f*b,u=u*y+g*b,d=d*y+m*b,y===1-a){const S=1/Math.sqrt(c*c+l*l+u*u+d*d);c*=S,l*=S,u*=S,d*=S}}e[n]=c,e[n+1]=l,e[n+2]=u,e[n+3]=d}static multiplyQuaternionsFlat(e,n,r,i,s,o){const a=r[i],c=r[i+1],l=r[i+2],u=r[i+3],d=s[o],h=s[o+1],f=s[o+2],g=s[o+3];return e[n]=a*g+u*d+c*f-l*h,e[n+1]=c*g+u*h+l*d-a*f,e[n+2]=l*g+u*f+a*h-c*d,e[n+3]=u*g-a*d-c*h-l*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,n,r,i){return this._x=e,this._y=n,this._z=r,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,n=!0){const r=e._x,i=e._y,s=e._z,o=e._order,a=Math.cos,c=Math.sin,l=a(r/2),u=a(i/2),d=a(s/2),h=c(r/2),f=c(i/2),g=c(s/2);switch(o){case"XYZ":this._x=h*u*d+l*f*g,this._y=l*f*d-h*u*g,this._z=l*u*g+h*f*d,this._w=l*u*d-h*f*g;break;case"YXZ":this._x=h*u*d+l*f*g,this._y=l*f*d-h*u*g,this._z=l*u*g-h*f*d,this._w=l*u*d+h*f*g;break;case"ZXY":this._x=h*u*d-l*f*g,this._y=l*f*d+h*u*g,this._z=l*u*g+h*f*d,this._w=l*u*d-h*f*g;break;case"ZYX":this._x=h*u*d-l*f*g,this._y=l*f*d+h*u*g,this._z=l*u*g-h*f*d,this._w=l*u*d+h*f*g;break;case"YZX":this._x=h*u*d+l*f*g,this._y=l*f*d+h*u*g,this._z=l*u*g-h*f*d,this._w=l*u*d-h*f*g;break;case"XZY":this._x=h*u*d-l*f*g,this._y=l*f*d-h*u*g,this._z=l*u*g+h*f*d,this._w=l*u*d+h*f*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return n===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,n){const r=n/2,i=Math.sin(r);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(r),this._onChangeCallback(),this}setFromRotationMatrix(e){const n=e.elements,r=n[0],i=n[4],s=n[8],o=n[1],a=n[5],c=n[9],l=n[2],u=n[6],d=n[10],h=r+a+d;if(h>0){const f=.5/Math.sqrt(h+1);this._w=.25/f,this._x=(u-c)*f,this._y=(s-l)*f,this._z=(o-i)*f}else if(r>a&&r>d){const f=2*Math.sqrt(1+r-a-d);this._w=(u-c)/f,this._x=.25*f,this._y=(i+o)/f,this._z=(s+l)/f}else if(a>d){const f=2*Math.sqrt(1+a-r-d);this._w=(s-l)/f,this._x=(i+o)/f,this._y=.25*f,this._z=(c+u)/f}else{const f=2*Math.sqrt(1+d-r-a);this._w=(o-i)/f,this._x=(s+l)/f,this._y=(c+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,n){let r=e.dot(n)+1;return rMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=r):(this._x=0,this._y=-e.z,this._z=e.y,this._w=r)):(this._x=e.y*n.z-e.z*n.y,this._y=e.z*n.x-e.x*n.z,this._z=e.x*n.y-e.y*n.x,this._w=r),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Vi(this.dot(e),-1,1)))}rotateTowards(e,n){const r=this.angleTo(e);if(r===0)return this;const i=Math.min(1,n/r);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,n){const r=e._x,i=e._y,s=e._z,o=e._w,a=n._x,c=n._y,l=n._z,u=n._w;return this._x=r*u+o*a+i*l-s*c,this._y=i*u+o*c+s*a-r*l,this._z=s*u+o*l+r*c-i*a,this._w=o*u-r*a-i*c-s*l,this._onChangeCallback(),this}slerp(e,n){if(n===0)return this;if(n===1)return this.copy(e);const r=this._x,i=this._y,s=this._z,o=this._w;let a=o*e._w+r*e._x+i*e._y+s*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=o,this._x=r,this._y=i,this._z=s,this;const c=1-a*a;if(c<=Number.EPSILON){const f=1-n;return this._w=f*o+n*this._w,this._x=f*r+n*this._x,this._y=f*i+n*this._y,this._z=f*s+n*this._z,this.normalize(),this}const l=Math.sqrt(c),u=Math.atan2(l,a),d=Math.sin((1-n)*u)/l,h=Math.sin(n*u)/l;return this._w=o*d+this._w*h,this._x=r*d+this._x*h,this._y=i*d+this._y*h,this._z=s*d+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,n,r){return this.copy(e).slerp(n,r)}random(){const e=2*Math.PI*Math.random(),n=2*Math.PI*Math.random(),r=Math.random(),i=Math.sqrt(1-r),s=Math.sqrt(r);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(n),s*Math.cos(n))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,n=0){return this._x=e[n],this._y=e[n+1],this._z=e[n+2],this._w=e[n+3],this._onChangeCallback(),this}toArray(e=[],n=0){return e[n]=this._x,e[n+1]=this._y,e[n+2]=this._z,e[n+3]=this._w,e}fromBufferAttribute(e,n){return this._x=e.getX(n),this._y=e.getY(n),this._z=e.getZ(n),this._w=e.getW(n),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ee{constructor(e=0,n=0,r=0){ee.prototype.isVector3=!0,this.x=e,this.y=n,this.z=r}set(e,n,r){return r===void 0&&(r=this.z),this.x=e,this.y=n,this.z=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,n){switch(e){case 0:this.x=n;break;case 1:this.y=n;break;case 2:this.z=n;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,n){return this.x=e.x+n.x,this.y=e.y+n.y,this.z=e.z+n.z,this}addScaledVector(e,n){return this.x+=e.x*n,this.y+=e.y*n,this.z+=e.z*n,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,n){return this.x=e.x-n.x,this.y=e.y-n.y,this.z=e.z-n.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,n){return this.x=e.x*n.x,this.y=e.y*n.y,this.z=e.z*n.z,this}applyEuler(e){return this.applyQuaternion(KR.setFromEuler(e))}applyAxisAngle(e,n){return this.applyQuaternion(KR.setFromAxisAngle(e,n))}applyMatrix3(e){const n=this.x,r=this.y,i=this.z,s=e.elements;return this.x=s[0]*n+s[3]*r+s[6]*i,this.y=s[1]*n+s[4]*r+s[7]*i,this.z=s[2]*n+s[5]*r+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const n=this.x,r=this.y,i=this.z,s=e.elements,o=1/(s[3]*n+s[7]*r+s[11]*i+s[15]);return this.x=(s[0]*n+s[4]*r+s[8]*i+s[12])*o,this.y=(s[1]*n+s[5]*r+s[9]*i+s[13])*o,this.z=(s[2]*n+s[6]*r+s[10]*i+s[14])*o,this}applyQuaternion(e){const n=this.x,r=this.y,i=this.z,s=e.x,o=e.y,a=e.z,c=e.w,l=2*(o*i-a*r),u=2*(a*n-s*i),d=2*(s*r-o*n);return this.x=n+c*l+o*d-a*u,this.y=r+c*u+a*l-s*d,this.z=i+c*d+s*u-o*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const n=this.x,r=this.y,i=this.z,s=e.elements;return this.x=s[0]*n+s[4]*r+s[8]*i,this.y=s[1]*n+s[5]*r+s[9]*i,this.z=s[2]*n+s[6]*r+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,n){return this.x=Math.max(e.x,Math.min(n.x,this.x)),this.y=Math.max(e.y,Math.min(n.y,this.y)),this.z=Math.max(e.z,Math.min(n.z,this.z)),this}clampScalar(e,n){return this.x=Math.max(e,Math.min(n,this.x)),this.y=Math.max(e,Math.min(n,this.y)),this.z=Math.max(e,Math.min(n,this.z)),this}clampLength(e,n){const r=this.length();return this.divideScalar(r||1).multiplyScalar(Math.max(e,Math.min(n,r)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,n){return this.x+=(e.x-this.x)*n,this.y+=(e.y-this.y)*n,this.z+=(e.z-this.z)*n,this}lerpVectors(e,n,r){return this.x=e.x+(n.x-e.x)*r,this.y=e.y+(n.y-e.y)*r,this.z=e.z+(n.z-e.z)*r,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,n){const r=e.x,i=e.y,s=e.z,o=n.x,a=n.y,c=n.z;return this.x=i*c-s*a,this.y=s*o-r*c,this.z=r*a-i*o,this}projectOnVector(e){const n=e.lengthSq();if(n===0)return this.set(0,0,0);const r=e.dot(this)/n;return this.copy(e).multiplyScalar(r)}projectOnPlane(e){return v_.copy(this).projectOnVector(e),this.sub(v_)}reflect(e){return this.sub(v_.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const n=Math.sqrt(this.lengthSq()*e.lengthSq());if(n===0)return Math.PI/2;const r=this.dot(e)/n;return Math.acos(Vi(r,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const n=this.x-e.x,r=this.y-e.y,i=this.z-e.z;return n*n+r*r+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,n,r){const i=Math.sin(n)*e;return this.x=i*Math.sin(r),this.y=Math.cos(n)*e,this.z=i*Math.cos(r),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,n,r){return this.x=e*Math.sin(n),this.y=r,this.z=e*Math.cos(n),this}setFromMatrixPosition(e){const n=e.elements;return this.x=n[12],this.y=n[13],this.z=n[14],this}setFromMatrixScale(e){const n=this.setFromMatrixColumn(e,0).length(),r=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=n,this.y=r,this.z=i,this}setFromMatrixColumn(e,n){return this.fromArray(e.elements,n*4)}setFromMatrix3Column(e,n){return this.fromArray(e.elements,n*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,n=0){return this.x=e[n],this.y=e[n+1],this.z=e[n+2],this}toArray(e=[],n=0){return e[n]=this.x,e[n+1]=this.y,e[n+2]=this.z,e}fromBufferAttribute(e,n){return this.x=e.getX(n),this.y=e.getY(n),this.z=e.getZ(n),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,n=Math.random()*2-1,r=Math.sqrt(1-n*n);return this.x=r*Math.cos(e),this.y=n,this.z=r*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const v_=new ee,KR=new D0;class R0{constructor(e=new ee(1/0,1/0,1/0),n=new ee(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=n}set(e,n){return this.min.copy(e),this.max.copy(n),this}setFromArray(e){this.makeEmpty();for(let n=0,r=e.length;n=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,n){return n.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Eo),Eo.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let n,r;return e.normal.x>0?(n=e.normal.x*this.min.x,r=e.normal.x*this.max.x):(n=e.normal.x*this.max.x,r=e.normal.x*this.min.x),e.normal.y>0?(n+=e.normal.y*this.min.y,r+=e.normal.y*this.max.y):(n+=e.normal.y*this.max.y,r+=e.normal.y*this.min.y),e.normal.z>0?(n+=e.normal.z*this.min.z,r+=e.normal.z*this.max.z):(n+=e.normal.z*this.max.z,r+=e.normal.z*this.min.z),n<=-e.constant&&r>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Gp),Ky.subVectors(this.max,Gp),sh.subVectors(e.a,Gp),oh.subVectors(e.b,Gp),ah.subVectors(e.c,Gp),jc.subVectors(oh,sh),Vc.subVectors(ah,oh),lu.subVectors(sh,ah);let n=[0,-jc.z,jc.y,0,-Vc.z,Vc.y,0,-lu.z,lu.y,jc.z,0,-jc.x,Vc.z,0,-Vc.x,lu.z,0,-lu.x,-jc.y,jc.x,0,-Vc.y,Vc.x,0,-lu.y,lu.x,0];return!b_(n,sh,oh,ah,Ky)||(n=[1,0,0,0,1,0,0,0,1],!b_(n,sh,oh,ah,Ky))?!1:(Xy.crossVectors(jc,Vc),n=[Xy.x,Xy.y,Xy.z],b_(n,sh,oh,ah,Ky))}clampPoint(e,n){return n.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Eo).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Eo).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:($a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),$a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),$a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),$a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),$a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),$a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),$a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),$a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints($a),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const $a=[new ee,new ee,new ee,new ee,new ee,new ee,new ee,new ee],Eo=new ee,qy=new R0,sh=new ee,oh=new ee,ah=new ee,jc=new ee,Vc=new ee,lu=new ee,Gp=new ee,Ky=new ee,Xy=new ee,uu=new ee;function b_(t,e,n,r,i){for(let s=0,o=t.length-3;s<=o;s+=3){uu.fromArray(t,s);const a=i.x*Math.abs(uu.x)+i.y*Math.abs(uu.y)+i.z*Math.abs(uu.z),c=e.dot(uu),l=n.dot(uu),u=r.dot(uu);if(Math.max(-Math.max(c,l,u),Math.min(c,l,u))>a)return!1}return!0}const xye=new R0,qp=new ee,E_=new ee;class O0{constructor(e=new ee,n=-1){this.isSphere=!0,this.center=e,this.radius=n}set(e,n){return this.center.copy(e),this.radius=n,this}setFromPoints(e,n){const r=this.center;n!==void 0?r.copy(n):xye.setFromPoints(e).getCenter(r);let i=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;qp.subVectors(e,this.center);const n=qp.lengthSq();if(n>this.radius*this.radius){const r=Math.sqrt(n),i=(r-this.radius)*.5;this.center.addScaledVector(qp,i/r),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(E_.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(qp.copy(e.center).add(E_)),this.expandByPoint(qp.copy(e.center).sub(E_))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Ba=new ee,__=new ee,Yy=new ee,Wc=new ee,S_=new ee,Zy=new ee,x_=new ee;class JT{constructor(e=new ee,n=new ee(0,0,-1)){this.origin=e,this.direction=n}set(e,n){return this.origin.copy(e),this.direction.copy(n),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,n){return n.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Ba)),this}closestPointToPoint(e,n){n.subVectors(e,this.origin);const r=n.dot(this.direction);return r<0?n.copy(this.origin):n.copy(this.origin).addScaledVector(this.direction,r)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const n=Ba.subVectors(e,this.origin).dot(this.direction);return n<0?this.origin.distanceToSquared(e):(Ba.copy(this.origin).addScaledVector(this.direction,n),Ba.distanceToSquared(e))}distanceSqToSegment(e,n,r,i){__.copy(e).add(n).multiplyScalar(.5),Yy.copy(n).sub(e).normalize(),Wc.copy(this.origin).sub(__);const s=e.distanceTo(n)*.5,o=-this.direction.dot(Yy),a=Wc.dot(this.direction),c=-Wc.dot(Yy),l=Wc.lengthSq(),u=Math.abs(1-o*o);let d,h,f,g;if(u>0)if(d=o*c-a,h=o*a-c,g=s*u,d>=0)if(h>=-g)if(h<=g){const m=1/u;d*=m,h*=m,f=d*(d+o*h+2*a)+h*(o*d+h+2*c)+l}else h=s,d=Math.max(0,-(o*h+a)),f=-d*d+h*(h+2*c)+l;else h=-s,d=Math.max(0,-(o*h+a)),f=-d*d+h*(h+2*c)+l;else h<=-g?(d=Math.max(0,-(-o*s+a)),h=d>0?-s:Math.min(Math.max(-s,-c),s),f=-d*d+h*(h+2*c)+l):h<=g?(d=0,h=Math.min(Math.max(-s,-c),s),f=h*(h+2*c)+l):(d=Math.max(0,-(o*s+a)),h=d>0?s:Math.min(Math.max(-s,-c),s),f=-d*d+h*(h+2*c)+l);else h=o>0?-s:s,d=Math.max(0,-(o*h+a)),f=-d*d+h*(h+2*c)+l;return r&&r.copy(this.origin).addScaledVector(this.direction,d),i&&i.copy(__).addScaledVector(Yy,h),f}intersectSphere(e,n){Ba.subVectors(e.center,this.origin);const r=Ba.dot(this.direction),i=Ba.dot(Ba)-r*r,s=e.radius*e.radius;if(i>s)return null;const o=Math.sqrt(s-i),a=r-o,c=r+o;return c<0?null:a<0?this.at(c,n):this.at(a,n)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const n=e.normal.dot(this.direction);if(n===0)return e.distanceToPoint(this.origin)===0?0:null;const r=-(this.origin.dot(e.normal)+e.constant)/n;return r>=0?r:null}intersectPlane(e,n){const r=this.distanceToPlane(e);return r===null?null:this.at(r,n)}intersectsPlane(e){const n=e.distanceToPoint(this.origin);return n===0||e.normal.dot(this.direction)*n<0}intersectBox(e,n){let r,i,s,o,a,c;const l=1/this.direction.x,u=1/this.direction.y,d=1/this.direction.z,h=this.origin;return l>=0?(r=(e.min.x-h.x)*l,i=(e.max.x-h.x)*l):(r=(e.max.x-h.x)*l,i=(e.min.x-h.x)*l),u>=0?(s=(e.min.y-h.y)*u,o=(e.max.y-h.y)*u):(s=(e.max.y-h.y)*u,o=(e.min.y-h.y)*u),r>o||s>i||((s>r||isNaN(r))&&(r=s),(o=0?(a=(e.min.z-h.z)*d,c=(e.max.z-h.z)*d):(a=(e.max.z-h.z)*d,c=(e.min.z-h.z)*d),r>c||a>i)||((a>r||r!==r)&&(r=a),(c=0?r:i,n)}intersectsBox(e){return this.intersectBox(e,Ba)!==null}intersectTriangle(e,n,r,i,s){S_.subVectors(n,e),Zy.subVectors(r,e),x_.crossVectors(S_,Zy);let o=this.direction.dot(x_),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Wc.subVectors(this.origin,e);const c=a*this.direction.dot(Zy.crossVectors(Wc,Zy));if(c<0)return null;const l=a*this.direction.dot(S_.cross(Wc));if(l<0||c+l>o)return null;const u=-a*Wc.dot(x_);return u<0?null:this.at(u/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Bn{constructor(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){Bn.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y)}set(e,n,r,i,s,o,a,c,l,u,d,h,f,g,m,y){const p=this.elements;return p[0]=e,p[4]=n,p[8]=r,p[12]=i,p[1]=s,p[5]=o,p[9]=a,p[13]=c,p[2]=l,p[6]=u,p[10]=d,p[14]=h,p[3]=f,p[7]=g,p[11]=m,p[15]=y,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Bn().fromArray(this.elements)}copy(e){const n=this.elements,r=e.elements;return n[0]=r[0],n[1]=r[1],n[2]=r[2],n[3]=r[3],n[4]=r[4],n[5]=r[5],n[6]=r[6],n[7]=r[7],n[8]=r[8],n[9]=r[9],n[10]=r[10],n[11]=r[11],n[12]=r[12],n[13]=r[13],n[14]=r[14],n[15]=r[15],this}copyPosition(e){const n=this.elements,r=e.elements;return n[12]=r[12],n[13]=r[13],n[14]=r[14],this}setFromMatrix3(e){const n=e.elements;return this.set(n[0],n[3],n[6],0,n[1],n[4],n[7],0,n[2],n[5],n[8],0,0,0,0,1),this}extractBasis(e,n,r){return e.setFromMatrixColumn(this,0),n.setFromMatrixColumn(this,1),r.setFromMatrixColumn(this,2),this}makeBasis(e,n,r){return this.set(e.x,n.x,r.x,0,e.y,n.y,r.y,0,e.z,n.z,r.z,0,0,0,0,1),this}extractRotation(e){const n=this.elements,r=e.elements,i=1/ch.setFromMatrixColumn(e,0).length(),s=1/ch.setFromMatrixColumn(e,1).length(),o=1/ch.setFromMatrixColumn(e,2).length();return n[0]=r[0]*i,n[1]=r[1]*i,n[2]=r[2]*i,n[3]=0,n[4]=r[4]*s,n[5]=r[5]*s,n[6]=r[6]*s,n[7]=0,n[8]=r[8]*o,n[9]=r[9]*o,n[10]=r[10]*o,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromEuler(e){const n=this.elements,r=e.x,i=e.y,s=e.z,o=Math.cos(r),a=Math.sin(r),c=Math.cos(i),l=Math.sin(i),u=Math.cos(s),d=Math.sin(s);if(e.order==="XYZ"){const h=o*u,f=o*d,g=a*u,m=a*d;n[0]=c*u,n[4]=-c*d,n[8]=l,n[1]=f+g*l,n[5]=h-m*l,n[9]=-a*c,n[2]=m-h*l,n[6]=g+f*l,n[10]=o*c}else if(e.order==="YXZ"){const h=c*u,f=c*d,g=l*u,m=l*d;n[0]=h+m*a,n[4]=g*a-f,n[8]=o*l,n[1]=o*d,n[5]=o*u,n[9]=-a,n[2]=f*a-g,n[6]=m+h*a,n[10]=o*c}else if(e.order==="ZXY"){const h=c*u,f=c*d,g=l*u,m=l*d;n[0]=h-m*a,n[4]=-o*d,n[8]=g+f*a,n[1]=f+g*a,n[5]=o*u,n[9]=m-h*a,n[2]=-o*l,n[6]=a,n[10]=o*c}else if(e.order==="ZYX"){const h=o*u,f=o*d,g=a*u,m=a*d;n[0]=c*u,n[4]=g*l-f,n[8]=h*l+m,n[1]=c*d,n[5]=m*l+h,n[9]=f*l-g,n[2]=-l,n[6]=a*c,n[10]=o*c}else if(e.order==="YZX"){const h=o*c,f=o*l,g=a*c,m=a*l;n[0]=c*u,n[4]=m-h*d,n[8]=g*d+f,n[1]=d,n[5]=o*u,n[9]=-a*u,n[2]=-l*u,n[6]=f*d+g,n[10]=h-m*d}else if(e.order==="XZY"){const h=o*c,f=o*l,g=a*c,m=a*l;n[0]=c*u,n[4]=-d,n[8]=l*u,n[1]=h*d+m,n[5]=o*u,n[9]=f*d-g,n[2]=g*d-f,n[6]=a*u,n[10]=m*d+h}return n[3]=0,n[7]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Aye,e,Cye)}lookAt(e,n,r){const i=this.elements;return as.subVectors(e,n),as.lengthSq()===0&&(as.z=1),as.normalize(),Gc.crossVectors(r,as),Gc.lengthSq()===0&&(Math.abs(r.z)===1?as.x+=1e-4:as.z+=1e-4,as.normalize(),Gc.crossVectors(r,as)),Gc.normalize(),Jy.crossVectors(as,Gc),i[0]=Gc.x,i[4]=Jy.x,i[8]=as.x,i[1]=Gc.y,i[5]=Jy.y,i[9]=as.y,i[2]=Gc.z,i[6]=Jy.z,i[10]=as.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,n){const r=e.elements,i=n.elements,s=this.elements,o=r[0],a=r[4],c=r[8],l=r[12],u=r[1],d=r[5],h=r[9],f=r[13],g=r[2],m=r[6],y=r[10],p=r[14],v=r[3],w=r[7],b=r[11],S=r[15],x=i[0],T=i[4],N=i[8],_=i[12],E=i[1],A=i[5],L=i[9],$=i[13],W=i[2],C=i[6],I=i[10],F=i[14],D=i[3],k=i[7],R=i[11],q=i[15];return s[0]=o*x+a*E+c*W+l*D,s[4]=o*T+a*A+c*C+l*k,s[8]=o*N+a*L+c*I+l*R,s[12]=o*_+a*$+c*F+l*q,s[1]=u*x+d*E+h*W+f*D,s[5]=u*T+d*A+h*C+f*k,s[9]=u*N+d*L+h*I+f*R,s[13]=u*_+d*$+h*F+f*q,s[2]=g*x+m*E+y*W+p*D,s[6]=g*T+m*A+y*C+p*k,s[10]=g*N+m*L+y*I+p*R,s[14]=g*_+m*$+y*F+p*q,s[3]=v*x+w*E+b*W+S*D,s[7]=v*T+w*A+b*C+S*k,s[11]=v*N+w*L+b*I+S*R,s[15]=v*_+w*$+b*F+S*q,this}multiplyScalar(e){const n=this.elements;return n[0]*=e,n[4]*=e,n[8]*=e,n[12]*=e,n[1]*=e,n[5]*=e,n[9]*=e,n[13]*=e,n[2]*=e,n[6]*=e,n[10]*=e,n[14]*=e,n[3]*=e,n[7]*=e,n[11]*=e,n[15]*=e,this}determinant(){const e=this.elements,n=e[0],r=e[4],i=e[8],s=e[12],o=e[1],a=e[5],c=e[9],l=e[13],u=e[2],d=e[6],h=e[10],f=e[14],g=e[3],m=e[7],y=e[11],p=e[15];return g*(+s*c*d-i*l*d-s*a*h+r*l*h+i*a*f-r*c*f)+m*(+n*c*f-n*l*h+s*o*h-i*o*f+i*l*u-s*c*u)+y*(+n*l*d-n*a*f-s*o*d+r*o*f+s*a*u-r*l*u)+p*(-i*a*u-n*c*d+n*a*h+i*o*d-r*o*h+r*c*u)}transpose(){const e=this.elements;let n;return n=e[1],e[1]=e[4],e[4]=n,n=e[2],e[2]=e[8],e[8]=n,n=e[6],e[6]=e[9],e[9]=n,n=e[3],e[3]=e[12],e[12]=n,n=e[7],e[7]=e[13],e[13]=n,n=e[11],e[11]=e[14],e[14]=n,this}setPosition(e,n,r){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=n,i[14]=r),this}invert(){const e=this.elements,n=e[0],r=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],d=e[9],h=e[10],f=e[11],g=e[12],m=e[13],y=e[14],p=e[15],v=d*y*l-m*h*l+m*c*f-a*y*f-d*c*p+a*h*p,w=g*h*l-u*y*l-g*c*f+o*y*f+u*c*p-o*h*p,b=u*m*l-g*d*l+g*a*f-o*m*f-u*a*p+o*d*p,S=g*d*c-u*m*c-g*a*h+o*m*h+u*a*y-o*d*y,x=n*v+r*w+i*b+s*S;if(x===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const T=1/x;return e[0]=v*T,e[1]=(m*h*s-d*y*s-m*i*f+r*y*f+d*i*p-r*h*p)*T,e[2]=(a*y*s-m*c*s+m*i*l-r*y*l-a*i*p+r*c*p)*T,e[3]=(d*c*s-a*h*s-d*i*l+r*h*l+a*i*f-r*c*f)*T,e[4]=w*T,e[5]=(u*y*s-g*h*s+g*i*f-n*y*f-u*i*p+n*h*p)*T,e[6]=(g*c*s-o*y*s-g*i*l+n*y*l+o*i*p-n*c*p)*T,e[7]=(o*h*s-u*c*s+u*i*l-n*h*l-o*i*f+n*c*f)*T,e[8]=b*T,e[9]=(g*d*s-u*m*s-g*r*f+n*m*f+u*r*p-n*d*p)*T,e[10]=(o*m*s-g*a*s+g*r*l-n*m*l-o*r*p+n*a*p)*T,e[11]=(u*a*s-o*d*s-u*r*l+n*d*l+o*r*f-n*a*f)*T,e[12]=S*T,e[13]=(u*m*i-g*d*i+g*r*h-n*m*h-u*r*y+n*d*y)*T,e[14]=(g*a*i-o*m*i-g*r*c+n*m*c+o*r*y-n*a*y)*T,e[15]=(o*d*i-u*a*i+u*r*c-n*d*c-o*r*h+n*a*h)*T,this}scale(e){const n=this.elements,r=e.x,i=e.y,s=e.z;return n[0]*=r,n[4]*=i,n[8]*=s,n[1]*=r,n[5]*=i,n[9]*=s,n[2]*=r,n[6]*=i,n[10]*=s,n[3]*=r,n[7]*=i,n[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,n=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],r=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(n,r,i))}makeTranslation(e,n,r){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,n,0,0,1,r,0,0,0,1),this}makeRotationX(e){const n=Math.cos(e),r=Math.sin(e);return this.set(1,0,0,0,0,n,-r,0,0,r,n,0,0,0,0,1),this}makeRotationY(e){const n=Math.cos(e),r=Math.sin(e);return this.set(n,0,r,0,0,1,0,0,-r,0,n,0,0,0,0,1),this}makeRotationZ(e){const n=Math.cos(e),r=Math.sin(e);return this.set(n,-r,0,0,r,n,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,n){const r=Math.cos(n),i=Math.sin(n),s=1-r,o=e.x,a=e.y,c=e.z,l=s*o,u=s*a;return this.set(l*o+r,l*a-i*c,l*c+i*a,0,l*a+i*c,u*a+r,u*c-i*o,0,l*c-i*a,u*c+i*o,s*c*c+r,0,0,0,0,1),this}makeScale(e,n,r){return this.set(e,0,0,0,0,n,0,0,0,0,r,0,0,0,0,1),this}makeShear(e,n,r,i,s,o){return this.set(1,r,s,0,e,1,o,0,n,i,1,0,0,0,0,1),this}compose(e,n,r){const i=this.elements,s=n._x,o=n._y,a=n._z,c=n._w,l=s+s,u=o+o,d=a+a,h=s*l,f=s*u,g=s*d,m=o*u,y=o*d,p=a*d,v=c*l,w=c*u,b=c*d,S=r.x,x=r.y,T=r.z;return i[0]=(1-(m+p))*S,i[1]=(f+b)*S,i[2]=(g-w)*S,i[3]=0,i[4]=(f-b)*x,i[5]=(1-(h+p))*x,i[6]=(y+v)*x,i[7]=0,i[8]=(g+w)*T,i[9]=(y-v)*T,i[10]=(1-(h+m))*T,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,n,r){const i=this.elements;let s=ch.set(i[0],i[1],i[2]).length();const o=ch.set(i[4],i[5],i[6]).length(),a=ch.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],_o.copy(this);const l=1/s,u=1/o,d=1/a;return _o.elements[0]*=l,_o.elements[1]*=l,_o.elements[2]*=l,_o.elements[4]*=u,_o.elements[5]*=u,_o.elements[6]*=u,_o.elements[8]*=d,_o.elements[9]*=d,_o.elements[10]*=d,n.setFromRotationMatrix(_o),r.x=s,r.y=o,r.z=a,this}makePerspective(e,n,r,i,s,o,a=rc){const c=this.elements,l=2*s/(n-e),u=2*s/(r-i),d=(n+e)/(n-e),h=(r+i)/(r-i);let f,g;if(a===rc)f=-(o+s)/(o-s),g=-2*o*s/(o-s);else if(a===hb)f=-o/(o-s),g=-o*s/(o-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+a);return c[0]=l,c[4]=0,c[8]=d,c[12]=0,c[1]=0,c[5]=u,c[9]=h,c[13]=0,c[2]=0,c[6]=0,c[10]=f,c[14]=g,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,n,r,i,s,o,a=rc){const c=this.elements,l=1/(n-e),u=1/(r-i),d=1/(o-s),h=(n+e)*l,f=(r+i)*u;let g,m;if(a===rc)g=(o+s)*d,m=-2*d;else if(a===hb)g=s*d,m=-1*d;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+a);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-h,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-f,c[2]=0,c[6]=0,c[10]=m,c[14]=-g,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const n=this.elements,r=e.elements;for(let i=0;i<16;i++)if(n[i]!==r[i])return!1;return!0}fromArray(e,n=0){for(let r=0;r<16;r++)this.elements[r]=e[r+n];return this}toArray(e=[],n=0){const r=this.elements;return e[n]=r[0],e[n+1]=r[1],e[n+2]=r[2],e[n+3]=r[3],e[n+4]=r[4],e[n+5]=r[5],e[n+6]=r[6],e[n+7]=r[7],e[n+8]=r[8],e[n+9]=r[9],e[n+10]=r[10],e[n+11]=r[11],e[n+12]=r[12],e[n+13]=r[13],e[n+14]=r[14],e[n+15]=r[15],e}}const ch=new ee,_o=new Bn,Aye=new ee(0,0,0),Cye=new ee(1,1,1),Gc=new ee,Jy=new ee,as=new ee,XR=new Bn,YR=new D0;class Ca{constructor(e=0,n=0,r=0,i=Ca.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=n,this._z=r,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,n,r,i=this._order){return this._x=e,this._y=n,this._z=r,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,n=this._order,r=!0){const i=e.elements,s=i[0],o=i[4],a=i[8],c=i[1],l=i[5],u=i[9],d=i[2],h=i[6],f=i[10];switch(n){case"XYZ":this._y=Math.asin(Vi(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Vi(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(a,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-d,s),this._z=0);break;case"ZXY":this._x=Math.asin(Vi(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-d,f),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Vi(d,-1,1)),Math.abs(d)<.9999999?(this._x=Math.atan2(h,f),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(Vi(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-d,s)):(this._x=0,this._y=Math.atan2(a,f));break;case"XZY":this._z=Math.asin(-Vi(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+n)}return this._order=n,r===!0&&this._onChangeCallback(),this}setFromQuaternion(e,n,r){return XR.makeRotationFromQuaternion(e),this.setFromRotationMatrix(XR,n,r)}setFromVector3(e,n=this._order){return this.set(e.x,e.y,e.z,n)}reorder(e){return YR.setFromEuler(this),this.setFromQuaternion(YR,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],n=0){return e[n]=this._x,e[n+1]=this._y,e[n+2]=this._z,e[n+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ca.DEFAULT_ORDER="XYZ";class t6{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let n=0;n1){for(let r=0;r0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(a=>({boxInitialized:a.boxInitialized,boxMin:a.box.min.toArray(),boxMax:a.box.max.toArray(),sphereInitialized:a.sphereInitialized,sphereRadius:a.sphere.radius,sphereCenter:a.sphere.center.toArray()})),i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(i.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()}));function s(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(e)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(e.geometries,this.geometry);const a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){const c=a.shapes;if(Array.isArray(c))for(let l=0,u=c.length;l0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(r.geometries=a),c.length>0&&(r.materials=c),l.length>0&&(r.textures=l),u.length>0&&(r.images=u),d.length>0&&(r.shapes=d),h.length>0&&(r.skeletons=h),f.length>0&&(r.animations=f),g.length>0&&(r.nodes=g)}return r.object=i,r;function o(a){const c=[];for(const l in a){const u=a[l];delete u.metadata,c.push(u)}return c}}clone(e){return new this.constructor().copy(this,e)}copy(e,n=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),n===!0)for(let r=0;r0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(e,n,r,i,s){So.subVectors(i,n),za.subVectors(r,n),C_.subVectors(e,n);const o=So.dot(So),a=So.dot(za),c=So.dot(C_),l=za.dot(za),u=za.dot(C_),d=o*l-a*a;if(d===0)return s.set(0,0,0),null;const h=1/d,f=(l*c-a*u)*h,g=(o*u-a*c)*h;return s.set(1-f-g,g,f)}static containsPoint(e,n,r,i){return this.getBarycoord(e,n,r,i,Ha)===null?!1:Ha.x>=0&&Ha.y>=0&&Ha.x+Ha.y<=1}static getInterpolation(e,n,r,i,s,o,a,c){return this.getBarycoord(e,n,r,i,Ha)===null?(c.x=0,c.y=0,"z"in c&&(c.z=0),"w"in c&&(c.w=0),null):(c.setScalar(0),c.addScaledVector(s,Ha.x),c.addScaledVector(o,Ha.y),c.addScaledVector(a,Ha.z),c)}static getInterpolatedAttribute(e,n,r,i,s,o){return N_.setScalar(0),P_.setScalar(0),D_.setScalar(0),N_.fromBufferAttribute(e,n),P_.fromBufferAttribute(e,r),D_.fromBufferAttribute(e,i),o.setScalar(0),o.addScaledVector(N_,s.x),o.addScaledVector(P_,s.y),o.addScaledVector(D_,s.z),o}static isFrontFacing(e,n,r,i){return So.subVectors(r,n),za.subVectors(e,n),So.cross(za).dot(i)<0}set(e,n,r){return this.a.copy(e),this.b.copy(n),this.c.copy(r),this}setFromPointsAndIndices(e,n,r,i){return this.a.copy(e[n]),this.b.copy(e[r]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,n,r,i){return this.a.fromBufferAttribute(e,n),this.b.fromBufferAttribute(e,r),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return So.subVectors(this.c,this.b),za.subVectors(this.a,this.b),So.cross(za).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Ys.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,n){return Ys.getBarycoord(e,this.a,this.b,this.c,n)}getInterpolation(e,n,r,i,s){return Ys.getInterpolation(e,this.a,this.b,this.c,n,r,i,s)}containsPoint(e){return Ys.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Ys.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,n){const r=this.a,i=this.b,s=this.c;let o,a;dh.subVectors(i,r),hh.subVectors(s,r),T_.subVectors(e,r);const c=dh.dot(T_),l=hh.dot(T_);if(c<=0&&l<=0)return n.copy(r);I_.subVectors(e,i);const u=dh.dot(I_),d=hh.dot(I_);if(u>=0&&d<=u)return n.copy(i);const h=c*d-u*l;if(h<=0&&c>=0&&u<=0)return o=c/(c-u),n.copy(r).addScaledVector(dh,o);M_.subVectors(e,s);const f=dh.dot(M_),g=hh.dot(M_);if(g>=0&&f<=g)return n.copy(s);const m=f*l-c*g;if(m<=0&&l>=0&&g<=0)return a=l/(l-g),n.copy(r).addScaledVector(hh,a);const y=u*g-f*d;if(y<=0&&d-u>=0&&f-g>=0)return nO.subVectors(s,i),a=(d-u)/(d-u+(f-g)),n.copy(i).addScaledVector(nO,a);const p=1/(y+m+h);return o=m*p,a=h*p,n.copy(r).addScaledVector(dh,o).addScaledVector(hh,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const n6={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},qc={h:0,s:0,l:0},ew={h:0,s:0,l:0};function R_(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+(e-t)*6*n:n<1/2?e:n<2/3?t+(e-t)*6*(2/3-n):t}class Yt{constructor(e,n,r){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,n,r)}set(e,n,r){if(n===void 0&&r===void 0){const i=e;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(e,n,r);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,n=Gs){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Kt.toWorkingColorSpace(this,n),this}setRGB(e,n,r,i=Kt.workingColorSpace){return this.r=e,this.g=n,this.b=r,Kt.toWorkingColorSpace(this,i),this}setHSL(e,n,r,i=Kt.workingColorSpace){if(e=pye(e,1),n=Vi(n,0,1),r=Vi(r,0,1),n===0)this.r=this.g=this.b=r;else{const s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;this.r=R_(o,s,e+1/3),this.g=R_(o,s,e),this.b=R_(o,s,e-1/3)}return Kt.toWorkingColorSpace(this,i),this}setStyle(e,n=Gs){function r(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,n);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,n);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(a))return r(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,n);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=i[1],o=s.length;if(o===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,n);if(o===6)return this.setHex(parseInt(s,16),n);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,n);return this}setColorName(e,n=Gs){const r=n6[e.toLowerCase()];return r!==void 0?this.setHex(r,n):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=cc(e.r),this.g=cc(e.g),this.b=cc(e.b),this}copyLinearToSRGB(e){return this.r=lf(e.r),this.g=lf(e.g),this.b=lf(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Gs){return Kt.fromWorkingColorSpace(si.copy(this),e),Math.round(Vi(si.r*255,0,255))*65536+Math.round(Vi(si.g*255,0,255))*256+Math.round(Vi(si.b*255,0,255))}getHexString(e=Gs){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,n=Kt.workingColorSpace){Kt.fromWorkingColorSpace(si.copy(this),n);const r=si.r,i=si.g,s=si.b,o=Math.max(r,i,s),a=Math.min(r,i,s);let c,l;const u=(a+o)/2;if(a===o)c=0,l=0;else{const d=o-a;switch(l=u<=.5?d/(o+a):d/(2-o-a),o){case r:c=(i-s)/d+(i0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const n in e){const r=e[n];if(r===void 0){console.warn(`THREE.Material: parameter '${n}' has value of undefined.`);continue}const i=this[n];if(i===void 0){console.warn(`THREE.Material: '${n}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(r):i&&i.isVector3&&r&&r.isVector3?i.copy(r):this[n]=r}}toJSON(e){const n=e===void 0||typeof e=="string";n&&(e={textures:{},images:{}});const r={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.color&&this.color.isColor&&(r.color=this.color.getHex()),this.roughness!==void 0&&(r.roughness=this.roughness),this.metalness!==void 0&&(r.metalness=this.metalness),this.sheen!==void 0&&(r.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(r.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(r.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(r.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(r.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(r.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(r.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(r.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(r.shininess=this.shininess),this.clearcoat!==void 0&&(r.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(r.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(r.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(r.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(r.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,r.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(r.dispersion=this.dispersion),this.iridescence!==void 0&&(r.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(r.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(r.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(r.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(r.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(r.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(r.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(r.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(r.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(r.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(r.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(r.lightMap=this.lightMap.toJSON(e).uuid,r.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(r.aoMap=this.aoMap.toJSON(e).uuid,r.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(r.bumpMap=this.bumpMap.toJSON(e).uuid,r.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(r.normalMap=this.normalMap.toJSON(e).uuid,r.normalMapType=this.normalMapType,r.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(r.displacementMap=this.displacementMap.toJSON(e).uuid,r.displacementScale=this.displacementScale,r.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(r.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(r.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(r.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(r.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(r.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(r.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(r.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(r.combine=this.combine)),this.envMapRotation!==void 0&&(r.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(r.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(r.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(r.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(r.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(r.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(r.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(r.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(r.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(r.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(r.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(r.size=this.size),this.shadowSide!==null&&(r.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(r.sizeAttenuation=this.sizeAttenuation),this.blending!==af&&(r.blending=this.blending),this.side!==zl&&(r.side=this.side),this.vertexColors===!0&&(r.vertexColors=!0),this.opacity<1&&(r.opacity=this.opacity),this.transparent===!0&&(r.transparent=!0),this.blendSrc!==TA&&(r.blendSrc=this.blendSrc),this.blendDst!==IA&&(r.blendDst=this.blendDst),this.blendEquation!==Tu&&(r.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(r.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(r.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(r.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(r.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(r.blendAlpha=this.blendAlpha),this.depthFunc!==Bf&&(r.depthFunc=this.depthFunc),this.depthTest===!1&&(r.depthTest=this.depthTest),this.depthWrite===!1&&(r.depthWrite=this.depthWrite),this.colorWrite===!1&&(r.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(r.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==BR&&(r.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(r.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(r.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==rh&&(r.stencilFail=this.stencilFail),this.stencilZFail!==rh&&(r.stencilZFail=this.stencilZFail),this.stencilZPass!==rh&&(r.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(r.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(r.rotation=this.rotation),this.polygonOffset===!0&&(r.polygonOffset=!0),this.polygonOffsetFactor!==0&&(r.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(r.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(r.linewidth=this.linewidth),this.dashSize!==void 0&&(r.dashSize=this.dashSize),this.gapSize!==void 0&&(r.gapSize=this.gapSize),this.scale!==void 0&&(r.scale=this.scale),this.dithering===!0&&(r.dithering=!0),this.alphaTest>0&&(r.alphaTest=this.alphaTest),this.alphaHash===!0&&(r.alphaHash=!0),this.alphaToCoverage===!0&&(r.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(r.premultipliedAlpha=!0),this.forceSinglePass===!0&&(r.forceSinglePass=!0),this.wireframe===!0&&(r.wireframe=!0),this.wireframeLinewidth>1&&(r.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(r.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(r.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(r.flatShading=!0),this.visible===!1&&(r.visible=!1),this.toneMapped===!1&&(r.toneMapped=!1),this.fog===!1&&(r.fog=!1),Object.keys(this.userData).length>0&&(r.userData=this.userData);function i(s){const o=[];for(const a in s){const c=s[a];delete c.metadata,o.push(c)}return o}if(n){const s=i(e.textures),o=i(e.images);s.length>0&&(r.textures=s),o.length>0&&(r.images=o)}return r}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const n=e.clippingPlanes;let r=null;if(n!==null){const i=n.length;r=new Array(i);for(let s=0;s!==i;++s)r[s]=n[s].clone()}return this.clippingPlanes=r,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class r6 extends Nd{static get type(){return"MeshBasicMaterial"}constructor(e){super(),this.isMeshBasicMaterial=!0,this.color=new Yt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Ca,this.combine=$F,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const ar=new ee,tw=new Wt;class Ho{constructor(e,n,r=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=n,this.count=e!==void 0?e.length/n:0,this.normalized=r,this.usage=FR,this.updateRanges=[],this.gpuType=nc,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,n){this.updateRanges.push({start:e,count:n})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,n,r){e*=this.itemSize,r*=n.itemSize;for(let i=0,s=this.itemSize;in.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),n.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new R0);const e=this.attributes.position,n=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new ee(-1/0,-1/0,-1/0),new ee(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),n)for(let r=0,i=n.length;r0&&(e.userData=this.userData),this.parameters!==void 0){const c=this.parameters;for(const l in c)c[l]!==void 0&&(e[l]=c[l]);return e}e.data={attributes:{}};const n=this.index;n!==null&&(e.data.index={type:n.array.constructor.name,array:Array.prototype.slice.call(n.array)});const r=this.attributes;for(const c in r){const l=r[c];e.data.attributes[c]=l.toJSON(e.data)}const i={};let s=!1;for(const c in this.morphAttributes){const l=this.morphAttributes[c],u=[];for(let d=0,h=l.length;d0&&(i[c]=u,s=!0)}s&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const a=this.boundingSphere;return a!==null&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const n={};this.name=e.name;const r=e.index;r!==null&&this.setIndex(r.clone(n));const i=e.attributes;for(const l in i){const u=i[l];this.setAttribute(l,u.clone(n))}const s=e.morphAttributes;for(const l in s){const u=[],d=s[l];for(let h=0,f=d.length;h0){const i=n[r[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s(e.far-e.near)**2))&&(rO.copy(s).invert(),du.copy(e.ray).applyMatrix4(rO),!(r.boundingBox!==null&&du.intersectsBox(r.boundingBox)===!1)&&this._computeIntersections(e,n,du)))}_computeIntersections(e,n,r){let i;const s=this.geometry,o=this.material,a=s.index,c=s.attributes.position,l=s.attributes.uv,u=s.attributes.uv1,d=s.attributes.normal,h=s.groups,f=s.drawRange;if(a!==null)if(Array.isArray(o))for(let g=0,m=h.length;gn.far?null:{distance:l,point:aw.clone(),object:t}}function cw(t,e,n,r,i,s,o,a,c,l){t.getVertexPosition(a,rw),t.getVertexPosition(c,iw),t.getVertexPosition(l,sw);const u=Rye(t,e,n,r,rw,iw,sw,sO);if(u){const d=new ee;Ys.getBarycoord(sO,rw,iw,sw,d),i&&(u.uv=Ys.getInterpolatedAttribute(i,a,c,l,d,new Wt)),s&&(u.uv1=Ys.getInterpolatedAttribute(s,a,c,l,d,new Wt)),o&&(u.normal=Ys.getInterpolatedAttribute(o,a,c,l,d,new ee),u.normal.dot(r.direction)>0&&u.normal.multiplyScalar(-1));const h={a,b:c,c:l,normal:new ee,materialIndex:0};Ys.getNormal(rw,iw,sw,h.normal),u.face=h,u.barycoord=d}return u}class U0 extends ho{constructor(e=1,n=1,r=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:n,depth:r,widthSegments:i,heightSegments:s,depthSegments:o};const a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);const c=[],l=[],u=[],d=[];let h=0,f=0;g("z","y","x",-1,-1,r,n,e,o,s,0),g("z","y","x",1,-1,r,n,-e,o,s,1),g("x","z","y",1,1,e,r,n,i,o,2),g("x","z","y",1,-1,e,r,-n,i,o,3),g("x","y","z",1,-1,e,n,r,i,s,4),g("x","y","z",-1,-1,e,n,-r,i,s,5),this.setIndex(c),this.setAttribute("position",new xs(l,3)),this.setAttribute("normal",new xs(u,3)),this.setAttribute("uv",new xs(d,2));function g(m,y,p,v,w,b,S,x,T,N,_){const E=b/T,A=S/N,L=b/2,$=S/2,W=x/2,C=T+1,I=N+1;let F=0,D=0;const k=new ee;for(let R=0;R0?1:-1,u.push(k.x,k.y,k.z),d.push(ne/T),d.push(1-R/N),F+=1}}for(let R=0;R0&&(n.defines=this.defines),n.vertexShader=this.vertexShader,n.fragmentShader=this.fragmentShader,n.lights=this.lights,n.clipping=this.clipping;const r={};for(const i in this.extensions)this.extensions[i]===!0&&(r[i]=!0);return Object.keys(r).length>0&&(n.extensions=r),n}}class a6 extends ui{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Bn,this.projectionMatrix=new Bn,this.projectionMatrixInverse=new Bn,this.coordinateSystem=rc}copy(e,n){return super.copy(e,n),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,n){super.updateWorldMatrix(e,n),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const Kc=new ee,oO=new Wt,aO=new Wt;class ys extends a6{constructor(e=50,n=1,r=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=r,this.far=i,this.focus=10,this.aspect=n,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const n=.5*this.getFilmHeight()/e;this.fov=hC*2*Math.atan(n),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(nv*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return hC*2*Math.atan(Math.tan(nv*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,n,r){Kc.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(Kc.x,Kc.y).multiplyScalar(-e/Kc.z),Kc.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),r.set(Kc.x,Kc.y).multiplyScalar(-e/Kc.z)}getViewSize(e,n){return this.getViewBounds(e,oO,aO),n.subVectors(aO,oO)}setViewOffset(e,n,r,i,s,o){this.aspect=e/n,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=r,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let n=e*Math.tan(nv*.5*this.fov)/this.zoom,r=2*n,i=this.aspect*r,s=-.5*i;const o=this.view;if(this.view!==null&&this.view.enabled){const c=o.fullWidth,l=o.fullHeight;s+=o.offsetX*i/c,n-=o.offsetY*r/l,i*=o.width/c,r*=o.height/l}const a=this.filmOffset;a!==0&&(s+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,n,n-r,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.fov=this.fov,n.object.zoom=this.zoom,n.object.near=this.near,n.object.far=this.far,n.object.focus=this.focus,n.object.aspect=this.aspect,this.view!==null&&(n.object.view=Object.assign({},this.view)),n.object.filmGauge=this.filmGauge,n.object.filmOffset=this.filmOffset,n}}const ph=-90,gh=1;class $ye extends ui{constructor(e,n,r){super(),this.type="CubeCamera",this.renderTarget=r,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new ys(ph,gh,e,n);i.layers=this.layers,this.add(i);const s=new ys(ph,gh,e,n);s.layers=this.layers,this.add(s);const o=new ys(ph,gh,e,n);o.layers=this.layers,this.add(o);const a=new ys(ph,gh,e,n);a.layers=this.layers,this.add(a);const c=new ys(ph,gh,e,n);c.layers=this.layers,this.add(c);const l=new ys(ph,gh,e,n);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const e=this.coordinateSystem,n=this.children.concat(),[r,i,s,o,a,c]=n;for(const l of n)this.remove(l);if(e===rc)r.up.set(0,1,0),r.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),a.up.set(0,1,0),a.lookAt(0,0,1),c.up.set(0,1,0),c.lookAt(0,0,-1);else if(e===hb)r.up.set(0,-1,0),r.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),a.up.set(0,-1,0),a.lookAt(0,0,1),c.up.set(0,-1,0),c.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const l of n)this.add(l),l.updateMatrixWorld()}update(e,n){this.parent===null&&this.updateMatrixWorld();const{renderTarget:r,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,o,a,c,l,u]=this.children,d=e.getRenderTarget(),h=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),g=e.xr.enabled;e.xr.enabled=!1;const m=r.texture.generateMipmaps;r.texture.generateMipmaps=!1,e.setRenderTarget(r,0,i),e.render(n,s),e.setRenderTarget(r,1,i),e.render(n,o),e.setRenderTarget(r,2,i),e.render(n,a),e.setRenderTarget(r,3,i),e.render(n,c),e.setRenderTarget(r,4,i),e.render(n,l),r.texture.generateMipmaps=m,e.setRenderTarget(r,5,i),e.render(n,u),e.setRenderTarget(d,h,f),e.xr.enabled=g,r.texture.needsPMREMUpdate=!0}}class c6 extends Qi{constructor(e,n,r,i,s,o,a,c,l,u){e=e!==void 0?e:[],n=n!==void 0?n:Ff,super(e,n,r,i,s,o,a,c,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Bye extends gd{constructor(e=1,n={}){super(e,e,n),this.isWebGLCubeRenderTarget=!0;const r={width:e,height:e,depth:1},i=[r,r,r,r,r,r];this.texture=new c6(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:ga}fromEquirectangularTexture(e,n){this.texture.type=n.type,this.texture.colorSpace=n.colorSpace,this.texture.generateMipmaps=n.generateMipmaps,this.texture.minFilter=n.minFilter,this.texture.magFilter=n.magFilter;const r={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},i=new U0(5,5,5),s=new Hl({name:"CubemapFromEquirect",uniforms:Vf(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:Ji,blending:Pl});s.uniforms.tEquirect.value=n;const o=new ma(i,s),a=n.minFilter;return n.minFilter===Hu&&(n.minFilter=ga),new $ye(1,10,this).update(e,o),n.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(e,n,r,i){const s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(n,r,i);e.setRenderTarget(s)}}const L_=new ee,Fye=new ee,zye=new Ct;class bu{constructor(e=new ee(1,0,0),n=0){this.isPlane=!0,this.normal=e,this.constant=n}set(e,n){return this.normal.copy(e),this.constant=n,this}setComponents(e,n,r,i){return this.normal.set(e,n,r),this.constant=i,this}setFromNormalAndCoplanarPoint(e,n){return this.normal.copy(e),this.constant=-n.dot(this.normal),this}setFromCoplanarPoints(e,n,r){const i=L_.subVectors(r,n).cross(Fye.subVectors(e,n)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,n){return n.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,n){const r=e.delta(L_),i=this.normal.dot(r);if(i===0)return this.distanceToPoint(e.start)===0?n.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:n.copy(e.start).addScaledVector(r,s)}intersectsLine(e){const n=this.distanceToPoint(e.start),r=this.distanceToPoint(e.end);return n<0&&r>0||r<0&&n>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,n){const r=n||zye.getNormalMatrix(e),i=this.coplanarPoint(L_).applyMatrix4(e),s=this.normal.applyMatrix3(r).normalize();return this.constant=-i.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const hu=new O0,lw=new ee;class QT{constructor(e=new bu,n=new bu,r=new bu,i=new bu,s=new bu,o=new bu){this.planes=[e,n,r,i,s,o]}set(e,n,r,i,s,o){const a=this.planes;return a[0].copy(e),a[1].copy(n),a[2].copy(r),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(e){const n=this.planes;for(let r=0;r<6;r++)n[r].copy(e.planes[r]);return this}setFromProjectionMatrix(e,n=rc){const r=this.planes,i=e.elements,s=i[0],o=i[1],a=i[2],c=i[3],l=i[4],u=i[5],d=i[6],h=i[7],f=i[8],g=i[9],m=i[10],y=i[11],p=i[12],v=i[13],w=i[14],b=i[15];if(r[0].setComponents(c-s,h-l,y-f,b-p).normalize(),r[1].setComponents(c+s,h+l,y+f,b+p).normalize(),r[2].setComponents(c+o,h+u,y+g,b+v).normalize(),r[3].setComponents(c-o,h-u,y-g,b-v).normalize(),r[4].setComponents(c-a,h-d,y-m,b-w).normalize(),n===rc)r[5].setComponents(c+a,h+d,y+m,b+w).normalize();else if(n===hb)r[5].setComponents(a,d,m,w).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+n);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),hu.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const n=e.geometry;n.boundingSphere===null&&n.computeBoundingSphere(),hu.copy(n.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(hu)}intersectsSprite(e){return hu.center.set(0,0,0),hu.radius=.7071067811865476,hu.applyMatrix4(e.matrixWorld),this.intersectsSphere(hu)}intersectsSphere(e){const n=this.planes,r=e.center,i=-e.radius;for(let s=0;s<6;s++)if(n[s].distanceToPoint(r)0?e.max.x:e.min.x,lw.y=i.normal.y>0?e.max.y:e.min.y,lw.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(lw)<0)return!1}return!0}containsPoint(e){const n=this.planes;for(let r=0;r<6;r++)if(n[r].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function l6(){let t=null,e=!1,n=null,r=null;function i(s,o){n(s,o),r=t.requestAnimationFrame(i)}return{start:function(){e!==!0&&n!==null&&(r=t.requestAnimationFrame(i),e=!0)},stop:function(){t.cancelAnimationFrame(r),e=!1},setAnimationLoop:function(s){n=s},setContext:function(s){t=s}}}function Hye(t){const e=new WeakMap;function n(a,c){const l=a.array,u=a.usage,d=l.byteLength,h=t.createBuffer();t.bindBuffer(c,h),t.bufferData(c,l,u),a.onUploadCallback();let f;if(l instanceof Float32Array)f=t.FLOAT;else if(l instanceof Uint16Array)a.isFloat16BufferAttribute?f=t.HALF_FLOAT:f=t.UNSIGNED_SHORT;else if(l instanceof Int16Array)f=t.SHORT;else if(l instanceof Uint32Array)f=t.UNSIGNED_INT;else if(l instanceof Int32Array)f=t.INT;else if(l instanceof Int8Array)f=t.BYTE;else if(l instanceof Uint8Array)f=t.UNSIGNED_BYTE;else if(l instanceof Uint8ClampedArray)f=t.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+l);return{buffer:h,type:f,bytesPerElement:l.BYTES_PER_ELEMENT,version:a.version,size:d}}function r(a,c,l){const u=c.array,d=c.updateRanges;if(t.bindBuffer(l,a),d.length===0)t.bufferSubData(l,0,u);else{d.sort((f,g)=>f.start-g.start);let h=0;for(let f=1;f 0 + vec4 plane; + #ifdef ALPHA_TO_COVERAGE + float distanceToPlane, distanceGradient; + float clipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + if ( clipOpacity == 0.0 ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + float unionClipOpacity = 1.0; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w; + distanceGradient = fwidth( distanceToPlane ) / 2.0; + unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane ); + } + #pragma unroll_loop_end + clipOpacity *= 1.0 - unionClipOpacity; + #endif + diffuseColor.a *= clipOpacity; + if ( diffuseColor.a == 0.0 ) discard; + #else + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif + #endif +#endif`,swe=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,owe=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,awe=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,cwe=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,lwe=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,uwe=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + varying vec3 vColor; +#endif`,dwe=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif +#ifdef USE_BATCHING_COLOR + vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); + vColor.xyz *= batchingColor.xyz; +#endif`,hwe=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,fwe=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,pwe=`vec3 transformedNormal = objectNormal; +#ifdef USE_TANGENT + vec3 transformedTangent = objectTangent; +#endif +#ifdef USE_BATCHING + mat3 bm = mat3( batchingMatrix ); + transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) ); + transformedNormal = bm * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = bm * transformedTangent; + #endif +#endif +#ifdef USE_INSTANCING + mat3 im = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) ); + transformedNormal = im * transformedNormal; + #ifdef USE_TANGENT + transformedTangent = im * transformedTangent; + #endif +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,gwe=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,mwe=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,ywe=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE + emissiveColor = sRGBTransferEOTF( emissiveColor ); + #endif + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,wwe=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,vwe="gl_FragColor = linearToOutputTexel( gl_FragColor );",bwe=`vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferEOTF( in vec4 value ) { + return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a ); +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +}`,Ewe=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,_we=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + uniform mat3 envMapRotation; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,Swe=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,xwe=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,Awe=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,Cwe=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,Twe=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,Iwe=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,Mwe=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,Nwe=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,Pwe=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,Dwe=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,Rwe=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Owe=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,Uwe=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,Lwe=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,kwe=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,$we=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,Bwe=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Fwe=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_DISPERSION + material.dispersion = dispersion; +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + if( material.anisotropy == 0.0 ) { + anisotropyV = vec2( 1.0, 0.0 ); + } else { + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + } + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; +#endif`,zwe=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + float dispersion; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecularDirect = vec3( 0.0 ); +vec3 clearcoatSpecularIndirect = vec3( 0.0 ); +vec3 sheenSpecularDirect = vec3( 0.0 ); +vec3 sheenSpecularIndirect = vec3(0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,Hwe=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal = vec3( 0.0 ); +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,jwe=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,Vwe=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,Wwe=`#if defined( USE_LOGDEPTHBUF ) + gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,Gwe=`#if defined( USE_LOGDEPTHBUF ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,qwe=`#ifdef USE_LOGDEPTHBUF + varying float vFragDepth; + varying float vIsPerspective; +#endif`,Kwe=`#ifdef USE_LOGDEPTHBUF + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); +#endif`,Xwe=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,Ywe=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,Zwe=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,Jwe=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,Qwe=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,eve=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,tve=`#ifdef USE_INSTANCING_MORPH + float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; + } +#endif`,nve=`#if defined( USE_MORPHCOLORS ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,rve=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,ive=`#ifdef USE_MORPHTARGETS + #ifndef USE_INSTANCING_MORPH + uniform float morphTargetBaseInfluence; + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + #endif + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } +#endif`,sve=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } +#endif`,ove=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,ave=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,cve=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,lve=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,uve=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,dve=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,hve=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,fve=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,pve=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,gve=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,mve=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,yve=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.; +const float Inv255 = 1. / 255.; +const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 ); +const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g ); +const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b ); +const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a ); +vec4 packDepthToRGBA( const in float v ) { + if( v <= 0.0 ) + return vec4( 0., 0., 0., 0. ); + if( v >= 1.0 ) + return vec4( 1., 1., 1., 1. ); + float vuf; + float af = modf( v * PackFactors.a, vuf ); + float bf = modf( vuf * ShiftRight8, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af ); +} +vec3 packDepthToRGB( const in float v ) { + if( v <= 0.0 ) + return vec3( 0., 0., 0. ); + if( v >= 1.0 ) + return vec3( 1., 1., 1. ); + float vuf; + float bf = modf( v * PackFactors.b, vuf ); + float gf = modf( vuf * ShiftRight8, vuf ); + return vec3( vuf * Inv255, gf * PackUpscale, bf ); +} +vec2 packDepthToRG( const in float v ) { + if( v <= 0.0 ) + return vec2( 0., 0. ); + if( v >= 1.0 ) + return vec2( 1., 1. ); + float vuf; + float gf = modf( v * 256., vuf ); + return vec2( vuf * Inv255, gf ); +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors4 ); +} +float unpackRGBToDepth( const in vec3 v ) { + return dot( v, UnpackFactors3 ); +} +float unpackRGToDepth( const in vec2 v ) { + return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g; +} +vec4 pack2HalfToRGBA( const in vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( const in vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,wve=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,vve=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_BATCHING + mvPosition = batchingMatrix * mvPosition; +#endif +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,bve=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,Eve=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,_ve=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,Sve=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,xve=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + float shadow = 1.0; + vec3 lightToPosition = shadowCoord.xyz; + + float lightToPositionLength = length( lightToPosition ); + if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) { + float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + shadow = ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } + return mix( 1.0, shadow, shadowIntensity ); + } +#endif`,Ave=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowIntensity; + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,Cve=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,Tve=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,Ive=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,Mve=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + mat4 getBoneMatrix( const in float i ) { + int size = textureSize( boneTexture, 0 ).x; + int j = int( i ) * 4; + int x = j % size; + int y = j / size; + vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 ); + vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 ); + vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 ); + vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); + return mat4( v1, v2, v3, v4 ); + } +#endif`,Nve=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,Pve=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,Dve=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,Rve=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,Ove=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,Uve=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 CineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} +vec3 AgXToneMapping( vec3 color ) { + const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) + ); + const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) + ); + const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069; + color *= toneMappingExposure; + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + color = max( color, 1e-10 ); color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + color = clamp( color, 0.0, 1.0 ); + color = agxDefaultContrastApprox( color ); + color = AgXOutsetMatrix * color; + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + color = clamp( color, 0.0, 1.0 ); + return color; +} +vec3 NeutralToneMapping( vec3 color ) { + const float StartCompression = 0.8 - 0.04; + const float Desaturation = 0.15; + color *= toneMappingExposure; + float x = min( color.r, min( color.g, color.b ) ); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + float peak = max( color.r, max( color.g, color.b ) ); + if ( peak < StartCompression ) return color; + float d = 1. - StartCompression; + float newPeak = 1. - d * d / ( peak + d - StartCompression ); + color *= newPeak / peak; + float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); + return mix( color, vec3( newPeak ), g ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,Lve=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,kve=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec4 transmittedLight; + vec3 transmittance; + #ifdef USE_DISPERSION + float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion; + vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread ); + for ( int i = 0; i < 3; i ++ ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + + vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] ); + transmittedLight[ i ] = transmissionSample[ i ]; + transmittedLight.a += transmissionSample.a; + transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ]; + } + transmittedLight.a /= 3.0; + + #else + + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + + #endif + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,$ve=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,Bve=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,Fve=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,zve=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_BATCHING + worldPosition = batchingMatrix * worldPosition; + #endif + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const Hve=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,jve=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,Vve=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,Wve=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +uniform mat3 backgroundRotation; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,Gve=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,qve=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,Kve=`#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,Xve=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + vec4 diffuseColor = vec4( 1.0 ); + #include + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #elif DEPTH_PACKING == 3202 + gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 ); + #elif DEPTH_PACKING == 3203 + gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); + #endif +}`,Yve=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,Zve=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,Jve=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,Qve=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,ebe=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,tbe=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,nbe=`#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,rbe=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,ibe=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,sbe=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,obe=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,abe=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,cbe=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,lbe=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity ); + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,ube=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,dbe=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,hbe=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,fbe=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_DISPERSION + uniform float dispersion; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,pbe=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,gbe=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,mbe=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,ybe=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,wbe=`#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,vbe=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,bbe=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix[ 3 ]; + vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,Ebe=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + vec3 outgoingLight = vec3( 0.0 ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,Nt={alphahash_fragment:jye,alphahash_pars_fragment:Vye,alphamap_fragment:Wye,alphamap_pars_fragment:Gye,alphatest_fragment:qye,alphatest_pars_fragment:Kye,aomap_fragment:Xye,aomap_pars_fragment:Yye,batching_pars_vertex:Zye,batching_vertex:Jye,begin_vertex:Qye,beginnormal_vertex:ewe,bsdfs:twe,iridescence_fragment:nwe,bumpmap_pars_fragment:rwe,clipping_planes_fragment:iwe,clipping_planes_pars_fragment:swe,clipping_planes_pars_vertex:owe,clipping_planes_vertex:awe,color_fragment:cwe,color_pars_fragment:lwe,color_pars_vertex:uwe,color_vertex:dwe,common:hwe,cube_uv_reflection_fragment:fwe,defaultnormal_vertex:pwe,displacementmap_pars_vertex:gwe,displacementmap_vertex:mwe,emissivemap_fragment:ywe,emissivemap_pars_fragment:wwe,colorspace_fragment:vwe,colorspace_pars_fragment:bwe,envmap_fragment:Ewe,envmap_common_pars_fragment:_we,envmap_pars_fragment:Swe,envmap_pars_vertex:xwe,envmap_physical_pars_fragment:Uwe,envmap_vertex:Awe,fog_vertex:Cwe,fog_pars_vertex:Twe,fog_fragment:Iwe,fog_pars_fragment:Mwe,gradientmap_pars_fragment:Nwe,lightmap_pars_fragment:Pwe,lights_lambert_fragment:Dwe,lights_lambert_pars_fragment:Rwe,lights_pars_begin:Owe,lights_toon_fragment:Lwe,lights_toon_pars_fragment:kwe,lights_phong_fragment:$we,lights_phong_pars_fragment:Bwe,lights_physical_fragment:Fwe,lights_physical_pars_fragment:zwe,lights_fragment_begin:Hwe,lights_fragment_maps:jwe,lights_fragment_end:Vwe,logdepthbuf_fragment:Wwe,logdepthbuf_pars_fragment:Gwe,logdepthbuf_pars_vertex:qwe,logdepthbuf_vertex:Kwe,map_fragment:Xwe,map_pars_fragment:Ywe,map_particle_fragment:Zwe,map_particle_pars_fragment:Jwe,metalnessmap_fragment:Qwe,metalnessmap_pars_fragment:eve,morphinstance_vertex:tve,morphcolor_vertex:nve,morphnormal_vertex:rve,morphtarget_pars_vertex:ive,morphtarget_vertex:sve,normal_fragment_begin:ove,normal_fragment_maps:ave,normal_pars_fragment:cve,normal_pars_vertex:lve,normal_vertex:uve,normalmap_pars_fragment:dve,clearcoat_normal_fragment_begin:hve,clearcoat_normal_fragment_maps:fve,clearcoat_pars_fragment:pve,iridescence_pars_fragment:gve,opaque_fragment:mve,packing:yve,premultiplied_alpha_fragment:wve,project_vertex:vve,dithering_fragment:bve,dithering_pars_fragment:Eve,roughnessmap_fragment:_ve,roughnessmap_pars_fragment:Sve,shadowmap_pars_fragment:xve,shadowmap_pars_vertex:Ave,shadowmap_vertex:Cve,shadowmask_pars_fragment:Tve,skinbase_vertex:Ive,skinning_pars_vertex:Mve,skinning_vertex:Nve,skinnormal_vertex:Pve,specularmap_fragment:Dve,specularmap_pars_fragment:Rve,tonemapping_fragment:Ove,tonemapping_pars_fragment:Uve,transmission_fragment:Lve,transmission_pars_fragment:kve,uv_pars_fragment:$ve,uv_pars_vertex:Bve,uv_vertex:Fve,worldpos_vertex:zve,background_vert:Hve,background_frag:jve,backgroundCube_vert:Vve,backgroundCube_frag:Wve,cube_vert:Gve,cube_frag:qve,depth_vert:Kve,depth_frag:Xve,distanceRGBA_vert:Yve,distanceRGBA_frag:Zve,equirect_vert:Jve,equirect_frag:Qve,linedashed_vert:ebe,linedashed_frag:tbe,meshbasic_vert:nbe,meshbasic_frag:rbe,meshlambert_vert:ibe,meshlambert_frag:sbe,meshmatcap_vert:obe,meshmatcap_frag:abe,meshnormal_vert:cbe,meshnormal_frag:lbe,meshphong_vert:ube,meshphong_frag:dbe,meshphysical_vert:hbe,meshphysical_frag:fbe,meshtoon_vert:pbe,meshtoon_frag:gbe,points_vert:mbe,points_frag:ybe,shadow_vert:wbe,shadow_frag:vbe,sprite_vert:bbe,sprite_frag:Ebe},ke={common:{diffuse:{value:new Yt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ct},alphaMap:{value:null},alphaMapTransform:{value:new Ct},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ct}},envmap:{envMap:{value:null},envMapRotation:{value:new Ct},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ct}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ct}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ct},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ct},normalScale:{value:new Wt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ct},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ct}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ct}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ct}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Yt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Yt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ct},alphaTest:{value:0},uvTransform:{value:new Ct}},sprite:{diffuse:{value:new Yt(16777215)},opacity:{value:1},center:{value:new Wt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ct},alphaMap:{value:null},alphaMapTransform:{value:new Ct},alphaTest:{value:0}}},la={basic:{uniforms:mi([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.fog]),vertexShader:Nt.meshbasic_vert,fragmentShader:Nt.meshbasic_frag},lambert:{uniforms:mi([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,ke.lights,{emissive:{value:new Yt(0)}}]),vertexShader:Nt.meshlambert_vert,fragmentShader:Nt.meshlambert_frag},phong:{uniforms:mi([ke.common,ke.specularmap,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,ke.lights,{emissive:{value:new Yt(0)},specular:{value:new Yt(1118481)},shininess:{value:30}}]),vertexShader:Nt.meshphong_vert,fragmentShader:Nt.meshphong_frag},standard:{uniforms:mi([ke.common,ke.envmap,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.roughnessmap,ke.metalnessmap,ke.fog,ke.lights,{emissive:{value:new Yt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Nt.meshphysical_vert,fragmentShader:Nt.meshphysical_frag},toon:{uniforms:mi([ke.common,ke.aomap,ke.lightmap,ke.emissivemap,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.gradientmap,ke.fog,ke.lights,{emissive:{value:new Yt(0)}}]),vertexShader:Nt.meshtoon_vert,fragmentShader:Nt.meshtoon_frag},matcap:{uniforms:mi([ke.common,ke.bumpmap,ke.normalmap,ke.displacementmap,ke.fog,{matcap:{value:null}}]),vertexShader:Nt.meshmatcap_vert,fragmentShader:Nt.meshmatcap_frag},points:{uniforms:mi([ke.points,ke.fog]),vertexShader:Nt.points_vert,fragmentShader:Nt.points_frag},dashed:{uniforms:mi([ke.common,ke.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Nt.linedashed_vert,fragmentShader:Nt.linedashed_frag},depth:{uniforms:mi([ke.common,ke.displacementmap]),vertexShader:Nt.depth_vert,fragmentShader:Nt.depth_frag},normal:{uniforms:mi([ke.common,ke.bumpmap,ke.normalmap,ke.displacementmap,{opacity:{value:1}}]),vertexShader:Nt.meshnormal_vert,fragmentShader:Nt.meshnormal_frag},sprite:{uniforms:mi([ke.sprite,ke.fog]),vertexShader:Nt.sprite_vert,fragmentShader:Nt.sprite_frag},background:{uniforms:{uvTransform:{value:new Ct},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Nt.background_vert,fragmentShader:Nt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ct}},vertexShader:Nt.backgroundCube_vert,fragmentShader:Nt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Nt.cube_vert,fragmentShader:Nt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Nt.equirect_vert,fragmentShader:Nt.equirect_frag},distanceRGBA:{uniforms:mi([ke.common,ke.displacementmap,{referencePosition:{value:new ee},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Nt.distanceRGBA_vert,fragmentShader:Nt.distanceRGBA_frag},shadow:{uniforms:mi([ke.lights,ke.fog,{color:{value:new Yt(0)},opacity:{value:1}}]),vertexShader:Nt.shadow_vert,fragmentShader:Nt.shadow_frag}};la.physical={uniforms:mi([la.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ct},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ct},clearcoatNormalScale:{value:new Wt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ct},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ct},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ct},sheen:{value:0},sheenColor:{value:new Yt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ct},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ct},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ct},transmissionSamplerSize:{value:new Wt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ct},attenuationDistance:{value:0},attenuationColor:{value:new Yt(0)},specularColor:{value:new Yt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ct},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ct},anisotropyVector:{value:new Wt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ct}}]),vertexShader:Nt.meshphysical_vert,fragmentShader:Nt.meshphysical_frag};const uw={r:0,b:0,g:0},fu=new Ca,_be=new Bn;function Sbe(t,e,n,r,i,s,o){const a=new Yt(0);let c=s===!0?0:1,l,u,d=null,h=0,f=null;function g(v){let w=v.isScene===!0?v.background:null;return w&&w.isTexture&&(w=(v.backgroundBlurriness>0?n:e).get(w)),w}function m(v){let w=!1;const b=g(v);b===null?p(a,c):b&&b.isColor&&(p(b,1),w=!0);const S=t.xr.getEnvironmentBlendMode();S==="additive"?r.buffers.color.setClear(0,0,0,1,o):S==="alpha-blend"&&r.buffers.color.setClear(0,0,0,0,o),(t.autoClear||w)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil))}function y(v,w){const b=g(w);b&&(b.isCubeTexture||b.mapping===E1)?(u===void 0&&(u=new ma(new U0(1,1,1),new Hl({name:"BackgroundCubeMaterial",uniforms:Vf(la.backgroundCube.uniforms),vertexShader:la.backgroundCube.vertexShader,fragmentShader:la.backgroundCube.fragmentShader,side:Ji,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(S,x,T){this.matrixWorld.copyPosition(T.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),fu.copy(w.backgroundRotation),fu.x*=-1,fu.y*=-1,fu.z*=-1,b.isCubeTexture&&b.isRenderTargetTexture===!1&&(fu.y*=-1,fu.z*=-1),u.material.uniforms.envMap.value=b,u.material.uniforms.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=w.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=w.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(_be.makeRotationFromEuler(fu)),u.material.toneMapped=Kt.getTransfer(b.colorSpace)!==vn,(d!==b||h!==b.version||f!==t.toneMapping)&&(u.material.needsUpdate=!0,d=b,h=b.version,f=t.toneMapping),u.layers.enableAll(),v.unshift(u,u.geometry,u.material,0,0,null)):b&&b.isTexture&&(l===void 0&&(l=new ma(new S1(2,2),new Hl({name:"BackgroundMaterial",uniforms:Vf(la.background.uniforms),vertexShader:la.background.vertexShader,fragmentShader:la.background.fragmentShader,side:zl,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=b,l.material.uniforms.backgroundIntensity.value=w.backgroundIntensity,l.material.toneMapped=Kt.getTransfer(b.colorSpace)!==vn,b.matrixAutoUpdate===!0&&b.updateMatrix(),l.material.uniforms.uvTransform.value.copy(b.matrix),(d!==b||h!==b.version||f!==t.toneMapping)&&(l.material.needsUpdate=!0,d=b,h=b.version,f=t.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,w){v.getRGB(uw,o6(t)),r.buffers.color.setClear(uw.r,uw.g,uw.b,w,o)}return{getClearColor:function(){return a},setClearColor:function(v,w=1){a.set(v),c=w,p(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(v){c=v,p(a,c)},render:m,addToRenderList:y}}function xbe(t,e){const n=t.getParameter(t.MAX_VERTEX_ATTRIBS),r={},i=h(null);let s=i,o=!1;function a(E,A,L,$,W){let C=!1;const I=d($,L,A);s!==I&&(s=I,l(s.object)),C=f(E,$,L,W),C&&g(E,$,L,W),W!==null&&e.update(W,t.ELEMENT_ARRAY_BUFFER),(C||o)&&(o=!1,b(E,A,L,$),W!==null&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,e.get(W).buffer))}function c(){return t.createVertexArray()}function l(E){return t.bindVertexArray(E)}function u(E){return t.deleteVertexArray(E)}function d(E,A,L){const $=L.wireframe===!0;let W=r[E.id];W===void 0&&(W={},r[E.id]=W);let C=W[A.id];C===void 0&&(C={},W[A.id]=C);let I=C[$];return I===void 0&&(I=h(c()),C[$]=I),I}function h(E){const A=[],L=[],$=[];for(let W=0;W=0){const R=W[D];let q=C[D];if(q===void 0&&(D==="instanceMatrix"&&E.instanceMatrix&&(q=E.instanceMatrix),D==="instanceColor"&&E.instanceColor&&(q=E.instanceColor)),R===void 0||R.attribute!==q||q&&R.data!==q.data)return!0;I++}return s.attributesNum!==I||s.index!==$}function g(E,A,L,$){const W={},C=A.attributes;let I=0;const F=L.getAttributes();for(const D in F)if(F[D].location>=0){let R=C[D];R===void 0&&(D==="instanceMatrix"&&E.instanceMatrix&&(R=E.instanceMatrix),D==="instanceColor"&&E.instanceColor&&(R=E.instanceColor));const q={};q.attribute=R,R&&R.data&&(q.data=R.data),W[D]=q,I++}s.attributes=W,s.attributesNum=I,s.index=$}function m(){const E=s.newAttributes;for(let A=0,L=E.length;A=0){let k=W[F];if(k===void 0&&(F==="instanceMatrix"&&E.instanceMatrix&&(k=E.instanceMatrix),F==="instanceColor"&&E.instanceColor&&(k=E.instanceColor)),k!==void 0){const R=k.normalized,q=k.itemSize,ne=e.get(k);if(ne===void 0)continue;const X=ne.buffer,G=ne.type,te=ne.bytesPerElement,le=G===t.INT||G===t.UNSIGNED_INT||k.gpuType===GT;if(k.isInterleavedBufferAttribute){const ge=k.data,Ce=ge.stride,xe=k.offset;if(ge.isInstancedInterleavedBuffer){for(let je=0;je0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";T="mediump"}return T==="mediump"&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let l=n.precision!==void 0?n.precision:"highp";const u=c(l);u!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",u,"instead."),l=u);const d=n.logarithmicDepthBuffer===!0,h=n.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),f=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),g=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=t.getParameter(t.MAX_TEXTURE_SIZE),y=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),p=t.getParameter(t.MAX_VERTEX_ATTRIBS),v=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),w=t.getParameter(t.MAX_VARYING_VECTORS),b=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),S=g>0,x=t.getParameter(t.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:c,textureFormatReadable:o,textureTypeReadable:a,precision:l,logarithmicDepthBuffer:d,reverseDepthBuffer:h,maxTextures:f,maxVertexTextures:g,maxTextureSize:m,maxCubemapSize:y,maxAttributes:p,maxVertexUniforms:v,maxVaryings:w,maxFragmentUniforms:b,vertexTextures:S,maxSamples:x}}function Tbe(t){const e=this;let n=null,r=0,i=!1,s=!1;const o=new bu,a=new Ct,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(d,h){const f=d.length!==0||h||r!==0||i;return i=h,r=d.length,f},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,h){n=u(d,h,0)},this.setState=function(d,h,f){const g=d.clippingPlanes,m=d.clipIntersection,y=d.clipShadows,p=t.get(d);if(!i||g===null||g.length===0||s&&!y)s?u(null):l();else{const v=s?0:r,w=v*4;let b=p.clippingState||null;c.value=b,b=u(g,h,w,f);for(let S=0;S!==w;++S)b[S]=n[S];p.clippingState=b,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=v}};function l(){c.value!==n&&(c.value=n,c.needsUpdate=r>0),e.numPlanes=r,e.numIntersection=0}function u(d,h,f,g){const m=d!==null?d.length:0;let y=null;if(m!==0){if(y=c.value,g!==!0||y===null){const p=f+m*4,v=h.matrixWorldInverse;a.getNormalMatrix(v),(y===null||y.length0){const l=new Bye(c.height);return l.fromEquirectangularTexture(t,o),e.set(o,l),o.addEventListener("dispose",i),n(l.texture,o.mapping)}else return null}}return o}function i(o){const a=o.target;a.removeEventListener("dispose",i);const c=e.get(a);c!==void 0&&(e.delete(a),c.dispose())}function s(){e=new WeakMap}return{get:r,dispose:s}}class Mbe extends a6{constructor(e=-1,n=1,r=1,i=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=n,this.top=r,this.bottom=i,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,n){return super.copy(e,n),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,n,r,i,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=n,this.view.offsetX=r,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),n=(this.top-this.bottom)/(2*this.zoom),r=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let s=r-e,o=r+e,a=i+n,c=i-n;if(this.view!==null&&this.view.enabled){const l=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,o=s+l*this.view.width,a-=u*this.view.offsetY,c=a-u*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,c,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const n=super.toJSON(e);return n.object.zoom=this.zoom,n.object.left=this.left,n.object.right=this.right,n.object.top=this.top,n.object.bottom=this.bottom,n.object.near=this.near,n.object.far=this.far,this.view!==null&&(n.object.view=Object.assign({},this.view)),n}}const qh=4,cO=[.125,.215,.35,.446,.526,.582],Iu=20,k_=new Mbe,lO=new Yt;let $_=null,B_=0,F_=0,z_=!1;const Eu=(1+Math.sqrt(5))/2,mh=1/Eu,uO=[new ee(-Eu,mh,0),new ee(Eu,mh,0),new ee(-mh,0,Eu),new ee(mh,0,Eu),new ee(0,Eu,-mh),new ee(0,Eu,mh),new ee(-1,1,-1),new ee(1,1,-1),new ee(-1,1,1),new ee(1,1,1)];class dO{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,n=0,r=.1,i=100){$_=this._renderer.getRenderTarget(),B_=this._renderer.getActiveCubeFace(),F_=this._renderer.getActiveMipmapLevel(),z_=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,r,i,s),n>0&&this._blur(s,0,0,n),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,n=null){return this._fromTexture(e,n)}fromCubemap(e,n=null){return this._fromTexture(e,n)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=pO(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=fO(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?w:0,w,w),u.setRenderTarget(i),m&&u.render(g,a),u.render(e,a)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=h,u.autoClear=d,e.background=y}_textureToCubeUV(e,n){const r=this._renderer,i=e.mapping===Ff||e.mapping===zf;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=pO()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=fO());const s=i?this._cubemapMaterial:this._equirectMaterial,o=new ma(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=e;const c=this._cubeSize;dw(n,0,0,3*c,2*c),r.setRenderTarget(n),r.render(o,k_)}_applyPMREM(e){const n=this._renderer,r=n.autoClear;n.autoClear=!1;const i=this._lodPlanes.length;for(let s=1;sIu&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${y} samples when the maximum is set to ${Iu}`);const p=[];let v=0;for(let T=0;Tw-qh?i-w+qh:0),x=4*(this._cubeSize-b);dw(n,S,x,3*b,2*b),c.setRenderTarget(n),c.render(d,k_)}}function Nbe(t){const e=[],n=[],r=[];let i=t;const s=t-qh+1+cO.length;for(let o=0;ot-qh?c=cO[o-t+qh-1]:o===0&&(c=0),r.push(c);const l=1/(a-2),u=-l,d=1+l,h=[u,u,d,u,d,d,u,u,d,d,u,d],f=6,g=6,m=3,y=2,p=1,v=new Float32Array(m*g*f),w=new Float32Array(y*g*f),b=new Float32Array(p*g*f);for(let x=0;x2?0:-1,_=[T,N,0,T+2/3,N,0,T+2/3,N+1,0,T,N,0,T+2/3,N+1,0,T,N+1,0];v.set(_,m*g*x),w.set(h,y*g*x);const E=[x,x,x,x,x,x];b.set(E,p*g*x)}const S=new ho;S.setAttribute("position",new Ho(v,m)),S.setAttribute("uv",new Ho(w,y)),S.setAttribute("faceIndex",new Ho(b,p)),e.push(S),i>qh&&i--}return{lodPlanes:e,sizeLods:n,sigmas:r}}function hO(t,e,n){const r=new gd(t,e,n);return r.texture.mapping=E1,r.texture.name="PMREM.cubeUv",r.scissorTest=!0,r}function dw(t,e,n,r,i){t.viewport.set(e,n,r,i),t.scissor.set(e,n,r,i)}function Pbe(t,e,n){const r=new Float32Array(Iu),i=new ee(0,1,0);return new Hl({name:"SphericalGaussianBlur",defines:{n:Iu,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:r},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:eI(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Pl,depthTest:!1,depthWrite:!1})}function fO(){return new Hl({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:eI(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Pl,depthTest:!1,depthWrite:!1})}function pO(){return new Hl({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:eI(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Pl,depthTest:!1,depthWrite:!1})}function eI(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function Dbe(t){let e=new WeakMap,n=null;function r(a){if(a&&a.isTexture){const c=a.mapping,l=c===LA||c===kA,u=c===Ff||c===zf;if(l||u){let d=e.get(a);const h=d!==void 0?d.texture.pmremVersion:0;if(a.isRenderTargetTexture&&a.pmremVersion!==h)return n===null&&(n=new dO(t)),d=l?n.fromEquirectangular(a,d):n.fromCubemap(a,d),d.texture.pmremVersion=a.pmremVersion,e.set(a,d),d.texture;if(d!==void 0)return d.texture;{const f=a.image;return l&&f&&f.height>0||u&&f&&i(f)?(n===null&&(n=new dO(t)),d=l?n.fromEquirectangular(a):n.fromCubemap(a),d.texture.pmremVersion=a.pmremVersion,e.set(a,d),a.addEventListener("dispose",s),d.texture):null}}}return a}function i(a){let c=0;const l=6;for(let u=0;ue.maxTextureSize&&(S=Math.ceil(b/e.maxTextureSize),b=e.maxTextureSize);const x=new Float32Array(b*S*4*d),T=new e6(x,b,S,d);T.type=nc,T.needsUpdate=!0;const N=w*4;for(let E=0;E0)return t;const i=e*n;let s=mO[i];if(s===void 0&&(s=new Float32Array(i),mO[i]=s),e!==0){r.toArray(s,0);for(let o=1,a=0;o!==e;++o)a+=n,t[o].toArray(s,a)}return s}function vr(t,e){if(t.length!==e.length)return!1;for(let n=0,r=t.length;n":" "} ${a}: ${n[o]}`)}return r.join(` +`)}const SO=new Ct;function D1e(t){Kt._getMatrix(SO,Kt.workingColorSpace,t);const e=`mat3( ${SO.elements.map(n=>n.toFixed(4))} )`;switch(Kt.getTransfer(t)){case _1:return[e,"LinearTransferOETF"];case vn:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",t),[e,"LinearTransferOETF"]}}function xO(t,e,n){const r=t.getShaderParameter(e,t.COMPILE_STATUS),i=t.getShaderInfoLog(e).trim();if(r&&i==="")return"";const s=/ERROR: 0:(\d+)/.exec(i);if(s){const o=parseInt(s[1]);return n.toUpperCase()+` + +`+i+` + +`+P1e(t.getShaderSource(e),o)}else return i}function R1e(t,e){const n=D1e(e);return[`vec4 ${t}( vec4 value ) {`,` return ${n[1]}( vec4( value.rgb * ${n[0]}, value.a ) );`,"}"].join(` +`)}function O1e(t,e){let n;switch(e){case Y0e:n="Linear";break;case Z0e:n="Reinhard";break;case J0e:n="Cineon";break;case Q0e:n="ACESFilmic";break;case tye:n="AgX";break;case nye:n="Neutral";break;case eye:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}const hw=new ee;function U1e(){Kt.getLuminanceCoefficients(hw);const t=hw.x.toFixed(4),e=hw.y.toFixed(4),n=hw.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${t}, ${e}, ${n} );`," return dot( weights, rgb );","}"].join(` +`)}function L1e(t){return[t.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",t.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(hg).join(` +`)}function k1e(t){const e=[];for(const n in t){const r=t[n];r!==!1&&e.push("#define "+n+" "+r)}return e.join(` +`)}function $1e(t,e){const n={},r=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function fC(t){return t.replace(B1e,z1e)}const F1e=new Map;function z1e(t,e){let n=Nt[e];if(n===void 0){const r=F1e.get(e);if(r!==void 0)n=Nt[r],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,r);else throw new Error("Can not resolve #include <"+e+">")}return fC(n)}const H1e=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function TO(t){return t.replace(H1e,j1e)}function j1e(t,e,n,r){let i="";for(let s=parseInt(e);s0&&(y+=` +`),p=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,g].filter(hg).join(` +`),p.length>0&&(p+=` +`)):(y=[IO(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,g,n.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.batchingColor?"#define USE_BATCHING_COLOR":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.instancingMorph?"#define USE_INSTANCING_MORPH":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+u:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&n.flatShading===!1?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&n.flatShading===!1?"#define USE_MORPHNORMALS":"",n.morphColors?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+c:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(hg).join(` +`),p=[IO(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,g,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+l:"",n.envMap?"#define "+u:"",n.envMap?"#define "+d:"",h?"#define CUBEUV_TEXEL_WIDTH "+h.texelWidth:"",h?"#define CUBEUV_TEXEL_HEIGHT "+h.texelHeight:"",h?"#define CUBEUV_MAX_MIP "+h.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.dispersion?"#define USE_DISPERSION":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&n.flatShading===!1?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor||n.batchingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+c:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==Dl?"#define TONE_MAPPING":"",n.toneMapping!==Dl?Nt.tonemapping_pars_fragment:"",n.toneMapping!==Dl?O1e("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",Nt.colorspace_pars_fragment,R1e("linearToOutputTexel",n.outputColorSpace),U1e(),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"",` +`].filter(hg).join(` +`)),o=fC(o),o=AO(o,n),o=CO(o,n),a=fC(a),a=AO(a,n),a=CO(a,n),o=TO(o),a=TO(a),n.isRawShaderMaterial!==!0&&(v=`#version 300 es +`,y=[f,"#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+y,p=["#define varying in",n.glslVersion===zR?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===zR?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+p);const w=v+y+o,b=v+p+a,S=_O(i,i.VERTEX_SHADER,w),x=_O(i,i.FRAGMENT_SHADER,b);i.attachShader(m,S),i.attachShader(m,x),n.index0AttributeName!==void 0?i.bindAttribLocation(m,0,n.index0AttributeName):n.morphTargets===!0&&i.bindAttribLocation(m,0,"position"),i.linkProgram(m);function T(A){if(t.debug.checkShaderErrors){const L=i.getProgramInfoLog(m).trim(),$=i.getShaderInfoLog(S).trim(),W=i.getShaderInfoLog(x).trim();let C=!0,I=!0;if(i.getProgramParameter(m,i.LINK_STATUS)===!1)if(C=!1,typeof t.debug.onShaderError=="function")t.debug.onShaderError(i,m,S,x);else{const F=xO(i,S,"vertex"),D=xO(i,x,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(m,i.VALIDATE_STATUS)+` + +Material Name: `+A.name+` +Material Type: `+A.type+` + +Program Info Log: `+L+` +`+F+` +`+D)}else L!==""?console.warn("THREE.WebGLProgram: Program Info Log:",L):($===""||W==="")&&(I=!1);I&&(A.diagnostics={runnable:C,programLog:L,vertexShader:{log:$,prefix:y},fragmentShader:{log:W,prefix:p}})}i.deleteShader(S),i.deleteShader(x),N=new rv(i,m),_=$1e(i,m)}let N;this.getUniforms=function(){return N===void 0&&T(this),N};let _;this.getAttributes=function(){return _===void 0&&T(this),_};let E=n.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return E===!1&&(E=i.getProgramParameter(m,M1e)),E},this.destroy=function(){r.releaseStatesOfProgram(this),i.deleteProgram(m),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=N1e++,this.cacheKey=e,this.usedTimes=1,this.program=m,this.vertexShader=S,this.fragmentShader=x,this}let Y1e=0;class Z1e{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const n=e.vertexShader,r=e.fragmentShader,i=this._getShaderStage(n),s=this._getShaderStage(r),o=this._getShaderCacheForMaterial(e);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const n=this.materialCache.get(e);for(const r of n)r.usedTimes--,r.usedTimes===0&&this.shaderCache.delete(r.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const n=this.materialCache;let r=n.get(e);return r===void 0&&(r=new Set,n.set(e,r)),r}_getShaderStage(e){const n=this.shaderCache;let r=n.get(e);return r===void 0&&(r=new J1e(e),n.set(e,r)),r}}class J1e{constructor(e){this.id=Y1e++,this.code=e,this.usedTimes=0}}function Q1e(t,e,n,r,i,s,o){const a=new t6,c=new Z1e,l=new Set,u=[],d=i.logarithmicDepthBuffer,h=i.vertexTextures;let f=i.precision;const g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function m(_){return l.add(_),_===0?"uv":`uv${_}`}function y(_,E,A,L,$){const W=L.fog,C=$.geometry,I=_.isMeshStandardMaterial?L.environment:null,F=(_.isMeshStandardMaterial?n:e).get(_.envMap||I),D=F&&F.mapping===E1?F.image.height:null,k=g[_.type];_.precision!==null&&(f=i.getMaxPrecision(_.precision),f!==_.precision&&console.warn("THREE.WebGLProgram.getParameters:",_.precision,"not supported, using",f,"instead."));const R=C.morphAttributes.position||C.morphAttributes.normal||C.morphAttributes.color,q=R!==void 0?R.length:0;let ne=0;C.morphAttributes.position!==void 0&&(ne=1),C.morphAttributes.normal!==void 0&&(ne=2),C.morphAttributes.color!==void 0&&(ne=3);let X,G,te,le;if(k){const K=la[k];X=K.vertexShader,G=K.fragmentShader}else X=_.vertexShader,G=_.fragmentShader,c.update(_),te=c.getVertexShaderID(_),le=c.getFragmentShaderID(_);const ge=t.getRenderTarget(),Ce=t.state.buffers.depth.getReversed(),xe=$.isInstancedMesh===!0,je=$.isBatchedMesh===!0,ht=!!_.map,vt=!!_.matcap,Ut=!!F,Z=!!_.aoMap,Yn=!!_.lightMap,gt=!!_.bumpMap,St=!!_.normalMap,at=!!_.displacementMap,Jt=!!_.emissiveMap,Ye=!!_.metalnessMap,z=!!_.roughnessMap,P=_.anisotropy>0,re=_.clearcoat>0,de=_.dispersion>0,ye=_.iridescence>0,he=_.sheen>0,Ke=_.transmission>0,Re=P&&!!_.anisotropyMap,ze=re&&!!_.clearcoatMap,Dt=re&&!!_.clearcoatNormalMap,_e=re&&!!_.clearcoatRoughnessMap,He=ye&&!!_.iridescenceMap,st=ye&&!!_.iridescenceThicknessMap,ft=he&&!!_.sheenColorMap,Ve=he&&!!_.sheenRoughnessMap,Rt=!!_.specularMap,bt=!!_.specularColorMap,Lt=!!_.specularIntensityMap,Y=Ke&&!!_.transmissionMap,Pe=Ke&&!!_.thicknessMap,ce=!!_.gradientMap,ue=!!_.alphaMap,Ne=_.alphaTest>0,Ue=!!_.alphaHash,j=!!_.extensions;let U=Dl;_.toneMapped&&(ge===null||ge.isXRRenderTarget===!0)&&(U=t.toneMapping);const V={shaderID:k,shaderType:_.type,shaderName:_.name,vertexShader:X,fragmentShader:G,defines:_.defines,customVertexShaderID:te,customFragmentShaderID:le,isRawShaderMaterial:_.isRawShaderMaterial===!0,glslVersion:_.glslVersion,precision:f,batching:je,batchingColor:je&&$._colorsTexture!==null,instancing:xe,instancingColor:xe&&$.instanceColor!==null,instancingMorph:xe&&$.morphTexture!==null,supportsVertexTextures:h,outputColorSpace:ge===null?t.outputColorSpace:ge.isXRRenderTarget===!0?ge.texture.colorSpace:up,alphaToCoverage:!!_.alphaToCoverage,map:ht,matcap:vt,envMap:Ut,envMapMode:Ut&&F.mapping,envMapCubeUVHeight:D,aoMap:Z,lightMap:Yn,bumpMap:gt,normalMap:St,displacementMap:h&&at,emissiveMap:Jt,normalMapObjectSpace:St&&_.normalMapType===oye,normalMapTangentSpace:St&&_.normalMapType===YF,metalnessMap:Ye,roughnessMap:z,anisotropy:P,anisotropyMap:Re,clearcoat:re,clearcoatMap:ze,clearcoatNormalMap:Dt,clearcoatRoughnessMap:_e,dispersion:de,iridescence:ye,iridescenceMap:He,iridescenceThicknessMap:st,sheen:he,sheenColorMap:ft,sheenRoughnessMap:Ve,specularMap:Rt,specularColorMap:bt,specularIntensityMap:Lt,transmission:Ke,transmissionMap:Y,thicknessMap:Pe,gradientMap:ce,opaque:_.transparent===!1&&_.blending===af&&_.alphaToCoverage===!1,alphaMap:ue,alphaTest:Ne,alphaHash:Ue,combine:_.combine,mapUv:ht&&m(_.map.channel),aoMapUv:Z&&m(_.aoMap.channel),lightMapUv:Yn&&m(_.lightMap.channel),bumpMapUv:gt&&m(_.bumpMap.channel),normalMapUv:St&&m(_.normalMap.channel),displacementMapUv:at&&m(_.displacementMap.channel),emissiveMapUv:Jt&&m(_.emissiveMap.channel),metalnessMapUv:Ye&&m(_.metalnessMap.channel),roughnessMapUv:z&&m(_.roughnessMap.channel),anisotropyMapUv:Re&&m(_.anisotropyMap.channel),clearcoatMapUv:ze&&m(_.clearcoatMap.channel),clearcoatNormalMapUv:Dt&&m(_.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:_e&&m(_.clearcoatRoughnessMap.channel),iridescenceMapUv:He&&m(_.iridescenceMap.channel),iridescenceThicknessMapUv:st&&m(_.iridescenceThicknessMap.channel),sheenColorMapUv:ft&&m(_.sheenColorMap.channel),sheenRoughnessMapUv:Ve&&m(_.sheenRoughnessMap.channel),specularMapUv:Rt&&m(_.specularMap.channel),specularColorMapUv:bt&&m(_.specularColorMap.channel),specularIntensityMapUv:Lt&&m(_.specularIntensityMap.channel),transmissionMapUv:Y&&m(_.transmissionMap.channel),thicknessMapUv:Pe&&m(_.thicknessMap.channel),alphaMapUv:ue&&m(_.alphaMap.channel),vertexTangents:!!C.attributes.tangent&&(St||P),vertexColors:_.vertexColors,vertexAlphas:_.vertexColors===!0&&!!C.attributes.color&&C.attributes.color.itemSize===4,pointsUvs:$.isPoints===!0&&!!C.attributes.uv&&(ht||ue),fog:!!W,useFog:_.fog===!0,fogExp2:!!W&&W.isFogExp2,flatShading:_.flatShading===!0,sizeAttenuation:_.sizeAttenuation===!0,logarithmicDepthBuffer:d,reverseDepthBuffer:Ce,skinning:$.isSkinnedMesh===!0,morphTargets:C.morphAttributes.position!==void 0,morphNormals:C.morphAttributes.normal!==void 0,morphColors:C.morphAttributes.color!==void 0,morphTargetsCount:q,morphTextureStride:ne,numDirLights:E.directional.length,numPointLights:E.point.length,numSpotLights:E.spot.length,numSpotLightMaps:E.spotLightMap.length,numRectAreaLights:E.rectArea.length,numHemiLights:E.hemi.length,numDirLightShadows:E.directionalShadowMap.length,numPointLightShadows:E.pointShadowMap.length,numSpotLightShadows:E.spotShadowMap.length,numSpotLightShadowsWithMaps:E.numSpotLightShadowsWithMaps,numLightProbes:E.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:_.dithering,shadowMapEnabled:t.shadowMap.enabled&&A.length>0,shadowMapType:t.shadowMap.type,toneMapping:U,decodeVideoTexture:ht&&_.map.isVideoTexture===!0&&Kt.getTransfer(_.map.colorSpace)===vn,decodeVideoTextureEmissive:Jt&&_.emissiveMap.isVideoTexture===!0&&Kt.getTransfer(_.emissiveMap.colorSpace)===vn,premultipliedAlpha:_.premultipliedAlpha,doubleSided:_.side===Ja,flipSided:_.side===Ji,useDepthPacking:_.depthPacking>=0,depthPacking:_.depthPacking||0,index0AttributeName:_.index0AttributeName,extensionClipCullDistance:j&&_.extensions.clipCullDistance===!0&&r.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(j&&_.extensions.multiDraw===!0||je)&&r.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:r.has("KHR_parallel_shader_compile"),customProgramCacheKey:_.customProgramCacheKey()};return V.vertexUv1s=l.has(1),V.vertexUv2s=l.has(2),V.vertexUv3s=l.has(3),l.clear(),V}function p(_){const E=[];if(_.shaderID?E.push(_.shaderID):(E.push(_.customVertexShaderID),E.push(_.customFragmentShaderID)),_.defines!==void 0)for(const A in _.defines)E.push(A),E.push(_.defines[A]);return _.isRawShaderMaterial===!1&&(v(E,_),w(E,_),E.push(t.outputColorSpace)),E.push(_.customProgramCacheKey),E.join()}function v(_,E){_.push(E.precision),_.push(E.outputColorSpace),_.push(E.envMapMode),_.push(E.envMapCubeUVHeight),_.push(E.mapUv),_.push(E.alphaMapUv),_.push(E.lightMapUv),_.push(E.aoMapUv),_.push(E.bumpMapUv),_.push(E.normalMapUv),_.push(E.displacementMapUv),_.push(E.emissiveMapUv),_.push(E.metalnessMapUv),_.push(E.roughnessMapUv),_.push(E.anisotropyMapUv),_.push(E.clearcoatMapUv),_.push(E.clearcoatNormalMapUv),_.push(E.clearcoatRoughnessMapUv),_.push(E.iridescenceMapUv),_.push(E.iridescenceThicknessMapUv),_.push(E.sheenColorMapUv),_.push(E.sheenRoughnessMapUv),_.push(E.specularMapUv),_.push(E.specularColorMapUv),_.push(E.specularIntensityMapUv),_.push(E.transmissionMapUv),_.push(E.thicknessMapUv),_.push(E.combine),_.push(E.fogExp2),_.push(E.sizeAttenuation),_.push(E.morphTargetsCount),_.push(E.morphAttributeCount),_.push(E.numDirLights),_.push(E.numPointLights),_.push(E.numSpotLights),_.push(E.numSpotLightMaps),_.push(E.numHemiLights),_.push(E.numRectAreaLights),_.push(E.numDirLightShadows),_.push(E.numPointLightShadows),_.push(E.numSpotLightShadows),_.push(E.numSpotLightShadowsWithMaps),_.push(E.numLightProbes),_.push(E.shadowMapType),_.push(E.toneMapping),_.push(E.numClippingPlanes),_.push(E.numClipIntersection),_.push(E.depthPacking)}function w(_,E){a.disableAll(),E.supportsVertexTextures&&a.enable(0),E.instancing&&a.enable(1),E.instancingColor&&a.enable(2),E.instancingMorph&&a.enable(3),E.matcap&&a.enable(4),E.envMap&&a.enable(5),E.normalMapObjectSpace&&a.enable(6),E.normalMapTangentSpace&&a.enable(7),E.clearcoat&&a.enable(8),E.iridescence&&a.enable(9),E.alphaTest&&a.enable(10),E.vertexColors&&a.enable(11),E.vertexAlphas&&a.enable(12),E.vertexUv1s&&a.enable(13),E.vertexUv2s&&a.enable(14),E.vertexUv3s&&a.enable(15),E.vertexTangents&&a.enable(16),E.anisotropy&&a.enable(17),E.alphaHash&&a.enable(18),E.batching&&a.enable(19),E.dispersion&&a.enable(20),E.batchingColor&&a.enable(21),_.push(a.mask),a.disableAll(),E.fog&&a.enable(0),E.useFog&&a.enable(1),E.flatShading&&a.enable(2),E.logarithmicDepthBuffer&&a.enable(3),E.reverseDepthBuffer&&a.enable(4),E.skinning&&a.enable(5),E.morphTargets&&a.enable(6),E.morphNormals&&a.enable(7),E.morphColors&&a.enable(8),E.premultipliedAlpha&&a.enable(9),E.shadowMapEnabled&&a.enable(10),E.doubleSided&&a.enable(11),E.flipSided&&a.enable(12),E.useDepthPacking&&a.enable(13),E.dithering&&a.enable(14),E.transmission&&a.enable(15),E.sheen&&a.enable(16),E.opaque&&a.enable(17),E.pointsUvs&&a.enable(18),E.decodeVideoTexture&&a.enable(19),E.decodeVideoTextureEmissive&&a.enable(20),E.alphaToCoverage&&a.enable(21),_.push(a.mask)}function b(_){const E=g[_.type];let A;if(E){const L=la[E];A=Uye.clone(L.uniforms)}else A=_.uniforms;return A}function S(_,E){let A;for(let L=0,$=u.length;L<$;L++){const W=u[L];if(W.cacheKey===E){A=W,++A.usedTimes;break}}return A===void 0&&(A=new X1e(t,E,_,s),u.push(A)),A}function x(_){if(--_.usedTimes===0){const E=u.indexOf(_);u[E]=u[u.length-1],u.pop(),_.destroy()}}function T(_){c.remove(_)}function N(){c.dispose()}return{getParameters:y,getProgramCacheKey:p,getUniforms:b,acquireProgram:S,releaseProgram:x,releaseShaderCache:T,programs:u,dispose:N}}function eEe(){let t=new WeakMap;function e(o){return t.has(o)}function n(o){let a=t.get(o);return a===void 0&&(a={},t.set(o,a)),a}function r(o){t.delete(o)}function i(o,a,c){t.get(o)[a]=c}function s(){t=new WeakMap}return{has:e,get:n,remove:r,update:i,dispose:s}}function tEe(t,e){return t.groupOrder!==e.groupOrder?t.groupOrder-e.groupOrder:t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.material.id!==e.material.id?t.material.id-e.material.id:t.z!==e.z?t.z-e.z:t.id-e.id}function MO(t,e){return t.groupOrder!==e.groupOrder?t.groupOrder-e.groupOrder:t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.z!==e.z?e.z-t.z:t.id-e.id}function NO(){const t=[];let e=0;const n=[],r=[],i=[];function s(){e=0,n.length=0,r.length=0,i.length=0}function o(d,h,f,g,m,y){let p=t[e];return p===void 0?(p={id:d.id,object:d,geometry:h,material:f,groupOrder:g,renderOrder:d.renderOrder,z:m,group:y},t[e]=p):(p.id=d.id,p.object=d,p.geometry=h,p.material=f,p.groupOrder=g,p.renderOrder=d.renderOrder,p.z=m,p.group=y),e++,p}function a(d,h,f,g,m,y){const p=o(d,h,f,g,m,y);f.transmission>0?r.push(p):f.transparent===!0?i.push(p):n.push(p)}function c(d,h,f,g,m,y){const p=o(d,h,f,g,m,y);f.transmission>0?r.unshift(p):f.transparent===!0?i.unshift(p):n.unshift(p)}function l(d,h){n.length>1&&n.sort(d||tEe),r.length>1&&r.sort(h||MO),i.length>1&&i.sort(h||MO)}function u(){for(let d=e,h=t.length;d=s.length?(o=new NO,s.push(o)):o=s[i],o}function n(){t=new WeakMap}return{get:e,dispose:n}}function rEe(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new ee,color:new Yt};break;case"SpotLight":n={position:new ee,direction:new ee,color:new Yt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new ee,color:new Yt,distance:0,decay:0};break;case"HemisphereLight":n={direction:new ee,skyColor:new Yt,groundColor:new Yt};break;case"RectAreaLight":n={color:new Yt,position:new ee,halfWidth:new ee,halfHeight:new ee};break}return t[e.id]=n,n}}}function iEe(){const t={};return{get:function(e){if(t[e.id]!==void 0)return t[e.id];let n;switch(e.type){case"DirectionalLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Wt};break;case"SpotLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Wt};break;case"PointLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Wt,shadowCameraNear:1,shadowCameraFar:1e3};break}return t[e.id]=n,n}}}let sEe=0;function oEe(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function aEe(t){const e=new rEe,n=iEe(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let l=0;l<9;l++)r.probe.push(new ee);const i=new ee,s=new Bn,o=new Bn;function a(l){let u=0,d=0,h=0;for(let _=0;_<9;_++)r.probe[_].set(0,0,0);let f=0,g=0,m=0,y=0,p=0,v=0,w=0,b=0,S=0,x=0,T=0;l.sort(oEe);for(let _=0,E=l.length;_0&&(t.has("OES_texture_float_linear")===!0?(r.rectAreaLTC1=ke.LTC_FLOAT_1,r.rectAreaLTC2=ke.LTC_FLOAT_2):(r.rectAreaLTC1=ke.LTC_HALF_1,r.rectAreaLTC2=ke.LTC_HALF_2)),r.ambient[0]=u,r.ambient[1]=d,r.ambient[2]=h;const N=r.hash;(N.directionalLength!==f||N.pointLength!==g||N.spotLength!==m||N.rectAreaLength!==y||N.hemiLength!==p||N.numDirectionalShadows!==v||N.numPointShadows!==w||N.numSpotShadows!==b||N.numSpotMaps!==S||N.numLightProbes!==T)&&(r.directional.length=f,r.spot.length=m,r.rectArea.length=y,r.point.length=g,r.hemi.length=p,r.directionalShadow.length=v,r.directionalShadowMap.length=v,r.pointShadow.length=w,r.pointShadowMap.length=w,r.spotShadow.length=b,r.spotShadowMap.length=b,r.directionalShadowMatrix.length=v,r.pointShadowMatrix.length=w,r.spotLightMatrix.length=b+S-x,r.spotLightMap.length=S,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=T,N.directionalLength=f,N.pointLength=g,N.spotLength=m,N.rectAreaLength=y,N.hemiLength=p,N.numDirectionalShadows=v,N.numPointShadows=w,N.numSpotShadows=b,N.numSpotMaps=S,N.numLightProbes=T,r.version=sEe++)}function c(l,u){let d=0,h=0,f=0,g=0,m=0;const y=u.matrixWorldInverse;for(let p=0,v=l.length;p=o.length?(a=new PO(t),o.push(a)):a=o[s],a}function r(){e=new WeakMap}return{get:n,dispose:r}}class lEe extends Nd{static get type(){return"MeshDepthMaterial"}constructor(e){super(),this.isMeshDepthMaterial=!0,this.depthPacking=iye,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class uEe extends Nd{static get type(){return"MeshDistanceMaterial"}constructor(e){super(),this.isMeshDistanceMaterial=!0,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}const dEe=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,hEe=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function fEe(t,e,n){let r=new QT;const i=new Wt,s=new Wt,o=new _n,a=new lEe({depthPacking:sye}),c=new uEe,l={},u=n.maxTextureSize,d={[zl]:Ji,[Ji]:zl,[Ja]:Ja},h=new Hl({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Wt},radius:{value:4}},vertexShader:dEe,fragmentShader:hEe}),f=h.clone();f.defines.HORIZONTAL_PASS=1;const g=new ho;g.setAttribute("position",new Ho(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new ma(g,h),y=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=kF;let p=this.type;this.render=function(x,T,N){if(y.enabled===!1||y.autoUpdate===!1&&y.needsUpdate===!1||x.length===0)return;const _=t.getRenderTarget(),E=t.getActiveCubeFace(),A=t.getActiveMipmapLevel(),L=t.state;L.setBlending(Pl),L.buffers.color.setClear(1,1,1,1),L.buffers.depth.setTest(!0),L.setScissorTest(!1);const $=p!==qa&&this.type===qa,W=p===qa&&this.type!==qa;for(let C=0,I=x.length;Cu||i.y>u)&&(i.x>u&&(s.x=Math.floor(u/k.x),i.x=s.x*k.x,D.mapSize.x=s.x),i.y>u&&(s.y=Math.floor(u/k.y),i.y=s.y*k.y,D.mapSize.y=s.y)),D.map===null||$===!0||W===!0){const q=this.type!==qa?{minFilter:zo,magFilter:zo}:{};D.map!==null&&D.map.dispose(),D.map=new gd(i.x,i.y,q),D.map.texture.name=F.name+".shadowMap",D.camera.updateProjectionMatrix()}t.setRenderTarget(D.map),t.clear();const R=D.getViewportCount();for(let q=0;q0||T.map&&T.alphaTest>0){const L=E.uuid,$=T.uuid;let W=l[L];W===void 0&&(W={},l[L]=W);let C=W[$];C===void 0&&(C=E.clone(),W[$]=C,T.addEventListener("dispose",S)),E=C}if(E.visible=T.visible,E.wireframe=T.wireframe,_===qa?E.side=T.shadowSide!==null?T.shadowSide:T.side:E.side=T.shadowSide!==null?T.shadowSide:d[T.side],E.alphaMap=T.alphaMap,E.alphaTest=T.alphaTest,E.map=T.map,E.clipShadows=T.clipShadows,E.clippingPlanes=T.clippingPlanes,E.clipIntersection=T.clipIntersection,E.displacementMap=T.displacementMap,E.displacementScale=T.displacementScale,E.displacementBias=T.displacementBias,E.wireframeLinewidth=T.wireframeLinewidth,E.linewidth=T.linewidth,N.isPointLight===!0&&E.isMeshDistanceMaterial===!0){const L=t.properties.get(E);L.light=N}return E}function b(x,T,N,_,E){if(x.visible===!1)return;if(x.layers.test(T.layers)&&(x.isMesh||x.isLine||x.isPoints)&&(x.castShadow||x.receiveShadow&&E===qa)&&(!x.frustumCulled||r.intersectsObject(x))){x.modelViewMatrix.multiplyMatrices(N.matrixWorldInverse,x.matrixWorld);const $=e.update(x),W=x.material;if(Array.isArray(W)){const C=$.groups;for(let I=0,F=C.length;I=1):D.indexOf("OpenGL ES")!==-1&&(F=parseFloat(/^OpenGL ES (\d)/.exec(D)[1]),I=F>=2);let k=null,R={};const q=t.getParameter(t.SCISSOR_BOX),ne=t.getParameter(t.VIEWPORT),X=new _n().fromArray(q),G=new _n().fromArray(ne);function te(Y,Pe,ce,ue){const Ne=new Uint8Array(4),Ue=t.createTexture();t.bindTexture(Y,Ue),t.texParameteri(Y,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(Y,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let j=0;j"u"?!1:/OculusBrowser/g.test(navigator.userAgent),l=new Wt,u=new WeakMap;let d;const h=new WeakMap;let f=!1;try{f=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(z,P){return f?new OffscreenCanvas(z,P):fb("canvas")}function m(z,P,re){let de=1;const ye=Ye(z);if((ye.width>re||ye.height>re)&&(de=re/Math.max(ye.width,ye.height)),de<1)if(typeof HTMLImageElement<"u"&&z instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&z instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&z instanceof ImageBitmap||typeof VideoFrame<"u"&&z instanceof VideoFrame){const he=Math.floor(de*ye.width),Ke=Math.floor(de*ye.height);d===void 0&&(d=g(he,Ke));const Re=P?g(he,Ke):d;return Re.width=he,Re.height=Ke,Re.getContext("2d").drawImage(z,0,0,he,Ke),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+ye.width+"x"+ye.height+") to ("+he+"x"+Ke+")."),Re}else return"data"in z&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+ye.width+"x"+ye.height+")."),z;return z}function y(z){return z.generateMipmaps}function p(z){t.generateMipmap(z)}function v(z){return z.isWebGLCubeRenderTarget?t.TEXTURE_CUBE_MAP:z.isWebGL3DRenderTarget?t.TEXTURE_3D:z.isWebGLArrayRenderTarget||z.isCompressedArrayTexture?t.TEXTURE_2D_ARRAY:t.TEXTURE_2D}function w(z,P,re,de,ye=!1){if(z!==null){if(t[z]!==void 0)return t[z];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+z+"'")}let he=P;if(P===t.RED&&(re===t.FLOAT&&(he=t.R32F),re===t.HALF_FLOAT&&(he=t.R16F),re===t.UNSIGNED_BYTE&&(he=t.R8)),P===t.RED_INTEGER&&(re===t.UNSIGNED_BYTE&&(he=t.R8UI),re===t.UNSIGNED_SHORT&&(he=t.R16UI),re===t.UNSIGNED_INT&&(he=t.R32UI),re===t.BYTE&&(he=t.R8I),re===t.SHORT&&(he=t.R16I),re===t.INT&&(he=t.R32I)),P===t.RG&&(re===t.FLOAT&&(he=t.RG32F),re===t.HALF_FLOAT&&(he=t.RG16F),re===t.UNSIGNED_BYTE&&(he=t.RG8)),P===t.RG_INTEGER&&(re===t.UNSIGNED_BYTE&&(he=t.RG8UI),re===t.UNSIGNED_SHORT&&(he=t.RG16UI),re===t.UNSIGNED_INT&&(he=t.RG32UI),re===t.BYTE&&(he=t.RG8I),re===t.SHORT&&(he=t.RG16I),re===t.INT&&(he=t.RG32I)),P===t.RGB_INTEGER&&(re===t.UNSIGNED_BYTE&&(he=t.RGB8UI),re===t.UNSIGNED_SHORT&&(he=t.RGB16UI),re===t.UNSIGNED_INT&&(he=t.RGB32UI),re===t.BYTE&&(he=t.RGB8I),re===t.SHORT&&(he=t.RGB16I),re===t.INT&&(he=t.RGB32I)),P===t.RGBA_INTEGER&&(re===t.UNSIGNED_BYTE&&(he=t.RGBA8UI),re===t.UNSIGNED_SHORT&&(he=t.RGBA16UI),re===t.UNSIGNED_INT&&(he=t.RGBA32UI),re===t.BYTE&&(he=t.RGBA8I),re===t.SHORT&&(he=t.RGBA16I),re===t.INT&&(he=t.RGBA32I)),P===t.RGB&&re===t.UNSIGNED_INT_5_9_9_9_REV&&(he=t.RGB9_E5),P===t.RGBA){const Ke=ye?_1:Kt.getTransfer(de);re===t.FLOAT&&(he=t.RGBA32F),re===t.HALF_FLOAT&&(he=t.RGBA16F),re===t.UNSIGNED_BYTE&&(he=Ke===vn?t.SRGB8_ALPHA8:t.RGBA8),re===t.UNSIGNED_SHORT_4_4_4_4&&(he=t.RGBA4),re===t.UNSIGNED_SHORT_5_5_5_1&&(he=t.RGB5_A1)}return(he===t.R16F||he===t.R32F||he===t.RG16F||he===t.RG32F||he===t.RGBA16F||he===t.RGBA32F)&&e.get("EXT_color_buffer_float"),he}function b(z,P){let re;return z?P===null||P===pd||P===Hf?re=t.DEPTH24_STENCIL8:P===nc?re=t.DEPTH32F_STENCIL8:P===Jm&&(re=t.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):P===null||P===pd||P===Hf?re=t.DEPTH_COMPONENT24:P===nc?re=t.DEPTH_COMPONENT32F:P===Jm&&(re=t.DEPTH_COMPONENT16),re}function S(z,P){return y(z)===!0||z.isFramebufferTexture&&z.minFilter!==zo&&z.minFilter!==ga?Math.log2(Math.max(P.width,P.height))+1:z.mipmaps!==void 0&&z.mipmaps.length>0?z.mipmaps.length:z.isCompressedTexture&&Array.isArray(z.image)?P.mipmaps.length:1}function x(z){const P=z.target;P.removeEventListener("dispose",x),N(P),P.isVideoTexture&&u.delete(P)}function T(z){const P=z.target;P.removeEventListener("dispose",T),E(P)}function N(z){const P=r.get(z);if(P.__webglInit===void 0)return;const re=z.source,de=h.get(re);if(de){const ye=de[P.__cacheKey];ye.usedTimes--,ye.usedTimes===0&&_(z),Object.keys(de).length===0&&h.delete(re)}r.remove(z)}function _(z){const P=r.get(z);t.deleteTexture(P.__webglTexture);const re=z.source,de=h.get(re);delete de[P.__cacheKey],o.memory.textures--}function E(z){const P=r.get(z);if(z.depthTexture&&(z.depthTexture.dispose(),r.remove(z.depthTexture)),z.isWebGLCubeRenderTarget)for(let de=0;de<6;de++){if(Array.isArray(P.__webglFramebuffer[de]))for(let ye=0;ye=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+z+" texture units while this GPU supports only "+i.maxTextures),A+=1,z}function W(z){const P=[];return P.push(z.wrapS),P.push(z.wrapT),P.push(z.wrapR||0),P.push(z.magFilter),P.push(z.minFilter),P.push(z.anisotropy),P.push(z.internalFormat),P.push(z.format),P.push(z.type),P.push(z.generateMipmaps),P.push(z.premultiplyAlpha),P.push(z.flipY),P.push(z.unpackAlignment),P.push(z.colorSpace),P.join()}function C(z,P){const re=r.get(z);if(z.isVideoTexture&&at(z),z.isRenderTargetTexture===!1&&z.version>0&&re.__version!==z.version){const de=z.image;if(de===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(de.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{G(re,z,P);return}}n.bindTexture(t.TEXTURE_2D,re.__webglTexture,t.TEXTURE0+P)}function I(z,P){const re=r.get(z);if(z.version>0&&re.__version!==z.version){G(re,z,P);return}n.bindTexture(t.TEXTURE_2D_ARRAY,re.__webglTexture,t.TEXTURE0+P)}function F(z,P){const re=r.get(z);if(z.version>0&&re.__version!==z.version){G(re,z,P);return}n.bindTexture(t.TEXTURE_3D,re.__webglTexture,t.TEXTURE0+P)}function D(z,P){const re=r.get(z);if(z.version>0&&re.__version!==z.version){te(re,z,P);return}n.bindTexture(t.TEXTURE_CUBE_MAP,re.__webglTexture,t.TEXTURE0+P)}const k={[$A]:t.REPEAT,[zu]:t.CLAMP_TO_EDGE,[BA]:t.MIRRORED_REPEAT},R={[zo]:t.NEAREST,[rye]:t.NEAREST_MIPMAP_NEAREST,[Gy]:t.NEAREST_MIPMAP_LINEAR,[ga]:t.LINEAR,[g_]:t.LINEAR_MIPMAP_NEAREST,[Hu]:t.LINEAR_MIPMAP_LINEAR},q={[aye]:t.NEVER,[fye]:t.ALWAYS,[cye]:t.LESS,[ZF]:t.LEQUAL,[lye]:t.EQUAL,[hye]:t.GEQUAL,[uye]:t.GREATER,[dye]:t.NOTEQUAL};function ne(z,P){if(P.type===nc&&e.has("OES_texture_float_linear")===!1&&(P.magFilter===ga||P.magFilter===g_||P.magFilter===Gy||P.magFilter===Hu||P.minFilter===ga||P.minFilter===g_||P.minFilter===Gy||P.minFilter===Hu)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),t.texParameteri(z,t.TEXTURE_WRAP_S,k[P.wrapS]),t.texParameteri(z,t.TEXTURE_WRAP_T,k[P.wrapT]),(z===t.TEXTURE_3D||z===t.TEXTURE_2D_ARRAY)&&t.texParameteri(z,t.TEXTURE_WRAP_R,k[P.wrapR]),t.texParameteri(z,t.TEXTURE_MAG_FILTER,R[P.magFilter]),t.texParameteri(z,t.TEXTURE_MIN_FILTER,R[P.minFilter]),P.compareFunction&&(t.texParameteri(z,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(z,t.TEXTURE_COMPARE_FUNC,q[P.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(P.magFilter===zo||P.minFilter!==Gy&&P.minFilter!==Hu||P.type===nc&&e.has("OES_texture_float_linear")===!1)return;if(P.anisotropy>1||r.get(P).__currentAnisotropy){const re=e.get("EXT_texture_filter_anisotropic");t.texParameterf(z,re.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(P.anisotropy,i.getMaxAnisotropy())),r.get(P).__currentAnisotropy=P.anisotropy}}}function X(z,P){let re=!1;z.__webglInit===void 0&&(z.__webglInit=!0,P.addEventListener("dispose",x));const de=P.source;let ye=h.get(de);ye===void 0&&(ye={},h.set(de,ye));const he=W(P);if(he!==z.__cacheKey){ye[he]===void 0&&(ye[he]={texture:t.createTexture(),usedTimes:0},o.memory.textures++,re=!0),ye[he].usedTimes++;const Ke=ye[z.__cacheKey];Ke!==void 0&&(ye[z.__cacheKey].usedTimes--,Ke.usedTimes===0&&_(P)),z.__cacheKey=he,z.__webglTexture=ye[he].texture}return re}function G(z,P,re){let de=t.TEXTURE_2D;(P.isDataArrayTexture||P.isCompressedArrayTexture)&&(de=t.TEXTURE_2D_ARRAY),P.isData3DTexture&&(de=t.TEXTURE_3D);const ye=X(z,P),he=P.source;n.bindTexture(de,z.__webglTexture,t.TEXTURE0+re);const Ke=r.get(he);if(he.version!==Ke.__version||ye===!0){n.activeTexture(t.TEXTURE0+re);const Re=Kt.getPrimaries(Kt.workingColorSpace),ze=P.colorSpace===cl?null:Kt.getPrimaries(P.colorSpace),Dt=P.colorSpace===cl||Re===ze?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,P.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,P.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,P.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,Dt);let _e=m(P.image,!1,i.maxTextureSize);_e=Jt(P,_e);const He=s.convert(P.format,P.colorSpace),st=s.convert(P.type);let ft=w(P.internalFormat,He,st,P.colorSpace,P.isVideoTexture);ne(de,P);let Ve;const Rt=P.mipmaps,bt=P.isVideoTexture!==!0,Lt=Ke.__version===void 0||ye===!0,Y=he.dataReady,Pe=S(P,_e);if(P.isDepthTexture)ft=b(P.format===jf,P.type),Lt&&(bt?n.texStorage2D(t.TEXTURE_2D,1,ft,_e.width,_e.height):n.texImage2D(t.TEXTURE_2D,0,ft,_e.width,_e.height,0,He,st,null));else if(P.isDataTexture)if(Rt.length>0){bt&&Lt&&n.texStorage2D(t.TEXTURE_2D,Pe,ft,Rt[0].width,Rt[0].height);for(let ce=0,ue=Rt.length;ce0){const Ne=DO(Ve.width,Ve.height,P.format,P.type);for(const Ue of P.layerUpdates){const j=Ve.data.subarray(Ue*Ne/Ve.data.BYTES_PER_ELEMENT,(Ue+1)*Ne/Ve.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,ce,0,0,Ue,Ve.width,Ve.height,1,He,j)}P.clearLayerUpdates()}else n.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,ce,0,0,0,Ve.width,Ve.height,_e.depth,He,Ve.data)}else n.compressedTexImage3D(t.TEXTURE_2D_ARRAY,ce,ft,Ve.width,Ve.height,_e.depth,0,Ve.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else bt?Y&&n.texSubImage3D(t.TEXTURE_2D_ARRAY,ce,0,0,0,Ve.width,Ve.height,_e.depth,He,st,Ve.data):n.texImage3D(t.TEXTURE_2D_ARRAY,ce,ft,Ve.width,Ve.height,_e.depth,0,He,st,Ve.data)}else{bt&&Lt&&n.texStorage2D(t.TEXTURE_2D,Pe,ft,Rt[0].width,Rt[0].height);for(let ce=0,ue=Rt.length;ce0){const ce=DO(_e.width,_e.height,P.format,P.type);for(const ue of P.layerUpdates){const Ne=_e.data.subarray(ue*ce/_e.data.BYTES_PER_ELEMENT,(ue+1)*ce/_e.data.BYTES_PER_ELEMENT);n.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,ue,_e.width,_e.height,1,He,st,Ne)}P.clearLayerUpdates()}else n.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,0,_e.width,_e.height,_e.depth,He,st,_e.data)}else n.texImage3D(t.TEXTURE_2D_ARRAY,0,ft,_e.width,_e.height,_e.depth,0,He,st,_e.data);else if(P.isData3DTexture)bt?(Lt&&n.texStorage3D(t.TEXTURE_3D,Pe,ft,_e.width,_e.height,_e.depth),Y&&n.texSubImage3D(t.TEXTURE_3D,0,0,0,0,_e.width,_e.height,_e.depth,He,st,_e.data)):n.texImage3D(t.TEXTURE_3D,0,ft,_e.width,_e.height,_e.depth,0,He,st,_e.data);else if(P.isFramebufferTexture){if(Lt)if(bt)n.texStorage2D(t.TEXTURE_2D,Pe,ft,_e.width,_e.height);else{let ce=_e.width,ue=_e.height;for(let Ne=0;Ne>=1,ue>>=1}}else if(Rt.length>0){if(bt&&Lt){const ce=Ye(Rt[0]);n.texStorage2D(t.TEXTURE_2D,Pe,ft,ce.width,ce.height)}for(let ce=0,ue=Rt.length;ce0&&Pe++;const ue=Ye(He[0]);n.texStorage2D(t.TEXTURE_CUBE_MAP,Pe,Rt,ue.width,ue.height)}for(let ue=0;ue<6;ue++)if(_e){bt?Y&&n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,0,0,He[ue].width,He[ue].height,ft,Ve,He[ue].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+ue,0,Rt,He[ue].width,He[ue].height,0,ft,Ve,He[ue].data);for(let Ne=0;Ne>he),st=Math.max(1,P.height>>he);ye===t.TEXTURE_3D||ye===t.TEXTURE_2D_ARRAY?n.texImage3D(ye,he,ze,He,st,P.depth,0,Ke,Re,null):n.texImage2D(ye,he,ze,He,st,0,Ke,Re,null)}n.bindFramebuffer(t.FRAMEBUFFER,z),St(P)?a.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,de,ye,_e.__webglTexture,0,gt(P)):(ye===t.TEXTURE_2D||ye>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&ye<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,de,ye,_e.__webglTexture,he),n.bindFramebuffer(t.FRAMEBUFFER,null)}function ge(z,P,re){if(t.bindRenderbuffer(t.RENDERBUFFER,z),P.depthBuffer){const de=P.depthTexture,ye=de&&de.isDepthTexture?de.type:null,he=b(P.stencilBuffer,ye),Ke=P.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,Re=gt(P);St(P)?a.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,Re,he,P.width,P.height):re?t.renderbufferStorageMultisample(t.RENDERBUFFER,Re,he,P.width,P.height):t.renderbufferStorage(t.RENDERBUFFER,he,P.width,P.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,Ke,t.RENDERBUFFER,z)}else{const de=P.textures;for(let ye=0;ye{delete P.__boundDepthTexture,delete P.__depthDisposeCallback,de.removeEventListener("dispose",ye)};de.addEventListener("dispose",ye),P.__depthDisposeCallback=ye}P.__boundDepthTexture=de}if(z.depthTexture&&!P.__autoAllocateDepthBuffer){if(re)throw new Error("target.depthTexture not supported in Cube render targets");Ce(P.__webglFramebuffer,z)}else if(re){P.__webglDepthbuffer=[];for(let de=0;de<6;de++)if(n.bindFramebuffer(t.FRAMEBUFFER,P.__webglFramebuffer[de]),P.__webglDepthbuffer[de]===void 0)P.__webglDepthbuffer[de]=t.createRenderbuffer(),ge(P.__webglDepthbuffer[de],z,!1);else{const ye=z.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,he=P.__webglDepthbuffer[de];t.bindRenderbuffer(t.RENDERBUFFER,he),t.framebufferRenderbuffer(t.FRAMEBUFFER,ye,t.RENDERBUFFER,he)}}else if(n.bindFramebuffer(t.FRAMEBUFFER,P.__webglFramebuffer),P.__webglDepthbuffer===void 0)P.__webglDepthbuffer=t.createRenderbuffer(),ge(P.__webglDepthbuffer,z,!1);else{const de=z.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,ye=P.__webglDepthbuffer;t.bindRenderbuffer(t.RENDERBUFFER,ye),t.framebufferRenderbuffer(t.FRAMEBUFFER,de,t.RENDERBUFFER,ye)}n.bindFramebuffer(t.FRAMEBUFFER,null)}function je(z,P,re){const de=r.get(z);P!==void 0&&le(de.__webglFramebuffer,z,z.texture,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,0),re!==void 0&&xe(z)}function ht(z){const P=z.texture,re=r.get(z),de=r.get(P);z.addEventListener("dispose",T);const ye=z.textures,he=z.isWebGLCubeRenderTarget===!0,Ke=ye.length>1;if(Ke||(de.__webglTexture===void 0&&(de.__webglTexture=t.createTexture()),de.__version=P.version,o.memory.textures++),he){re.__webglFramebuffer=[];for(let Re=0;Re<6;Re++)if(P.mipmaps&&P.mipmaps.length>0){re.__webglFramebuffer[Re]=[];for(let ze=0;ze0){re.__webglFramebuffer=[];for(let Re=0;Re0&&St(z)===!1){re.__webglMultisampledFramebuffer=t.createFramebuffer(),re.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,re.__webglMultisampledFramebuffer);for(let Re=0;Re0)for(let ze=0;ze0)for(let ze=0;ze0){if(St(z)===!1){const P=z.textures,re=z.width,de=z.height;let ye=t.COLOR_BUFFER_BIT;const he=z.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,Ke=r.get(z),Re=P.length>1;if(Re)for(let ze=0;ze0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&P.__useRenderToTexture!==!1}function at(z){const P=o.render.frame;u.get(z)!==P&&(u.set(z,P),z.update())}function Jt(z,P){const re=z.colorSpace,de=z.format,ye=z.type;return z.isCompressedTexture===!0||z.isVideoTexture===!0||re!==up&&re!==cl&&(Kt.getTransfer(re)===vn?(de!==Lo||ye!==wc)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",re)),P}function Ye(z){return typeof HTMLImageElement<"u"&&z instanceof HTMLImageElement?(l.width=z.naturalWidth||z.width,l.height=z.naturalHeight||z.height):typeof VideoFrame<"u"&&z instanceof VideoFrame?(l.width=z.displayWidth,l.height=z.displayHeight):(l.width=z.width,l.height=z.height),l}this.allocateTextureUnit=$,this.resetTextureUnits=L,this.setTexture2D=C,this.setTexture2DArray=I,this.setTexture3D=F,this.setTextureCube=D,this.rebindTextures=je,this.setupRenderTarget=ht,this.updateRenderTargetMipmap=vt,this.updateMultisampleRenderTarget=Yn,this.setupDepthRenderbuffer=xe,this.setupFrameBufferTexture=le,this.useMultisampledRTT=St}function wEe(t,e){function n(r,i=cl){let s;const o=Kt.getTransfer(i);if(r===wc)return t.UNSIGNED_BYTE;if(r===qT)return t.UNSIGNED_SHORT_4_4_4_4;if(r===KT)return t.UNSIGNED_SHORT_5_5_5_1;if(r===HF)return t.UNSIGNED_INT_5_9_9_9_REV;if(r===FF)return t.BYTE;if(r===zF)return t.SHORT;if(r===Jm)return t.UNSIGNED_SHORT;if(r===GT)return t.INT;if(r===pd)return t.UNSIGNED_INT;if(r===nc)return t.FLOAT;if(r===N0)return t.HALF_FLOAT;if(r===jF)return t.ALPHA;if(r===VF)return t.RGB;if(r===Lo)return t.RGBA;if(r===WF)return t.LUMINANCE;if(r===GF)return t.LUMINANCE_ALPHA;if(r===cf)return t.DEPTH_COMPONENT;if(r===jf)return t.DEPTH_STENCIL;if(r===qF)return t.RED;if(r===XT)return t.RED_INTEGER;if(r===KF)return t.RG;if(r===YT)return t.RG_INTEGER;if(r===ZT)return t.RGBA_INTEGER;if(r===Zw||r===Jw||r===Qw||r===ev)if(o===vn)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(r===Zw)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===Jw)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===Qw)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===ev)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(r===Zw)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===Jw)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===Qw)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===ev)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===FA||r===zA||r===HA||r===jA)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(r===FA)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===zA)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===HA)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===jA)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===VA||r===WA||r===GA)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(r===VA||r===WA)return o===vn?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(r===GA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===qA||r===KA||r===XA||r===YA||r===ZA||r===JA||r===QA||r===eC||r===tC||r===nC||r===rC||r===iC||r===sC||r===oC)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(r===qA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===KA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===XA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===YA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===ZA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===JA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===QA)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===eC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===tC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===nC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===rC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===iC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===sC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===oC)return o===vn?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===tv||r===aC||r===cC)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(r===tv)return o===vn?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(r===aC)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(r===cC)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(r===XF||r===lC||r===uC||r===dC)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(r===tv)return s.COMPRESSED_RED_RGTC1_EXT;if(r===lC)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===uC)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===dC)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return r===Hf?t.UNSIGNED_INT_24_8:t[r]!==void 0?t[r]:null}return{convert:n}}class vEe extends ys{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class fg extends ui{constructor(){super(),this.isGroup=!0,this.type="Group"}}const bEe={type:"move"};class j_{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new fg,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new fg,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new ee,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new ee),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new fg,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new ee,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new ee),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const n=this._hand;if(n)for(const r of e.hand.values())this._getHandJoint(n,r)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,n,r){let i=null,s=null,o=null;const a=this._targetRay,c=this._grip,l=this._hand;if(e&&n.session.visibilityState!=="visible-blurred"){if(l&&e.hand){o=!0;for(const m of e.hand.values()){const y=n.getJointPose(m,r),p=this._getHandJoint(l,m);y!==null&&(p.matrix.fromArray(y.transform.matrix),p.matrix.decompose(p.position,p.rotation,p.scale),p.matrixWorldNeedsUpdate=!0,p.jointRadius=y.radius),p.visible=y!==null}const u=l.joints["index-finger-tip"],d=l.joints["thumb-tip"],h=u.position.distanceTo(d.position),f=.02,g=.005;l.inputState.pinching&&h>f+g?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&h<=f-g&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else c!==null&&e.gripSpace&&(s=n.getPose(e.gripSpace,r),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.matrixWorldNeedsUpdate=!0,s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(i=n.getPose(e.targetRaySpace,r),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(bEe)))}return a!==null&&(a.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=o!==null),this}_getHandJoint(e,n){if(e.joints[n.jointName]===void 0){const r=new fg;r.matrixAutoUpdate=!1,r.visible=!1,e.joints[n.jointName]=r,e.add(r)}return e.joints[n.jointName]}}const EEe=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,_Ee=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class SEe{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n,r){if(this.texture===null){const i=new Qi,s=e.properties.get(i);s.__webglTexture=n.texture,(n.depthNear!=r.depthNear||n.depthFar!=r.depthFar)&&(this.depthNear=n.depthNear,this.depthFar=n.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){const n=e.cameras[0].viewport,r=new Hl({vertexShader:EEe,fragmentShader:_Ee,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new ma(new S1(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class xEe extends dp{constructor(e,n){super();const r=this;let i=null,s=1,o=null,a="local-floor",c=1,l=null,u=null,d=null,h=null,f=null,g=null;const m=new SEe,y=n.getContextAttributes();let p=null,v=null;const w=[],b=[],S=new Wt;let x=null;const T=new ys;T.viewport=new _n;const N=new ys;N.viewport=new _n;const _=[T,N],E=new vEe;let A=null,L=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(G){let te=w[G];return te===void 0&&(te=new j_,w[G]=te),te.getTargetRaySpace()},this.getControllerGrip=function(G){let te=w[G];return te===void 0&&(te=new j_,w[G]=te),te.getGripSpace()},this.getHand=function(G){let te=w[G];return te===void 0&&(te=new j_,w[G]=te),te.getHandSpace()};function $(G){const te=b.indexOf(G.inputSource);if(te===-1)return;const le=w[te];le!==void 0&&(le.update(G.inputSource,G.frame,l||o),le.dispatchEvent({type:G.type,data:G.inputSource}))}function W(){i.removeEventListener("select",$),i.removeEventListener("selectstart",$),i.removeEventListener("selectend",$),i.removeEventListener("squeeze",$),i.removeEventListener("squeezestart",$),i.removeEventListener("squeezeend",$),i.removeEventListener("end",W),i.removeEventListener("inputsourceschange",C);for(let G=0;G=0&&(b[ge]=null,w[ge].disconnect(le))}for(let te=0;te=b.length){b.push(le),ge=xe;break}else if(b[xe]===null){b[xe]=le,ge=xe;break}if(ge===-1)break}const Ce=w[ge];Ce&&Ce.connect(le)}}const I=new ee,F=new ee;function D(G,te,le){I.setFromMatrixPosition(te.matrixWorld),F.setFromMatrixPosition(le.matrixWorld);const ge=I.distanceTo(F),Ce=te.projectionMatrix.elements,xe=le.projectionMatrix.elements,je=Ce[14]/(Ce[10]-1),ht=Ce[14]/(Ce[10]+1),vt=(Ce[9]+1)/Ce[5],Ut=(Ce[9]-1)/Ce[5],Z=(Ce[8]-1)/Ce[0],Yn=(xe[8]+1)/xe[0],gt=je*Z,St=je*Yn,at=ge/(-Z+Yn),Jt=at*-Z;if(te.matrixWorld.decompose(G.position,G.quaternion,G.scale),G.translateX(Jt),G.translateZ(at),G.matrixWorld.compose(G.position,G.quaternion,G.scale),G.matrixWorldInverse.copy(G.matrixWorld).invert(),Ce[10]===-1)G.projectionMatrix.copy(te.projectionMatrix),G.projectionMatrixInverse.copy(te.projectionMatrixInverse);else{const Ye=je+at,z=ht+at,P=gt-Jt,re=St+(ge-Jt),de=vt*ht/z*Ye,ye=Ut*ht/z*Ye;G.projectionMatrix.makePerspective(P,re,de,ye,Ye,z),G.projectionMatrixInverse.copy(G.projectionMatrix).invert()}}function k(G,te){te===null?G.matrixWorld.copy(G.matrix):G.matrixWorld.multiplyMatrices(te.matrixWorld,G.matrix),G.matrixWorldInverse.copy(G.matrixWorld).invert()}this.updateCamera=function(G){if(i===null)return;let te=G.near,le=G.far;m.texture!==null&&(m.depthNear>0&&(te=m.depthNear),m.depthFar>0&&(le=m.depthFar)),E.near=N.near=T.near=te,E.far=N.far=T.far=le,(A!==E.near||L!==E.far)&&(i.updateRenderState({depthNear:E.near,depthFar:E.far}),A=E.near,L=E.far),T.layers.mask=G.layers.mask|2,N.layers.mask=G.layers.mask|4,E.layers.mask=T.layers.mask|N.layers.mask;const ge=G.parent,Ce=E.cameras;k(E,ge);for(let xe=0;xe0&&(y.alphaTest.value=p.alphaTest);const v=e.get(p),w=v.envMap,b=v.envMapRotation;w&&(y.envMap.value=w,pu.copy(b),pu.x*=-1,pu.y*=-1,pu.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(pu.y*=-1,pu.z*=-1),y.envMapRotation.value.setFromMatrix4(AEe.makeRotationFromEuler(pu)),y.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,y.reflectivity.value=p.reflectivity,y.ior.value=p.ior,y.refractionRatio.value=p.refractionRatio),p.lightMap&&(y.lightMap.value=p.lightMap,y.lightMapIntensity.value=p.lightMapIntensity,n(p.lightMap,y.lightMapTransform)),p.aoMap&&(y.aoMap.value=p.aoMap,y.aoMapIntensity.value=p.aoMapIntensity,n(p.aoMap,y.aoMapTransform))}function o(y,p){y.diffuse.value.copy(p.color),y.opacity.value=p.opacity,p.map&&(y.map.value=p.map,n(p.map,y.mapTransform))}function a(y,p){y.dashSize.value=p.dashSize,y.totalSize.value=p.dashSize+p.gapSize,y.scale.value=p.scale}function c(y,p,v,w){y.diffuse.value.copy(p.color),y.opacity.value=p.opacity,y.size.value=p.size*v,y.scale.value=w*.5,p.map&&(y.map.value=p.map,n(p.map,y.uvTransform)),p.alphaMap&&(y.alphaMap.value=p.alphaMap,n(p.alphaMap,y.alphaMapTransform)),p.alphaTest>0&&(y.alphaTest.value=p.alphaTest)}function l(y,p){y.diffuse.value.copy(p.color),y.opacity.value=p.opacity,y.rotation.value=p.rotation,p.map&&(y.map.value=p.map,n(p.map,y.mapTransform)),p.alphaMap&&(y.alphaMap.value=p.alphaMap,n(p.alphaMap,y.alphaMapTransform)),p.alphaTest>0&&(y.alphaTest.value=p.alphaTest)}function u(y,p){y.specular.value.copy(p.specular),y.shininess.value=Math.max(p.shininess,1e-4)}function d(y,p){p.gradientMap&&(y.gradientMap.value=p.gradientMap)}function h(y,p){y.metalness.value=p.metalness,p.metalnessMap&&(y.metalnessMap.value=p.metalnessMap,n(p.metalnessMap,y.metalnessMapTransform)),y.roughness.value=p.roughness,p.roughnessMap&&(y.roughnessMap.value=p.roughnessMap,n(p.roughnessMap,y.roughnessMapTransform)),p.envMap&&(y.envMapIntensity.value=p.envMapIntensity)}function f(y,p,v){y.ior.value=p.ior,p.sheen>0&&(y.sheenColor.value.copy(p.sheenColor).multiplyScalar(p.sheen),y.sheenRoughness.value=p.sheenRoughness,p.sheenColorMap&&(y.sheenColorMap.value=p.sheenColorMap,n(p.sheenColorMap,y.sheenColorMapTransform)),p.sheenRoughnessMap&&(y.sheenRoughnessMap.value=p.sheenRoughnessMap,n(p.sheenRoughnessMap,y.sheenRoughnessMapTransform))),p.clearcoat>0&&(y.clearcoat.value=p.clearcoat,y.clearcoatRoughness.value=p.clearcoatRoughness,p.clearcoatMap&&(y.clearcoatMap.value=p.clearcoatMap,n(p.clearcoatMap,y.clearcoatMapTransform)),p.clearcoatRoughnessMap&&(y.clearcoatRoughnessMap.value=p.clearcoatRoughnessMap,n(p.clearcoatRoughnessMap,y.clearcoatRoughnessMapTransform)),p.clearcoatNormalMap&&(y.clearcoatNormalMap.value=p.clearcoatNormalMap,n(p.clearcoatNormalMap,y.clearcoatNormalMapTransform),y.clearcoatNormalScale.value.copy(p.clearcoatNormalScale),p.side===Ji&&y.clearcoatNormalScale.value.negate())),p.dispersion>0&&(y.dispersion.value=p.dispersion),p.iridescence>0&&(y.iridescence.value=p.iridescence,y.iridescenceIOR.value=p.iridescenceIOR,y.iridescenceThicknessMinimum.value=p.iridescenceThicknessRange[0],y.iridescenceThicknessMaximum.value=p.iridescenceThicknessRange[1],p.iridescenceMap&&(y.iridescenceMap.value=p.iridescenceMap,n(p.iridescenceMap,y.iridescenceMapTransform)),p.iridescenceThicknessMap&&(y.iridescenceThicknessMap.value=p.iridescenceThicknessMap,n(p.iridescenceThicknessMap,y.iridescenceThicknessMapTransform))),p.transmission>0&&(y.transmission.value=p.transmission,y.transmissionSamplerMap.value=v.texture,y.transmissionSamplerSize.value.set(v.width,v.height),p.transmissionMap&&(y.transmissionMap.value=p.transmissionMap,n(p.transmissionMap,y.transmissionMapTransform)),y.thickness.value=p.thickness,p.thicknessMap&&(y.thicknessMap.value=p.thicknessMap,n(p.thicknessMap,y.thicknessMapTransform)),y.attenuationDistance.value=p.attenuationDistance,y.attenuationColor.value.copy(p.attenuationColor)),p.anisotropy>0&&(y.anisotropyVector.value.set(p.anisotropy*Math.cos(p.anisotropyRotation),p.anisotropy*Math.sin(p.anisotropyRotation)),p.anisotropyMap&&(y.anisotropyMap.value=p.anisotropyMap,n(p.anisotropyMap,y.anisotropyMapTransform))),y.specularIntensity.value=p.specularIntensity,y.specularColor.value.copy(p.specularColor),p.specularColorMap&&(y.specularColorMap.value=p.specularColorMap,n(p.specularColorMap,y.specularColorMapTransform)),p.specularIntensityMap&&(y.specularIntensityMap.value=p.specularIntensityMap,n(p.specularIntensityMap,y.specularIntensityMapTransform))}function g(y,p){p.matcap&&(y.matcap.value=p.matcap)}function m(y,p){const v=e.get(p).light;y.referencePosition.value.setFromMatrixPosition(v.matrixWorld),y.nearDistance.value=v.shadow.camera.near,y.farDistance.value=v.shadow.camera.far}return{refreshFogUniforms:r,refreshMaterialUniforms:i}}function TEe(t,e,n,r){let i={},s={},o=[];const a=t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS);function c(v,w){const b=w.program;r.uniformBlockBinding(v,b)}function l(v,w){let b=i[v.id];b===void 0&&(g(v),b=u(v),i[v.id]=b,v.addEventListener("dispose",y));const S=w.program;r.updateUBOMapping(v,S);const x=e.render.frame;s[v.id]!==x&&(h(v),s[v.id]=x)}function u(v){const w=d();v.__bindingPointIndex=w;const b=t.createBuffer(),S=v.__size,x=v.usage;return t.bindBuffer(t.UNIFORM_BUFFER,b),t.bufferData(t.UNIFORM_BUFFER,S,x),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.UNIFORM_BUFFER,w,b),b}function d(){for(let v=0;v0&&(b+=S-x),v.__size=b,v.__cache={},this}function m(v){const w={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(w.boundary=4,w.storage=4):v.isVector2?(w.boundary=8,w.storage=8):v.isVector3||v.isColor?(w.boundary=16,w.storage=12):v.isVector4?(w.boundary=16,w.storage=16):v.isMatrix3?(w.boundary=48,w.storage=48):v.isMatrix4?(w.boundary=64,w.storage=64):v.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",v),w}function y(v){const w=v.target;w.removeEventListener("dispose",y);const b=o.indexOf(w.__bindingPointIndex);o.splice(b,1),t.deleteBuffer(i[w.id]),delete i[w.id],delete s[w.id]}function p(){for(const v in i)t.deleteBuffer(i[v]);o=[],i={},s={}}return{bind:c,update:l,dispose:p}}class IEe{constructor(e={}){const{canvas:n=gye(),context:r=null,depth:i=!0,stencil:s=!1,alpha:o=!1,antialias:a=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:l=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:d=!1,reverseDepthBuffer:h=!1}=e;this.isWebGLRenderer=!0;let f;if(r!==null){if(typeof WebGLRenderingContext<"u"&&r instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");f=r.getContextAttributes().alpha}else f=o;const g=new Uint32Array(4),m=new Int32Array(4);let y=null,p=null;const v=[],w=[];this.domElement=n,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Gs,this.toneMapping=Dl,this.toneMappingExposure=1;const b=this;let S=!1,x=0,T=0,N=null,_=-1,E=null;const A=new _n,L=new _n;let $=null;const W=new Yt(0);let C=0,I=n.width,F=n.height,D=1,k=null,R=null;const q=new _n(0,0,I,F),ne=new _n(0,0,I,F);let X=!1;const G=new QT;let te=!1,le=!1;const ge=new Bn,Ce=new Bn,xe=new ee,je=new _n,ht={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let vt=!1;function Ut(){return N===null?D:1}let Z=r;function Yn(O,J){return n.getContext(O,J)}try{const O={alpha:!0,depth:i,stencil:s,antialias:a,premultipliedAlpha:c,preserveDrawingBuffer:l,powerPreference:u,failIfMajorPerformanceCaveat:d};if("setAttribute"in n&&n.setAttribute("data-engine",`three.js r${WT}`),n.addEventListener("webglcontextlost",ue,!1),n.addEventListener("webglcontextrestored",Ne,!1),n.addEventListener("webglcontextcreationerror",Ue,!1),Z===null){const J="webgl2";if(Z=Yn(J,O),Z===null)throw Yn(J)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(O){throw console.error("THREE.WebGLRenderer: "+O.message),O}let gt,St,at,Jt,Ye,z,P,re,de,ye,he,Ke,Re,ze,Dt,_e,He,st,ft,Ve,Rt,bt,Lt,Y;function Pe(){gt=new Rbe(Z),gt.init(),bt=new wEe(Z,gt),St=new Cbe(Z,gt,e,bt),at=new gEe(Z,gt),St.reverseDepthBuffer&&h&&at.buffers.depth.setReversed(!0),Jt=new Lbe(Z),Ye=new eEe,z=new yEe(Z,gt,at,Ye,St,bt,Jt),P=new Ibe(b),re=new Dbe(b),de=new Hye(Z),Lt=new xbe(Z,de),ye=new Obe(Z,de,Jt,Lt),he=new $be(Z,ye,de,Jt),ft=new kbe(Z,St,z),_e=new Tbe(Ye),Ke=new Q1e(b,P,re,gt,St,Lt,_e),Re=new CEe(b,Ye),ze=new nEe,Dt=new cEe(gt),st=new Sbe(b,P,re,at,he,f,c),He=new fEe(b,he,St),Y=new TEe(Z,Jt,St,at),Ve=new Abe(Z,gt,Jt),Rt=new Ube(Z,gt,Jt),Jt.programs=Ke.programs,b.capabilities=St,b.extensions=gt,b.properties=Ye,b.renderLists=ze,b.shadowMap=He,b.state=at,b.info=Jt}Pe();const ce=new xEe(b,Z);this.xr=ce,this.getContext=function(){return Z},this.getContextAttributes=function(){return Z.getContextAttributes()},this.forceContextLoss=function(){const O=gt.get("WEBGL_lose_context");O&&O.loseContext()},this.forceContextRestore=function(){const O=gt.get("WEBGL_lose_context");O&&O.restoreContext()},this.getPixelRatio=function(){return D},this.setPixelRatio=function(O){O!==void 0&&(D=O,this.setSize(I,F,!1))},this.getSize=function(O){return O.set(I,F)},this.setSize=function(O,J,ae=!0){if(ce.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}I=O,F=J,n.width=Math.floor(O*D),n.height=Math.floor(J*D),ae===!0&&(n.style.width=O+"px",n.style.height=J+"px"),this.setViewport(0,0,O,J)},this.getDrawingBufferSize=function(O){return O.set(I*D,F*D).floor()},this.setDrawingBufferSize=function(O,J,ae){I=O,F=J,D=ae,n.width=Math.floor(O*ae),n.height=Math.floor(J*ae),this.setViewport(0,0,O,J)},this.getCurrentViewport=function(O){return O.copy(A)},this.getViewport=function(O){return O.copy(q)},this.setViewport=function(O,J,ae,ie){O.isVector4?q.set(O.x,O.y,O.z,O.w):q.set(O,J,ae,ie),at.viewport(A.copy(q).multiplyScalar(D).round())},this.getScissor=function(O){return O.copy(ne)},this.setScissor=function(O,J,ae,ie){O.isVector4?ne.set(O.x,O.y,O.z,O.w):ne.set(O,J,ae,ie),at.scissor(L.copy(ne).multiplyScalar(D).round())},this.getScissorTest=function(){return X},this.setScissorTest=function(O){at.setScissorTest(X=O)},this.setOpaqueSort=function(O){k=O},this.setTransparentSort=function(O){R=O},this.getClearColor=function(O){return O.copy(st.getClearColor())},this.setClearColor=function(){st.setClearColor.apply(st,arguments)},this.getClearAlpha=function(){return st.getClearAlpha()},this.setClearAlpha=function(){st.setClearAlpha.apply(st,arguments)},this.clear=function(O=!0,J=!0,ae=!0){let ie=0;if(O){let Q=!1;if(N!==null){const Ae=N.texture.format;Q=Ae===ZT||Ae===YT||Ae===XT}if(Q){const Ae=N.texture.type,Fe=Ae===wc||Ae===pd||Ae===Jm||Ae===Hf||Ae===qT||Ae===KT,Ze=st.getClearColor(),Je=st.getClearAlpha(),Et=Ze.r,_t=Ze.g,Xe=Ze.b;Fe?(g[0]=Et,g[1]=_t,g[2]=Xe,g[3]=Je,Z.clearBufferuiv(Z.COLOR,0,g)):(m[0]=Et,m[1]=_t,m[2]=Xe,m[3]=Je,Z.clearBufferiv(Z.COLOR,0,m))}else ie|=Z.COLOR_BUFFER_BIT}J&&(ie|=Z.DEPTH_BUFFER_BIT),ae&&(ie|=Z.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),Z.clear(ie)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){n.removeEventListener("webglcontextlost",ue,!1),n.removeEventListener("webglcontextrestored",Ne,!1),n.removeEventListener("webglcontextcreationerror",Ue,!1),ze.dispose(),Dt.dispose(),Ye.dispose(),P.dispose(),re.dispose(),he.dispose(),Lt.dispose(),Y.dispose(),Ke.dispose(),ce.dispose(),ce.removeEventListener("sessionstart",Me),ce.removeEventListener("sessionend",Oe),Qe.stop()};function ue(O){O.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),S=!0}function Ne(){console.log("THREE.WebGLRenderer: Context Restored."),S=!1;const O=Jt.autoReset,J=He.enabled,ae=He.autoUpdate,ie=He.needsUpdate,Q=He.type;Pe(),Jt.autoReset=O,He.enabled=J,He.autoUpdate=ae,He.needsUpdate=ie,He.type=Q}function Ue(O){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",O.statusMessage)}function j(O){const J=O.target;J.removeEventListener("dispose",j),U(J)}function U(O){V(O),Ye.remove(O)}function V(O){const J=Ye.get(O).programs;J!==void 0&&(J.forEach(function(ae){Ke.releaseProgram(ae)}),O.isShaderMaterial&&Ke.releaseShaderCache(O))}this.renderBufferDirect=function(O,J,ae,ie,Q,Ae){J===null&&(J=ht);const Fe=Q.isMesh&&Q.matrixWorld.determinant()<0,Ze=fi(O,J,ae,ie,Q);at.setMaterial(ie,Fe);let Je=ae.index,Et=1;if(ie.wireframe===!0){if(Je=ye.getWireframeAttribute(ae),Je===void 0)return;Et=2}const _t=ae.drawRange,Xe=ae.attributes.position;let zt=_t.start*Et,dn=(_t.start+_t.count)*Et;Ae!==null&&(zt=Math.max(zt,Ae.start*Et),dn=Math.min(dn,(Ae.start+Ae.count)*Et)),Je!==null?(zt=Math.max(zt,0),dn=Math.min(dn,Je.count)):Xe!=null&&(zt=Math.max(zt,0),dn=Math.min(dn,Xe.count));const An=dn-zt;if(An<0||An===1/0)return;Lt.setup(Q,ie,Ze,ae,Je);let Xr,Qt=Ve;if(Je!==null&&(Xr=de.get(Je),Qt=Rt,Qt.setIndex(Xr)),Q.isMesh)ie.wireframe===!0?(at.setLineWidth(ie.wireframeLinewidth*Ut()),Qt.setMode(Z.LINES)):Qt.setMode(Z.TRIANGLES);else if(Q.isLine){let nt=ie.linewidth;nt===void 0&&(nt=1),at.setLineWidth(nt*Ut()),Q.isLineSegments?Qt.setMode(Z.LINES):Q.isLineLoop?Qt.setMode(Z.LINE_LOOP):Qt.setMode(Z.LINE_STRIP)}else Q.isPoints?Qt.setMode(Z.POINTS):Q.isSprite&&Qt.setMode(Z.TRIANGLES);if(Q.isBatchedMesh)if(Q._multiDrawInstances!==null)Qt.renderMultiDrawInstances(Q._multiDrawStarts,Q._multiDrawCounts,Q._multiDrawCount,Q._multiDrawInstances);else if(gt.get("WEBGL_multi_draw"))Qt.renderMultiDraw(Q._multiDrawStarts,Q._multiDrawCounts,Q._multiDrawCount);else{const nt=Q._multiDrawStarts,po=Q._multiDrawCounts,en=Q._multiDrawCount,pi=Je?de.get(Je).bytesPerElement:1,_c=Ye.get(ie).currentProgram.getUniforms();for(let gi=0;gi{function Ae(){if(ie.forEach(function(Fe){Ye.get(Fe).currentProgram.isReady()&&ie.delete(Fe)}),ie.size===0){Q(O);return}setTimeout(Ae,10)}gt.get("KHR_parallel_shader_compile")!==null?Ae():setTimeout(Ae,10)})};let oe=null;function fe(O){oe&&oe(O)}function Me(){Qe.stop()}function Oe(){Qe.start()}const Qe=new l6;Qe.setAnimationLoop(fe),typeof self<"u"&&Qe.setContext(self),this.setAnimationLoop=function(O){oe=O,ce.setAnimationLoop(O),O===null?Qe.stop():Qe.start()},ce.addEventListener("sessionstart",Me),ce.addEventListener("sessionend",Oe),this.render=function(O,J){if(J!==void 0&&J.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(S===!0)return;if(O.matrixWorldAutoUpdate===!0&&O.updateMatrixWorld(),J.parent===null&&J.matrixWorldAutoUpdate===!0&&J.updateMatrixWorld(),ce.enabled===!0&&ce.isPresenting===!0&&(ce.cameraAutoUpdate===!0&&ce.updateCamera(J),J=ce.getCamera()),O.isScene===!0&&O.onBeforeRender(b,O,J,N),p=Dt.get(O,w.length),p.init(J),w.push(p),Ce.multiplyMatrices(J.projectionMatrix,J.matrixWorldInverse),G.setFromProjectionMatrix(Ce),le=this.localClippingEnabled,te=_e.init(this.clippingPlanes,le),y=ze.get(O,v.length),y.init(),v.push(y),ce.enabled===!0&&ce.isPresenting===!0){const Ae=b.xr.getDepthSensingMesh();Ae!==null&&et(Ae,J,-1/0,b.sortObjects)}et(O,J,0,b.sortObjects),y.finish(),b.sortObjects===!0&&y.sort(k,R),vt=ce.enabled===!1||ce.isPresenting===!1||ce.hasDepthSensing()===!1,vt&&st.addToRenderList(y,O),this.info.render.frame++,te===!0&&_e.beginShadows();const ae=p.state.shadowsArray;He.render(ae,O,J),te===!0&&_e.endShadows(),this.info.autoReset===!0&&this.info.reset();const ie=y.opaque,Q=y.transmissive;if(p.setupLights(),J.isArrayCamera){const Ae=J.cameras;if(Q.length>0)for(let Fe=0,Ze=Ae.length;Fe0&&wt(ie,Q,O,J),vt&&st.render(O),yt(y,O,J);N!==null&&(z.updateMultisampleRenderTarget(N),z.updateRenderTargetMipmap(N)),O.isScene===!0&&O.onAfterRender(b,O,J),Lt.resetDefaultState(),_=-1,E=null,w.pop(),w.length>0?(p=w[w.length-1],te===!0&&_e.setGlobalState(b.clippingPlanes,p.state.camera)):p=null,v.pop(),v.length>0?y=v[v.length-1]:y=null};function et(O,J,ae,ie){if(O.visible===!1)return;if(O.layers.test(J.layers)){if(O.isGroup)ae=O.renderOrder;else if(O.isLOD)O.autoUpdate===!0&&O.update(J);else if(O.isLight)p.pushLight(O),O.castShadow&&p.pushShadow(O);else if(O.isSprite){if(!O.frustumCulled||G.intersectsSprite(O)){ie&&je.setFromMatrixPosition(O.matrixWorld).applyMatrix4(Ce);const Fe=he.update(O),Ze=O.material;Ze.visible&&y.push(O,Fe,Ze,ae,je.z,null)}}else if((O.isMesh||O.isLine||O.isPoints)&&(!O.frustumCulled||G.intersectsObject(O))){const Fe=he.update(O),Ze=O.material;if(ie&&(O.boundingSphere!==void 0?(O.boundingSphere===null&&O.computeBoundingSphere(),je.copy(O.boundingSphere.center)):(Fe.boundingSphere===null&&Fe.computeBoundingSphere(),je.copy(Fe.boundingSphere.center)),je.applyMatrix4(O.matrixWorld).applyMatrix4(Ce)),Array.isArray(Ze)){const Je=Fe.groups;for(let Et=0,_t=Je.length;Et<_t;Et++){const Xe=Je[Et],zt=Ze[Xe.materialIndex];zt&&zt.visible&&y.push(O,Fe,zt,ae,je.z,Xe)}}else Ze.visible&&y.push(O,Fe,Ze,ae,je.z,null)}}const Ae=O.children;for(let Fe=0,Ze=Ae.length;Fe0&&Tt(Q,J,ae),Ae.length>0&&Tt(Ae,J,ae),Fe.length>0&&Tt(Fe,J,ae),at.buffers.depth.setTest(!0),at.buffers.depth.setMask(!0),at.buffers.color.setMask(!0),at.setPolygonOffset(!1)}function wt(O,J,ae,ie){if((ae.isScene===!0?ae.overrideMaterial:null)!==null)return;p.state.transmissionRenderTarget[ie.id]===void 0&&(p.state.transmissionRenderTarget[ie.id]=new gd(1,1,{generateMipmaps:!0,type:gt.has("EXT_color_buffer_half_float")||gt.has("EXT_color_buffer_float")?N0:wc,minFilter:Hu,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Kt.workingColorSpace}));const Ae=p.state.transmissionRenderTarget[ie.id],Fe=ie.viewport||A;Ae.setSize(Fe.z,Fe.w);const Ze=b.getRenderTarget();b.setRenderTarget(Ae),b.getClearColor(W),C=b.getClearAlpha(),C<1&&b.setClearColor(16777215,.5),b.clear(),vt&&st.render(ae);const Je=b.toneMapping;b.toneMapping=Dl;const Et=ie.viewport;if(ie.viewport!==void 0&&(ie.viewport=void 0),p.setupLightsView(ie),te===!0&&_e.setGlobalState(b.clippingPlanes,ie),Tt(O,ae,ie),z.updateMultisampleRenderTarget(Ae),z.updateRenderTargetMipmap(Ae),gt.has("WEBGL_multisampled_render_to_texture")===!1){let _t=!1;for(let Xe=0,zt=J.length;Xe0),Xe=!!ae.morphAttributes.position,zt=!!ae.morphAttributes.normal,dn=!!ae.morphAttributes.color;let An=Dl;ie.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(An=b.toneMapping);const Xr=ae.morphAttributes.position||ae.morphAttributes.normal||ae.morphAttributes.color,Qt=Xr!==void 0?Xr.length:0,nt=Ye.get(ie),po=p.state.lights;if(te===!0&&(le===!0||O!==E)){const Ii=O===E&&ie.id===_;_e.setState(ie,O,Ii)}let en=!1;ie.version===nt.__version?(nt.needsLights&&nt.lightsStateVersion!==po.state.version||nt.outputColorSpace!==Ze||Q.isBatchedMesh&&nt.batching===!1||!Q.isBatchedMesh&&nt.batching===!0||Q.isBatchedMesh&&nt.batchingColor===!0&&Q.colorTexture===null||Q.isBatchedMesh&&nt.batchingColor===!1&&Q.colorTexture!==null||Q.isInstancedMesh&&nt.instancing===!1||!Q.isInstancedMesh&&nt.instancing===!0||Q.isSkinnedMesh&&nt.skinning===!1||!Q.isSkinnedMesh&&nt.skinning===!0||Q.isInstancedMesh&&nt.instancingColor===!0&&Q.instanceColor===null||Q.isInstancedMesh&&nt.instancingColor===!1&&Q.instanceColor!==null||Q.isInstancedMesh&&nt.instancingMorph===!0&&Q.morphTexture===null||Q.isInstancedMesh&&nt.instancingMorph===!1&&Q.morphTexture!==null||nt.envMap!==Je||ie.fog===!0&&nt.fog!==Ae||nt.numClippingPlanes!==void 0&&(nt.numClippingPlanes!==_e.numPlanes||nt.numIntersection!==_e.numIntersection)||nt.vertexAlphas!==Et||nt.vertexTangents!==_t||nt.morphTargets!==Xe||nt.morphNormals!==zt||nt.morphColors!==dn||nt.toneMapping!==An||nt.morphTargetsCount!==Qt)&&(en=!0):(en=!0,nt.__version=ie.version);let pi=nt.currentProgram;en===!0&&(pi=xn(ie,J,Q));let _c=!1,gi=!1,Jl=!1;const Cn=pi.getUniforms(),Ds=nt.uniforms;if(at.useProgram(pi.program)&&(_c=!0,gi=!0,Jl=!0),ie.id!==_&&(_=ie.id,gi=!0),_c||E!==O){at.buffers.depth.getReversed()?(ge.copy(O.projectionMatrix),yye(ge),wye(ge),Cn.setValue(Z,"projectionMatrix",ge)):Cn.setValue(Z,"projectionMatrix",O.projectionMatrix),Cn.setValue(Z,"viewMatrix",O.matrixWorldInverse);const go=Cn.map.cameraPosition;go!==void 0&&go.setValue(Z,xe.setFromMatrixPosition(O.matrixWorld)),St.logarithmicDepthBuffer&&Cn.setValue(Z,"logDepthBufFC",2/(Math.log(O.far+1)/Math.LN2)),(ie.isMeshPhongMaterial||ie.isMeshToonMaterial||ie.isMeshLambertMaterial||ie.isMeshBasicMaterial||ie.isMeshStandardMaterial||ie.isShaderMaterial)&&Cn.setValue(Z,"isOrthographic",O.isOrthographicCamera===!0),E!==O&&(E=O,gi=!0,Jl=!0)}if(Q.isSkinnedMesh){Cn.setOptional(Z,Q,"bindMatrix"),Cn.setOptional(Z,Q,"bindMatrixInverse");const Ii=Q.skeleton;Ii&&(Ii.boneTexture===null&&Ii.computeBoneTexture(),Cn.setValue(Z,"boneTexture",Ii.boneTexture,z))}Q.isBatchedMesh&&(Cn.setOptional(Z,Q,"batchingTexture"),Cn.setValue(Z,"batchingTexture",Q._matricesTexture,z),Cn.setOptional(Z,Q,"batchingIdTexture"),Cn.setValue(Z,"batchingIdTexture",Q._indirectTexture,z),Cn.setOptional(Z,Q,"batchingColorTexture"),Q._colorsTexture!==null&&Cn.setValue(Z,"batchingColorTexture",Q._colorsTexture,z));const Ql=ae.morphAttributes;if((Ql.position!==void 0||Ql.normal!==void 0||Ql.color!==void 0)&&ft.update(Q,ae,pi),(gi||nt.receiveShadow!==Q.receiveShadow)&&(nt.receiveShadow=Q.receiveShadow,Cn.setValue(Z,"receiveShadow",Q.receiveShadow)),ie.isMeshGouraudMaterial&&ie.envMap!==null&&(Ds.envMap.value=Je,Ds.flipEnvMap.value=Je.isCubeTexture&&Je.isRenderTargetTexture===!1?-1:1),ie.isMeshStandardMaterial&&ie.envMap===null&&J.environment!==null&&(Ds.envMapIntensity.value=J.environmentIntensity),gi&&(Cn.setValue(Z,"toneMappingExposure",b.toneMappingExposure),nt.needsLights&&Go(Ds,Jl),Ae&&ie.fog===!0&&Re.refreshFogUniforms(Ds,Ae),Re.refreshMaterialUniforms(Ds,ie,D,F,p.state.transmissionRenderTarget[O.id]),rv.upload(Z,Kr(nt),Ds,z)),ie.isShaderMaterial&&ie.uniformsNeedUpdate===!0&&(rv.upload(Z,Kr(nt),Ds,z),ie.uniformsNeedUpdate=!1),ie.isSpriteMaterial&&Cn.setValue(Z,"center",Q.center),Cn.setValue(Z,"modelViewMatrix",Q.modelViewMatrix),Cn.setValue(Z,"normalMatrix",Q.normalMatrix),Cn.setValue(Z,"modelMatrix",Q.matrixWorld),ie.isShaderMaterial||ie.isRawShaderMaterial){const Ii=ie.uniformsGroups;for(let go=0,qo=Ii.length;go0&&z.useMultisampledRTT(O)===!1?Q=Ye.get(O).__webglMultisampledFramebuffer:Array.isArray(_t)?Q=_t[ae]:Q=_t,A.copy(O.viewport),L.copy(O.scissor),$=O.scissorTest}else A.copy(q).multiplyScalar(D).floor(),L.copy(ne).multiplyScalar(D).floor(),$=X;if(at.bindFramebuffer(Z.FRAMEBUFFER,Q)&&ie&&at.drawBuffers(O,Q),at.viewport(A),at.scissor(L),at.setScissorTest($),Ae){const Je=Ye.get(O.texture);Z.framebufferTexture2D(Z.FRAMEBUFFER,Z.COLOR_ATTACHMENT0,Z.TEXTURE_CUBE_MAP_POSITIVE_X+J,Je.__webglTexture,ae)}else if(Fe){const Je=Ye.get(O.texture),Et=J||0;Z.framebufferTextureLayer(Z.FRAMEBUFFER,Z.COLOR_ATTACHMENT0,Je.__webglTexture,ae||0,Et)}_=-1},this.readRenderTargetPixels=function(O,J,ae,ie,Q,Ae,Fe){if(!(O&&O.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Ze=Ye.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&Fe!==void 0&&(Ze=Ze[Fe]),Ze){at.bindFramebuffer(Z.FRAMEBUFFER,Ze);try{const Je=O.texture,Et=Je.format,_t=Je.type;if(!St.textureFormatReadable(Et)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!St.textureTypeReadable(_t)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}J>=0&&J<=O.width-ie&&ae>=0&&ae<=O.height-Q&&Z.readPixels(J,ae,ie,Q,bt.convert(Et),bt.convert(_t),Ae)}finally{const Je=N!==null?Ye.get(N).__webglFramebuffer:null;at.bindFramebuffer(Z.FRAMEBUFFER,Je)}}},this.readRenderTargetPixelsAsync=async function(O,J,ae,ie,Q,Ae,Fe){if(!(O&&O.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Ze=Ye.get(O).__webglFramebuffer;if(O.isWebGLCubeRenderTarget&&Fe!==void 0&&(Ze=Ze[Fe]),Ze){const Je=O.texture,Et=Je.format,_t=Je.type;if(!St.textureFormatReadable(Et))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!St.textureTypeReadable(_t))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(J>=0&&J<=O.width-ie&&ae>=0&&ae<=O.height-Q){at.bindFramebuffer(Z.FRAMEBUFFER,Ze);const Xe=Z.createBuffer();Z.bindBuffer(Z.PIXEL_PACK_BUFFER,Xe),Z.bufferData(Z.PIXEL_PACK_BUFFER,Ae.byteLength,Z.STREAM_READ),Z.readPixels(J,ae,ie,Q,bt.convert(Et),bt.convert(_t),0);const zt=N!==null?Ye.get(N).__webglFramebuffer:null;at.bindFramebuffer(Z.FRAMEBUFFER,zt);const dn=Z.fenceSync(Z.SYNC_GPU_COMMANDS_COMPLETE,0);return Z.flush(),await mye(Z,dn,4),Z.bindBuffer(Z.PIXEL_PACK_BUFFER,Xe),Z.getBufferSubData(Z.PIXEL_PACK_BUFFER,0,Ae),Z.deleteBuffer(Xe),Z.deleteSync(dn),Ae}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(O,J=null,ae=0){O.isTexture!==!0&&(dg("WebGLRenderer: copyFramebufferToTexture function signature has changed."),J=arguments[0]||null,O=arguments[1]);const ie=Math.pow(2,-ae),Q=Math.floor(O.image.width*ie),Ae=Math.floor(O.image.height*ie),Fe=J!==null?J.x:0,Ze=J!==null?J.y:0;z.setTexture2D(O,0),Z.copyTexSubImage2D(Z.TEXTURE_2D,ae,0,0,Fe,Ze,Q,Ae),at.unbindTexture()},this.copyTextureToTexture=function(O,J,ae=null,ie=null,Q=0){O.isTexture!==!0&&(dg("WebGLRenderer: copyTextureToTexture function signature has changed."),ie=arguments[0]||null,O=arguments[1],J=arguments[2],Q=arguments[3]||0,ae=null);let Ae,Fe,Ze,Je,Et,_t,Xe,zt,dn;const An=O.isCompressedTexture?O.mipmaps[Q]:O.image;ae!==null?(Ae=ae.max.x-ae.min.x,Fe=ae.max.y-ae.min.y,Ze=ae.isBox3?ae.max.z-ae.min.z:1,Je=ae.min.x,Et=ae.min.y,_t=ae.isBox3?ae.min.z:0):(Ae=An.width,Fe=An.height,Ze=An.depth||1,Je=0,Et=0,_t=0),ie!==null?(Xe=ie.x,zt=ie.y,dn=ie.z):(Xe=0,zt=0,dn=0);const Xr=bt.convert(J.format),Qt=bt.convert(J.type);let nt;J.isData3DTexture?(z.setTexture3D(J,0),nt=Z.TEXTURE_3D):J.isDataArrayTexture||J.isCompressedArrayTexture?(z.setTexture2DArray(J,0),nt=Z.TEXTURE_2D_ARRAY):(z.setTexture2D(J,0),nt=Z.TEXTURE_2D),Z.pixelStorei(Z.UNPACK_FLIP_Y_WEBGL,J.flipY),Z.pixelStorei(Z.UNPACK_PREMULTIPLY_ALPHA_WEBGL,J.premultiplyAlpha),Z.pixelStorei(Z.UNPACK_ALIGNMENT,J.unpackAlignment);const po=Z.getParameter(Z.UNPACK_ROW_LENGTH),en=Z.getParameter(Z.UNPACK_IMAGE_HEIGHT),pi=Z.getParameter(Z.UNPACK_SKIP_PIXELS),_c=Z.getParameter(Z.UNPACK_SKIP_ROWS),gi=Z.getParameter(Z.UNPACK_SKIP_IMAGES);Z.pixelStorei(Z.UNPACK_ROW_LENGTH,An.width),Z.pixelStorei(Z.UNPACK_IMAGE_HEIGHT,An.height),Z.pixelStorei(Z.UNPACK_SKIP_PIXELS,Je),Z.pixelStorei(Z.UNPACK_SKIP_ROWS,Et),Z.pixelStorei(Z.UNPACK_SKIP_IMAGES,_t);const Jl=O.isDataArrayTexture||O.isData3DTexture,Cn=J.isDataArrayTexture||J.isData3DTexture;if(O.isRenderTargetTexture||O.isDepthTexture){const Ds=Ye.get(O),Ql=Ye.get(J),Ii=Ye.get(Ds.__renderTarget),go=Ye.get(Ql.__renderTarget);at.bindFramebuffer(Z.READ_FRAMEBUFFER,Ii.__webglFramebuffer),at.bindFramebuffer(Z.DRAW_FRAMEBUFFER,go.__webglFramebuffer);for(let qo=0;qo0&&(n.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(n.object.backgroundIntensity=this.backgroundIntensity),n.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(n.object.environmentIntensity=this.environmentIntensity),n.object.environmentRotation=this.environmentRotation.toArray(),n}}class g6 extends Nd{static get type(){return"LineBasicMaterial"}constructor(e){super(),this.isLineBasicMaterial=!0,this.color=new Yt(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const pb=new ee,gb=new ee,RO=new Bn,Yp=new JT,fw=new O0,V_=new ee,OO=new ee;class NEe extends ui{constructor(e=new ho,n=new g6){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=n,this.updateMorphTargets()}copy(e,n){return super.copy(e,n),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const n=e.attributes.position,r=[0];for(let i=1,s=n.count;i0){const i=n[r[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;sr)return;V_.applyMatrix4(t.matrixWorld);const c=e.ray.origin.distanceTo(V_);if(!(ce.far))return{distance:c,point:OO.clone().applyMatrix4(t.matrixWorld),index:i,face:null,faceIndex:null,barycoord:null,object:t}}const UO=new ee,LO=new ee;class PEe extends NEe{constructor(e,n){super(e,n),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const n=e.attributes.position,r=[];for(let i=0,s=n.count;i0){const i=n[r[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;si.far)return;s.push({distance:l,distanceToRay:Math.sqrt(a),point:c,index:e,face:null,faceIndex:null,barycoord:null,object:o})}}class tI extends ho{constructor(e=[],n=[],r=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:n,radius:r,detail:i};const s=[],o=[];a(i),l(r),u(),this.setAttribute("position",new xs(s,3)),this.setAttribute("normal",new xs(s.slice(),3)),this.setAttribute("uv",new xs(o,2)),i===0?this.computeVertexNormals():this.normalizeNormals();function a(v){const w=new ee,b=new ee,S=new ee;for(let x=0;x.9&&T<.1&&(w<.2&&(o[v+0]+=1),b<.2&&(o[v+2]+=1),S<.2&&(o[v+4]+=1))}}function h(v){s.push(v.x,v.y,v.z)}function f(v,w){const b=v*3;w.x=e[b+0],w.y=e[b+1],w.z=e[b+2]}function g(){const v=new ee,w=new ee,b=new ee,S=new ee,x=new Wt,T=new Wt,N=new Wt;for(let _=0,E=0;_{const t=Pt.useRef(null);return Pt.useEffect(()=>{const e=t.current;if(!e)return;const n=new MEe;n.background=null;const r=new ys(60,window.innerWidth/window.innerHeight,.1,1e3);r.position.z=28;const i=new IEe({antialias:!0,alpha:!0});i.setSize(window.innerWidth,window.innerHeight),i.setPixelRatio(Math.min(window.devicePixelRatio,2)),e.appendChild(i.domElement);const s=new kEe(1842979,.6);n.add(s);const o=new HO(16347926,1.3,120);o.position.set(14,10,30),n.add(o);const a=new HO(4153874,1.1,110);a.position.set(-16,-12,25),n.add(a);const c=new nI(10,1),l=new OEe({color:1053462,roughness:.42,metalness:.48}),u=new ma(c,l);n.add(u);const d=new REe(c),h=new PEe(d,new g6({color:4153874,linewidth:1}));u.add(h);const f=new fg;n.add(f);const g=new ho,m=180,y=new Float32Array(m*3);for(let x=0;x{r.aspect=window.innerWidth/window.innerHeight,r.updateProjectionMatrix(),i.setSize(window.innerWidth,window.innerHeight)};window.addEventListener("resize",b);const S=()=>{u.rotation.x+=.0025,u.rotation.y+=.0018,h.rotation.z+=.0015,f.rotation.y+=9e-4,i.render(n,r),w=requestAnimationFrame(S)};return S(),()=>{cancelAnimationFrame(w),window.removeEventListener("resize",b),g.dispose(),p.dispose(),d.dispose(),h.material.dispose(),c.dispose(),l.dispose(),i.dispose(),i.domElement.parentNode===e&&e.removeChild(i.domElement)}},[]),M.jsx("div",{className:"animated-background",ref:t,"aria-hidden":"true"})},BEe="STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8".trim(),FEe="stream-v2upgraded".trim(),rI="testnet".toLowerCase(),gC="https://api.testnet.hiro.so".trim(),zEe=rI==="mainnet"?new Kl({url:gC}):new Kb({url:gC}),HEe=rI==="mainnet"?"mainnet":"testnet",pg=zEe,Xc=BEe,gg=FEe,jEe=HEe,w6=rI,VEe=gC,mC=1000000n,es=t=>{const e=t/mC,n=t%mC;if(n===0n)return e.toString();const r=n.toString().padStart(6,"0").replace(/0+$/,"");return`${e.toString()}.${r}`},mb=t=>{const e=t.trim();if(e.length===0)return 0n;const n=e.split("."),r=BigInt(n[0]||"0"),i=(n[1]||"").padEnd(6,"0").slice(0,6);return r*mC+BigInt(i||"0")},jO=(t,e)=>{const r=new TextEncoder().encode(t.toLowerCase());if(r.length>=e)return r.slice(0,e);const i=new Uint8Array(e);return i.set(r),i},WEe=({payload:t,senderAddress:e})=>{const[n,r]=Pt.useState(null),[i,s]=Pt.useState(!1);if(Pt.useEffect(()=>{if(!e||!t.customer){r(null);return}(async()=>{try{s(!0);const l={contractAddress:Xc,contractName:gg,functionName:"create-airtime-plan",functionArgs:[j4(t.customer),pm(jO(t.phone,16)),pm(jO(t.network,16)),js(mb(t.payout)),js(BigInt(t.interval)),js(BigInt(t.maxClaims))],senderKey:"0".repeat(64),network:pg,anchorMode:ai.Any},u=await eK(l);r(1000n)}catch(l){console.error("Fee estimation failed:",l),r(null)}finally{s(!1)}})()},[t,e]),!e)return null;const o=mb(t.payout)*BigInt(t.maxClaims||"0"),a=n?o+n:o;return M.jsxs("div",{className:"fee-estimator",children:[M.jsx("h4",{children:"Cost Breakdown"}),M.jsxs("div",{className:"fee-row",children:[M.jsx("span",{children:"Plan funding"}),M.jsxs("strong",{children:[es(o)," STX"]})]}),M.jsxs("div",{className:"fee-row",children:[M.jsx("span",{children:"Network fee"}),i?M.jsx("em",{children:"Estimating..."}):n?M.jsxs("strong",{children:[es(n)," STX"]}):M.jsx("em",{children:"~0.001 STX"})]}),M.jsxs("div",{className:"fee-row fee-total",children:[M.jsx("span",{children:"Total cost"}),M.jsxs("strong",{children:[es(a)," STX"]})]}),M.jsx("p",{className:"message",children:"Make sure your wallet has enough STX to cover both the plan and gas."})]})},VO={customer:"",phone:"",network:"",payout:"1",interval:"6",maxClaims:"4"},GEe=({onSubmit:t,disabled:e=!1,currentAddress:n})=>{const[r,i]=Pt.useState(VO),[s,o]=Pt.useState(null),[a,c]=Pt.useState(!1),l=async d=>{d.preventDefault(),o(null);try{if(!r.customer.startsWith("ST")){o("Drop a valid Stacks address for your customer.");return}if(mb(r.payout)===0n){o("Payout must be more than zero.");return}if(Number(r.interval)<=0){o("Interval needs to be at least one block.");return}if(Number(r.maxClaims)<=0){o("Max claims should be at least one.");return}c(!0),await t(r),i(VO)}catch(h){console.error("create-plan",h),o(h.message??"Could not submit plan")}finally{c(!1)}},u=d=>h=>{i(f=>({...f,[d]:h.target.value}))};return M.jsxs("form",{className:"panel",onSubmit:l,children:[M.jsx("h2",{children:"Set up airtime drip"}),M.jsx("p",{className:"message",children:"Fund a plan once and your guy will receive steady STX they can spend on airtime or data."}),M.jsxs("div",{className:"field-grid",children:[M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"customer",children:"Customer address"}),M.jsx("input",{id:"customer",placeholder:"ST3...",value:r.customer,onChange:u("customer"),required:!0}),M.jsx("small",{children:"Use the STX address they shared with you."})]}),M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"phone",children:"Phone number"}),M.jsx("input",{id:"phone",placeholder:"0803xxxxxxx",value:r.phone,onChange:u("phone"),maxLength:16,required:!0}),M.jsx("small",{children:"Supports only Nigerian SIMs for now!"})]}),M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"network",children:"Telco network"}),M.jsx("input",{id:"network",placeholder:"mtn-ng | glo | airtel",value:r.network,onChange:u("network"),maxLength:16,required:!0}),M.jsx("small",{children:"Pick the provider they recharge on."})]}),M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"payout",children:"Amount per drop (STX)"}),M.jsx("input",{id:"payout",type:"number",min:"0",step:"0.000001",value:r.payout,onChange:u("payout"),required:!0})]}),M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"interval",children:"Blocks between drops"}),M.jsx("input",{id:"interval",type:"number",min:"1",value:r.interval,onChange:u("interval"),required:!0}),M.jsx("small",{children:"≈10 mins per block on Stacks."})]}),M.jsxs("div",{className:"field",children:[M.jsx("label",{htmlFor:"maxClaims",children:"Number of drops"}),M.jsx("input",{id:"maxClaims",type:"number",min:"1",value:r.maxClaims,onChange:u("maxClaims"),required:!0})]})]}),s&&M.jsx("p",{className:"message",style:{color:"#fda4af"},children:s}),n&&r.customer&&r.payout&&r.maxClaims&&M.jsx(WEe,{payload:r,senderAddress:n}),M.jsx("div",{className:"wallet-actions",children:M.jsx("button",{type:"submit",className:"primary",disabled:e||a,children:a?"Setting up...":"Create plan"})})]})},iI=({currentBlock:t,targetBlock:e,label:n="Next claim in"})=>{if(!t)return M.jsx("span",{className:"countdown",children:"Loading block height..."});const r=e-t;if(r<=0n)return M.jsx("span",{className:"countdown ready",children:"✓ Ready to claim now!"});const i=Number(r)*10,s=Math.floor(i/60),o=i%60;let a="";return s>0?a=`~${s}h ${o}m`:a=`~${o}m`,M.jsxs("span",{className:"countdown",children:[n,": ",M.jsx("strong",{children:r.toString()})," blocks (",a,")"]})},qEe=({plan:t})=>{const e=[];e.push({date:"Plan start",description:`Created with ${es(t.totalFunded)} STX for ${t.maxClaims.toString()} drops`,type:"create"}),t.totalClaims>0n&&e.push({date:"Claims",description:`${t.totalClaims.toString()} airtime drop${t.totalClaims===1n?"":"s"} claimed (${es(t.totalClaims*t.payoutAmount)} STX)`,type:"claim"});const n=t.payoutAmount*t.maxClaims;if(t.totalFunded>n){const r=t.totalFunded-n;e.push({date:"Top-up",description:`Merchant added ${es(r)} STX`,type:"topup"})}return(t.totalClaims>=t.maxClaims||t.remainingBalance===0n)&&e.push({date:"Status",description:t.remainingBalance===0n?"Plan fully claimed":"Plan completed",type:"claim"}),M.jsxs("div",{className:"plan-history",children:[M.jsx("h4",{children:"Activity Log"}),M.jsx("div",{className:"history-timeline",children:e.map((r,i)=>M.jsxs("div",{className:`history-event history-${r.type}`,children:[M.jsx("span",{className:"history-date",children:r.date}),M.jsx("span",{className:"history-desc",children:r.description})]},i))})]})},KEe=({planId:t,customerAddress:e})=>{const[n,r]=Pt.useState(!1),i=`${window.location.origin}/?plan=${t}&customer=${e}`,s=`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(i)}`,o=()=>{navigator.clipboard.writeText(i)};return M.jsxs("div",{className:"qr-share",children:[M.jsxs("button",{className:"ghost",onClick:()=>r(!n),type:"button",children:[n?"Hide":"Share"," plan link"]}),n&&M.jsxs("div",{className:"qr-content",children:[M.jsx("p",{className:"message",children:"Your customer can scan this QR or click the link to view and claim their airtime directly."}),M.jsx("img",{src:s,alt:"Plan QR Code",className:"qr-image"}),M.jsxs("div",{className:"qr-link",children:[M.jsx("input",{type:"text",value:i,readOnly:!0,className:"share-input"}),M.jsx("button",{className:"secondary",onClick:o,children:"Copy"})]})]})]})},yb=({plan:t,currentAddress:e,currentBlock:n,onClaim:r,onTopup:i,onCancel:s,busy:o=!1})=>{const[a,c]=Pt.useState("1"),[l,u]=Pt.useState(!1),[d,h]=Pt.useState(!1),f=(e==null?void 0:e.toLowerCase())===t.merchant.toLowerCase(),g=(e==null?void 0:e.toLowerCase())===t.customer.toLowerCase(),m=t.maxClaims-t.totalClaims,y=t.remainingBalance>0n,p=g&&y&&m>0n,v=async()=>{try{u(!0),await r(t.id)}finally{u(!1)}},w=async()=>{const S=Number(a);if(!(!Number.isFinite(S)||S<=0))try{u(!0),await i(t.id,S)}finally{u(!1)}},b=async()=>{try{u(!0),await s(t.id)}finally{u(!1)}};return M.jsxs("div",{className:"plan-card",children:[M.jsxs("div",{className:"plan-meta",children:[M.jsx("span",{children:"ID"}),M.jsxs("strong",{children:["#",t.id]}),M.jsx("span",{children:"Merchant"}),M.jsx("strong",{children:t.merchant}),M.jsx("span",{children:"Customer"}),M.jsx("strong",{children:t.customer})]}),M.jsxs("div",{className:"plan-meta",children:[M.jsx("span",{children:"Telco"}),M.jsx("strong",{children:t.network||"-"}),M.jsx("span",{children:"Phone"}),M.jsx("strong",{children:t.phone||"-"}),M.jsx("span",{children:"Payout"}),M.jsxs("strong",{children:[es(t.payoutAmount)," STX"]})]}),M.jsxs("div",{className:"plan-meta",children:[M.jsx("span",{children:"Interval"}),M.jsxs("strong",{children:[t.interval.toString()," blocks"]}),M.jsx("span",{children:"Claims served"}),M.jsxs("strong",{children:[t.totalClaims.toString()," / ",t.maxClaims.toString()]}),M.jsx("span",{children:"Balance left"}),M.jsxs("strong",{children:[es(t.remainingBalance)," STX"]})]}),M.jsxs("div",{className:"plan-actions",children:[g&&M.jsxs(M.Fragment,{children:[n&&M.jsx(iI,{currentBlock:n,targetBlock:t.nextClaimBlock}),M.jsx("button",{className:"secondary",onClick:v,disabled:!p||o||l,children:l?"Processing...":"Claim next drop"})]}),f&&M.jsxs(M.Fragment,{children:[M.jsxs("div",{className:"topup-row",children:[M.jsx("input",{type:"number",min:"1",value:a,onChange:S=>c(S.target.value),style:{width:"100%",background:"rgba(8, 10, 12, 0.8)",border:"1px solid rgba(249, 115, 22, 0.25)",borderRadius:"10px",padding:"10px 14px",color:"#f4f4f5",fontFamily:"Fira Code, monospace"}}),M.jsx("button",{className:"primary",type:"button",onClick:w,disabled:o||l,children:"Top up drops"})]}),M.jsx("button",{className:"ghost",type:"button",onClick:b,disabled:o||l||t.remainingBalance===0n,children:"Cash out leftover"}),M.jsx("small",{className:"message",children:"Once cancelled, plan locks to the amount already collected. No long talk."}),M.jsx(KEe,{planId:t.id,customerAddress:t.customer})]}),!f&&!g&&M.jsx("small",{className:"message",children:"Connect with the right wallet to manage this plan."}),M.jsxs("button",{className:"ghost",onClick:()=>h(!d),type:"button",children:[d?"Hide":"View"," activity log"]})]}),d&&M.jsx(qEe,{plan:t})]})},XEe=({plans:t,currentAddress:e,currentBlock:n,onClaimAll:r,onClaim:i,onTopup:s,onCancel:o,busy:a})=>{const c=t.filter(h=>h.customer.toLowerCase()===(e==null?void 0:e.toLowerCase())),l=c.reduce((h,f)=>{const g=f.maxClaims-f.totalClaims;return f.remainingBalance>0n&&g>0n&&n&&f.nextClaimBlock<=n?h+f.payoutAmount:h},0n),u=c.reduce((h,f)=>h+f.remainingBalance,0n),d=c.filter(h=>{const f=h.maxClaims-h.totalClaims;return h.remainingBalance>0n&&f>0n&&n&&h.nextClaimBlock<=n});return c.length===0?M.jsxs("div",{className:"portal-empty",children:[M.jsx("h3",{children:"Customer View"}),M.jsx("p",{className:"message",children:"No plans found where you are the customer. Ask your merchant to create one for you."})]}):M.jsxs("div",{className:"customer-portal",children:[M.jsxs("div",{className:"portal-header",children:[M.jsx("h3",{children:"Your Airtime Plans"}),M.jsxs("p",{className:"message",children:[c.length," plan",c.length===1?"":"s"," active"]})]}),M.jsxs("div",{className:"portal-stats",children:[M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Total balance"}),M.jsxs("span",{className:"stat-value",children:[es(u)," STX"]})]}),M.jsxs("div",{className:"stat-card stat-highlight",children:[M.jsx("span",{className:"stat-label",children:"Ready to claim"}),M.jsxs("span",{className:"stat-value",children:[es(l)," STX"]})]}),M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Total plans"}),M.jsx("span",{className:"stat-value",children:c.length})]})]}),d.length>1&&M.jsxs("div",{className:"claim-all-section",children:[M.jsx("button",{className:"primary",onClick:r,disabled:!!a,children:a?"Processing...":`Claim all (${d.length} plans)`}),M.jsx("p",{className:"message",children:"Save time by claiming from multiple plans at once."})]}),M.jsx("div",{className:"plan-list",children:c.map(h=>M.jsxs("div",{className:"portal-plan-wrapper",children:[n&&h.remainingBalance>0n&&h.nextClaimBlock>0n&&M.jsx(iI,{currentBlock:n,targetBlock:h.nextClaimBlock}),M.jsx(yb,{plan:h,currentAddress:e,currentBlock:n,onClaim:i,onTopup:s,onCancel:o,busy:a===h.id})]},h.id))})]})},YEe=({plans:t,currentAddress:e,currentBlock:n,onClaim:r,onTopup:i,onCancel:s,busy:o})=>{const a=t.filter(f=>f.merchant.toLowerCase()===(e==null?void 0:e.toLowerCase())),c=a.reduce((f,g)=>f+g.remainingBalance,0n),l=a.reduce((f,g)=>f+g.totalFunded,0n),u=a.reduce((f,g)=>f+g.totalClaims*g.payoutAmount,0n),d=a.filter(f=>f.remainingBalance>0n),h=a.filter(f=>f.remainingBalance===0n);return a.length===0?M.jsxs("div",{className:"portal-empty",children:[M.jsx("h3",{children:"Merchant Dashboard"}),M.jsx("p",{className:"message",children:"No plans found where you are the merchant. Create your first plan below to start dripping airtime."})]}):M.jsxs("div",{className:"merchant-portal",children:[M.jsxs("div",{className:"portal-header",children:[M.jsx("h3",{children:"Merchant Dashboard"}),M.jsxs("p",{className:"message",children:["Managing ",a.length," airtime plan",a.length===1?"":"s"]})]}),M.jsxs("div",{className:"portal-stats",children:[M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Total funded"}),M.jsxs("span",{className:"stat-value",children:[es(l)," STX"]}),M.jsx("span",{className:"stat-subtitle",children:"Lifetime investment"})]}),M.jsxs("div",{className:"stat-card stat-highlight",children:[M.jsx("span",{className:"stat-label",children:"Currently locked"}),M.jsxs("span",{className:"stat-value",children:[es(c)," STX"]}),M.jsx("span",{className:"stat-subtitle",children:"In active plans"})]}),M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Already claimed"}),M.jsxs("span",{className:"stat-value",children:[es(u)," STX"]}),M.jsx("span",{className:"stat-subtitle",children:"By customers"})]})]}),M.jsxs("div",{className:"portal-stats",children:[M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Active plans"}),M.jsx("span",{className:"stat-value",children:d.length})]}),M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Completed plans"}),M.jsx("span",{className:"stat-value",children:h.length})]}),M.jsxs("div",{className:"stat-card",children:[M.jsx("span",{className:"stat-label",children:"Total customers"}),M.jsx("span",{className:"stat-value",children:new Set(a.map(f=>f.customer)).size})]})]}),d.length>0&&M.jsxs(M.Fragment,{children:[M.jsx("h4",{children:"Active Plans"}),M.jsx("div",{className:"plan-list",children:d.map(f=>M.jsxs("div",{className:"portal-plan-wrapper",children:[n&&f.nextClaimBlock>0n?M.jsx(iI,{currentBlock:n,targetBlock:f.nextClaimBlock,label:"Customer can claim in"}):null,M.jsx(yb,{plan:f,currentAddress:e,onClaim:r,onTopup:i,onCancel:s,busy:o===f.id})]},f.id))})]}),h.length>0&&M.jsxs(M.Fragment,{children:[M.jsx("h4",{children:"Completed Plans"}),M.jsx("div",{className:"plan-list",children:h.map(f=>M.jsx(yb,{plan:f,currentAddress:e,onClaim:r,onTopup:i,onCancel:s,busy:o===f.id},f.id))})]})]})},ZEe=({lookupAddress:t,onLookup:e})=>{const[n,r]=Pt.useState(t);Pt.useEffect(()=>{r(t)},[t]);const i=s=>{s.preventDefault(),e(n)};return M.jsx("div",{className:"readonly-view",children:M.jsxs("div",{className:"panel",children:[M.jsx("h3",{children:"View Plans (No Wallet Required)"}),M.jsx("p",{className:"message",children:"Enter a Stacks address to view their airtime plans. Perfect for checking your balance before connecting a wallet."}),M.jsxs("form",{onSubmit:i,className:"lookup-form",children:[M.jsx("input",{type:"text",placeholder:"ST1ABC...XYZ",value:n,onChange:s=>r(s.target.value),className:"lookup-input"}),M.jsx("button",{type:"submit",className:"primary",children:"Look up plans"})]})]})})},JEe=({address:t})=>{if(w6==="mainnet")return null;const e=t?`https://explorer.hiro.so/sandbox/faucet?address=${t}`:"https://explorer.hiro.so/sandbox/faucet";return M.jsxs("div",{className:"faucet-helper",children:[M.jsxs("div",{className:"faucet-content",children:[M.jsx("span",{children:"🪙"}),M.jsxs("div",{children:[M.jsx("p",{children:M.jsx("strong",{children:"Need testnet STX?"})}),M.jsx("p",{className:"message",children:"Get free tokens from the Hiro faucet to test this dApp."})]})]}),M.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"faucet-link",children:"Get testnet STX"})]})},WO=({onGetStarted:t,onLookup:e,lookupAddress:n=""})=>M.jsxs("div",{className:"landing-page",children:[M.jsxs("section",{className:"hero-section",children:["`",M.jsxs("div",{className:"hero-content",children:[M.jsxs("div",{className:"hero-badge",children:[M.jsx("span",{className:"pulse-dot"}),M.jsx("span",{children:"Built on Stacks Blockchain"})]}),M.jsxs("h1",{className:"hero-title",children:["Automate Airtime Top-ups with"," ",M.jsx("span",{className:"accent",children:"STX Streaming"})]}),M.jsx("p",{className:"hero-subtitle",children:"No more POS queues, no more last-minute runs to buy airtime. Set it once, let your people collect small-small as they need am. Like ajo for airtime — steady, automated, and transparent."}),M.jsxs("div",{className:"hero-actions",children:[M.jsx("button",{className:"primary large",onClick:t,children:"Get Started Now"}),M.jsx("a",{href:"#how-it-works",className:"secondary large",children:"Learn How It Works"})]}),M.jsxs("div",{className:"hero-stats",children:[M.jsxs("div",{className:"stat-item",children:[M.jsx("strong",{children:"100%"}),M.jsx("span",{children:"On-chain"})]}),M.jsxs("div",{className:"stat-item",children:[M.jsx("strong",{children:"Zero"}),M.jsx("span",{children:"Middleman"})]}),M.jsxs("div",{className:"stat-item",children:[M.jsx("strong",{children:"~10min"}),M.jsx("span",{children:"Per Block"})]})]})]})]}),M.jsx("section",{className:"section",children:M.jsx(JEe,{})}),M.jsx("section",{className:"section",children:M.jsxs("div",{className:"readonly-section",children:[M.jsx("h2",{className:"section-title",children:"Check Plans Without Connecting"}),M.jsx("p",{className:"section-subtitle",children:"No wallet? No wahala. Enter any Stacks address to view their airtime plans. Great for checking your balance before connecting."}),e&&M.jsx(ZEe,{lookupAddress:n,onLookup:e})]})}),M.jsxs("section",{id:"how-it-works",className:"section",children:[M.jsx("h2",{className:"section-title",children:"How It Works"}),M.jsx("p",{className:"section-subtitle",children:"Three simple steps to start streaming airtime to your people"}),M.jsxs("div",{className:"steps-grid",children:[M.jsxs("div",{className:"step-card",children:[M.jsx("div",{className:"step-number",children:"1"}),M.jsx("h3",{children:"Create a Plan"}),M.jsx("p",{children:"Connect your Stacks wallet and create an airtime drip plan. Specify your customer's wallet address, phone number, network (MTN, Glo, Airtel, 9mobile), and how much STX they should get per interval."}),M.jsxs("div",{className:"step-example",children:[M.jsx("strong",{children:"Example:"})," Send 2 STX every 144 blocks (~24 hours) for 30 days"]})]}),M.jsxs("div",{className:"step-card",children:[M.jsx("div",{className:"step-number",children:"2"}),M.jsx("h3",{children:"Funds Lock On-Chain"}),M.jsx("p",{children:"Your STX gets locked in the smart contract — no one can touch it, not even you (until the plan ends). The contract releases funds automatically based on block height. Fully trustless and transparent."}),M.jsxs("div",{className:"step-example",children:[M.jsx("strong",{children:"Example:"})," Lock 60 STX for 30 daily payments of 2 STX each"]})]}),M.jsxs("div",{className:"step-card",children:[M.jsx("div",{className:"step-number",children:"3"}),M.jsx("h3",{children:"Customer Claims Anytime"}),M.jsx("p",{children:"Your customer connects their wallet and claims their airtime whenever the next interval is ready. No permission needed from you. They see a countdown timer and claim with one click. Simple and clean."}),M.jsxs("div",{className:"step-example",children:[M.jsx("strong",{children:"Example:"})," After 24 hours, claim 2 STX. Repeat daily."]})]})]})]}),M.jsxs("section",{className:"section alt-bg",children:[M.jsx("h2",{className:"section-title",children:"Perfect For"}),M.jsxs("div",{className:"usecases-grid",children:[M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"📱"}),M.jsx("h3",{children:"Airtime Merchants"}),M.jsx("p",{children:"Automate recurring top-ups for loyal customers. Set it once, forget it. They collect when they need data or airtime, you don't have to remember."})]}),M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"💼"}),M.jsx("h3",{children:"Small Business Owners"}),M.jsx("p",{children:"Keep your staff connected without manually sending airtime every week. Lock the budget on-chain, let them draw small amounts as needed."})]}),M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"👨‍👩‍👧‍👦"}),M.jsx("h3",{children:"Parents & Guardians"}),M.jsx("p",{children:"Send pocket money to your children or dependents gradually. No bulk payments they'll finish in one week. Controlled, steady allowance system."})]}),M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"🚗"}),M.jsx("h3",{children:"Transport & Logistics"}),M.jsx("p",{children:'Keep your drivers topped up with airtime/data for route updates. No more "I no get airtime" excuses. Automated delivery every interval.'})]}),M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"🏘️"}),M.jsx("h3",{children:"Community Groups"}),M.jsx("p",{children:"Like ajo/esusu but automated on blockchain. Pool funds, create plans for members, everyone collects their share on schedule. Transparent and fair."})]}),M.jsxs("div",{className:"usecase-card",children:[M.jsx("div",{className:"usecase-icon",children:"💰"}),M.jsx("h3",{children:"Subscription Services"}),M.jsx("p",{children:'Vendors can offer "pay-as-you-go" services with streaming payments. Customers pay gradually instead of big upfront costs. Win-win.'})]})]})]}),M.jsxs("section",{className:"section",children:[M.jsx("h2",{className:"section-title",children:"Why Choose STX Airtime Drip?"}),M.jsxs("div",{className:"features-grid",children:[M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"🔒"}),M.jsx("h3",{children:"Trustless & Secure"}),M.jsx("p",{children:'Smart contract enforces rules. No middleman, no "he said, she said." Code is law. Your funds are safe on-chain.'})]}),M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"📊"}),M.jsx("h3",{children:"Full Transparency"}),M.jsx("p",{children:"See everything on the blockchain. Check balances without connecting wallet. Activity history shows every transaction."})]}),M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"⏱️"}),M.jsx("h3",{children:"Real-time Countdown"}),M.jsx("p",{children:"Live timer shows exactly when next claim is ready. No guessing, no waiting. See blocks remaining and estimated time."})]}),M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"🔄"}),M.jsx("h3",{children:"Flexible Management"}),M.jsx("p",{children:"Top up anytime to extend plans. Cancel and withdraw leftover funds. Update as your needs change. Full control."})]}),M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"📱"}),M.jsx("h3",{children:"Mobile-Friendly"}),M.jsx("p",{children:"Works on phone, tablet, laptop. QR codes for easy sharing. Responsive design that adapts to any screen size."})]}),M.jsxs("div",{className:"feature-card",children:[M.jsx("div",{className:"feature-icon",children:"💸"}),M.jsx("h3",{children:"Low Fees"}),M.jsx("p",{children:"Pay only Stacks network fees (usually less than 0.001 STX). No platform fees, no hidden charges. What you see is what you pay."})]})]})]}),M.jsx("section",{className:"section blockchain-section",children:M.jsxs("div",{className:"blockchain-content",children:[M.jsxs("div",{className:"blockchain-text",children:[M.jsx("h2",{children:"Why Blockchain?"}),M.jsx("p",{children:"Traditional airtime drip systems require trust in a central platform. They can freeze accounts, change rules, or disappear with your money. Not here."}),M.jsxs("ul",{className:"benefits-list",children:[M.jsxs("li",{children:[M.jsx("strong",{children:"Immutable Rules:"})," Once you create a plan, the smart contract enforces it. No one can change the terms."]}),M.jsxs("li",{children:[M.jsx("strong",{children:"No Custody:"})," You lock funds directly on-chain. No platform holds your money. Contract releases it automatically."]}),M.jsxs("li",{children:[M.jsx("strong",{children:"Verifiable:"})," Every transaction is public. Check the blockchain yourself. No need to trust us — verify it."]}),M.jsxs("li",{children:[M.jsx("strong",{children:"Censorship-Resistant:"})," No one can block you from creating plans or claiming your funds. Pure peer-to-peer."]})]})]}),M.jsx("div",{className:"blockchain-visual",children:M.jsxs("div",{className:"chain-box",children:[M.jsx("div",{className:"chain-item",children:"You → Lock STX"}),M.jsx("div",{className:"chain-arrow",children:"↓"}),M.jsx("div",{className:"chain-item",children:"Smart Contract"}),M.jsx("div",{className:"chain-arrow",children:"↓"}),M.jsx("div",{className:"chain-item",children:"Customer Claims"})]})})]})}),M.jsxs("section",{className:"section faq-section",children:[M.jsx("h2",{className:"section-title",children:"Common Questions"}),M.jsxs("div",{className:"faq-grid",children:[M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"Do I need STX to use this?"}),M.jsx("p",{children:"Yes. You need STX to create plans (to fund them) and a small amount for network fees. If you're on testnet, you can get free STX from the faucet."})]}),M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"What wallets are supported?"}),M.jsx("p",{children:"Currently Hiro Wallet and Xverse Wallet. Any wallet that supports Stacks Connect will work. Install the browser extension to get started."})]}),M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"How long until funds are available?"}),M.jsx("p",{children:"It depends on the interval you set. Stacks blocks are ~10 minutes each. If you set 144 blocks (1 day), customer can claim every 24 hours."})]}),M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"Can I cancel a plan?"}),M.jsx("p",{children:"Yes, merchants can cancel anytime and withdraw the remaining balance. Customers keep what they've already claimed. Clean and fair."})]}),M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"Is this for mainnet or testnet?"}),M.jsx("p",{children:"You can deploy on either. For testing, use testnet (free STX). For real usage, deploy on mainnet. Configure via environment variables."})]}),M.jsxs("div",{className:"faq-item",children:[M.jsx("h3",{children:"What if the customer loses access to their wallet?"}),M.jsx("p",{children:"Only the customer can claim with their wallet. If they lose access, funds stay locked until you cancel the plan. Recovery depends on their wallet backup."})]})]})]}),M.jsxs("section",{className:"section cta-section",children:[M.jsx("h2",{children:"Ready to Start?"}),M.jsx("p",{children:"Connect your Stacks wallet and create your first airtime drip plan in less than 2 minutes."}),M.jsx("button",{className:"primary large",onClick:t,children:"Connect Wallet & Begin"}),M.jsx("p",{className:"cta-note",children:"No account needed. Just your wallet. Fully decentralized."})]})]}),QEe=({toast:t,onDismiss:e})=>{Pt.useEffect(()=>{if(t.type!=="pending"&&t.duration!==0){const i=setTimeout(()=>{e(t.id)},t.duration||5e3);return()=>clearTimeout(i)}},[t,e]);const n=()=>{switch(t.type){case"success":return"✓";case"error":return"✗";case"pending":return"⏳";default:return"ℹ"}},r=()=>{switch(t.type){case"success":return"toast toast-success";case"error":return"toast toast-error";case"pending":return"toast toast-pending";default:return"toast toast-info"}};return M.jsxs("div",{className:r(),children:[M.jsx("span",{className:"toast-icon",children:n()}),M.jsx("span",{className:"toast-message",children:t.message}),t.type!=="pending"&&M.jsx("button",{className:"toast-close",onClick:()=>e(t.id),"aria-label":"Dismiss",children:"×"})]})},e_e=({toasts:t,onDismiss:e})=>M.jsx("div",{className:"toast-container",children:t.map(n=>M.jsx(QEe,{toast:n,onDismiss:e},n.id))});let t_e=0;const n_e=()=>{const[t,e]=Pt.useState([]),n=Pt.useCallback((s,o="info",a)=>{const c=`toast-${t_e++}`,l={id:c,message:s,type:o,duration:a};return e(u=>[...u,l]),c},[]),r=Pt.useCallback(s=>{e(o=>o.filter(a=>a.id!==s))},[]),i=Pt.useCallback((s,o,a,c)=>{e(l=>l.map(u=>u.id===s?{...u,message:o,type:a,duration:c}:u))},[]);return{toasts:t,showToast:n,dismissToast:r,updateToast:i}},r_e=()=>{const[t,e]=Pt.useState(null),[n,r]=Pt.useState(!0);return Pt.useEffect(()=>{const i=async()=>{try{const a=await(await fetch(`${VEe}/extended/v1/block`)).json();a.results&&a.results.length>0&&e(BigInt(a.results[0].height))}catch(o){console.error("Failed to fetch block height:",o)}finally{r(!1)}};i();const s=setInterval(i,3e4);return()=>clearInterval(s)},[]),{blockHeight:t,isLoading:n}},i_e=new TextDecoder,s_e=t=>{if(!t||typeof t!="string")return new Uint8Array(0);const e=t.startsWith("0x")?t.slice(2):t,n=new Uint8Array(e.length/2);for(let r=0;rt?i_e.decode(s_e(t)).replace(/\u0000+$/g,"").trim():"",o_e=t=>{if(t.type!==pe.ResponseOk)throw new Error("expected (ok ...) from contract");return t.value},a_e=t=>{if(t.type!==pe.UInt)throw new Error("expected uint clarity value");return t.value},c_e=(t,e)=>{if(t.type===pe.OptionalNone)return null;if(t.type!==pe.OptionalSome)throw new Error("expected optional clarity value for plan");const n=yh(t);if(console.log("parsePlanOption debug:",{id:e,json:n,optionCv:t}),!n||!n.value)throw new Error(`unexpected plan schema: json=${JSON.stringify(n)}`);const r=n.value.value||n.value;if(!r||typeof r!="object")throw new Error(`unexpected plan tuple structure: ${JSON.stringify(n)}`);const i=r;console.log("parsePlanOption tuple:",i);const s=o=>{const a=i[o];if(a)return a.value!==void 0?a.value:a};return{id:e,merchant:s("merchant"),customer:s("customer"),phone:GO(s("phone")),network:GO(s("network")),payoutAmount:BigInt(s("payout-amount")||"0"),interval:BigInt(s("interval")||"0"),nextClaimBlock:BigInt(s("next-claim-block")||"0"),totalFunded:BigInt(s("total-funded")||"0"),remainingBalance:BigInt(s("remaining-balance")||"0"),totalClaims:BigInt(s("total-claims")||"0"),maxClaims:BigInt(s("max-claims")||"0")}},qO=(t,e)=>{const r=new TextEncoder().encode(t.toLowerCase());if(r.length>=e)return r.slice(0,e);const i=new Uint8Array(e);return i.set(r),i},l_e=({userSession:t})=>{const{doOpenAuth:e,doContractCall:n,userSession:r}=C0e(),i=r??t,{toasts:s,showToast:o,dismissToast:a,updateToast:c}=n_e(),{blockHeight:l}=r_e(),[u,d]=Pt.useState([]),[h,f]=Pt.useState(!1),[g,m]=Pt.useState(null),[y,p]=Pt.useState("landing"),[v,w]=Pt.useState("");Pt.useEffect(()=>{const R=new URLSearchParams(window.location.search),q=R.get("plan"),ne=R.get("customer");q&&ne&&(w(ne),o(`Viewing plan #${q} for ${ne.slice(0,8)}...`,"info"))},[o]);const b=(i==null?void 0:i.isUserSignedIn())??!1,S=Pt.useMemo(()=>{var ne;if(!i||!b)return;const R=i.loadUserData();return(((ne=R==null?void 0:R.profile)==null?void 0:ne.stxAddress)??{})[jEe]},[b,i]),x=Pt.useMemo(()=>S?`${S.slice(0,6)}…${S.slice(-4)}`:null,[S]),T=Xc.length>0,N=Pt.useCallback(async R=>{if(!T){d([]),o("Contract address not configured. Set VITE_CONTRACT_ADDRESS in .env","error");return}const q=o("Loading plans from blockchain...","pending",0);try{f(!0);const ne=R||S||Xc,X=await BN({contractAddress:Xc,contractName:gg,functionName:"get-latest-airtime-plan-id",functionArgs:[],senderAddress:ne,network:pg}),G=a_e(o_e(X)),te=[];for(let le=0n;lege.id-le.id),d(te),c(q,`✓ Synced ${te.length} plan${te.length===1?"":"s"}`,"success",3e3)}catch(ne){console.error("refreshPlans",ne),c(q,"Failed to load plans. Check your network connection.","error")}finally{f(!1)}},[T,S,o,c]);Pt.useEffect(()=>{N()},[N]);const _=()=>{if(!b)throw new Error("Connect your Stacks wallet first.")},E=async R=>{if(_(),!T)throw new Error("Contract address is missing.");const q=o("Preparing transaction...","pending",0);await new Promise((ne,X)=>{n({contractAddress:Xc,contractName:gg,functionName:"create-airtime-plan",functionArgs:[j4(R.customer),pm(qO(R.phone,16)),pm(qO(R.network,16)),js(mb(R.payout)),js(BigInt(R.interval)),js(BigInt(R.maxClaims))],network:pg,anchorMode:ai.Any,postConditionMode:Tf.Allow,onFinish:G=>{c(q,`Plan created! Transaction: ${G.txId.slice(0,8)}...`,"success"),setTimeout(()=>N(),8e3),ne()},onCancel:()=>{c(q,"Transaction cancelled","info",3e3),X(new Error("User cancelled"))}})})},A=async(R,q,ne,X)=>{if(_(),!T)throw new Error("Contract address is missing.");const G=o(`${X}...`,"pending",0);await new Promise((te,le)=>{n({contractAddress:Xc,contractName:gg,functionName:q,functionArgs:ne,network:pg,anchorMode:ai.Any,postConditionMode:Tf.Allow,onFinish:ge=>{c(G,`✓ ${X} successful! Tx: ${ge.txId.slice(0,8)}...`,"success"),setTimeout(()=>N(),8e3),te()},onCancel:()=>{c(G,"Transaction cancelled","info",3e3),le(new Error("User cancelled"))}})})},L=async R=>{try{m(R),await A(R,"claim-airtime",[js(BigInt(R))],"Claiming airtime")}catch(q){o(q.message||"Claim failed","error")}finally{m(null)}},$=async()=>{if(!S)return;const R=u.filter(q=>q.customer.toLowerCase()===S.toLowerCase()&&q.remainingBalance>0n&&q.totalClaims{try{m(R),await A(R,"topup-airtime",[js(BigInt(R)),js(BigInt(q))],"Topping up plan")}catch(ne){o(ne.message||"Top-up failed","error")}finally{m(null)}},C=async R=>{try{m(R),await A(R,"cancel-airtime",[js(BigInt(R))],"Cancelling plan")}catch(q){o(q.message||"Cancellation failed","error")}finally{m(null)}},I=()=>{e(!0)},F=()=>{i==null||i.signUserOut(),window.location.reload()},D=R=>{w(R),N(R)},k=()=>y==="landing"?M.jsx(WO,{onGetStarted:()=>p("all"),onLookup:D,lookupAddress:v}):y==="customer"?M.jsx(XEe,{plans:u,currentAddress:S,currentBlock:l,onClaimAll:$,onClaim:L,onTopup:W,onCancel:C,busy:g}):y==="merchant"?M.jsx(YEe,{plans:u,currentAddress:S,currentBlock:l,onClaim:L,onTopup:W,onCancel:C,busy:g}):M.jsxs(M.Fragment,{children:[M.jsxs("section",{className:"panel",children:[M.jsx("h2",{children:"All airtime plans"}),M.jsx("p",{className:"message",children:h?"Syncing with blockchain...":u.length===0?"No plans yet. Create your first one below.":`Showing ${u.length} plan${u.length===1?"":"s"}.`}),M.jsx("div",{className:"plan-list",children:u.map(R=>M.jsx(yb,{plan:R,currentAddress:S,currentBlock:l,onClaim:L,onTopup:W,onCancel:C,busy:g===R.id},R.id))})]}),M.jsxs("footer",{className:"app-footer",children:[M.jsxs("div",{className:"footer-stats",children:[M.jsxs("span",{children:["Total locked:"," ",M.jsxs("strong",{children:[es(u.reduce((R,q)=>R+q.remainingBalance,0n))," ","STX"]})]}),M.jsx("span",{children:"•"}),M.jsxs("span",{children:["Block height:"," ",M.jsx("strong",{children:(l==null?void 0:l.toString())||"Loading..."})]})]}),M.jsxs("p",{className:"message",children:["Contract: ",Xc||"Not configured"]})]})]});return M.jsxs("div",{className:"app-shell",children:[M.jsx($Ee,{}),M.jsx(e_e,{toasts:s,onDismiss:a}),M.jsxs("header",{className:"app-header",children:[M.jsxs("div",{className:"brand",children:[M.jsx("h1",{children:"💰 STX Airtime Drip"}),M.jsx("p",{children:"Keep your people topped up — no POS queues, no wahala."})]}),M.jsxs("div",{className:"wallet-actions",children:[b&&M.jsx("button",{className:"neutral",onClick:()=>p("landing"),title:"Back to home",children:"🏠 Home"}),x&&M.jsxs("span",{className:"badge",children:[x," ·"," ",w6==="mainnet"?"Mainnet":"Testnet"]}),b?M.jsx("button",{className:"neutral",onClick:F,children:"Disconnect"}):M.jsx("button",{className:"primary",onClick:I,children:"Connect wallet"})]})]}),b?M.jsxs(M.Fragment,{children:[y!=="landing"&&M.jsx(GEe,{onSubmit:E,disabled:!T,currentAddress:S}),M.jsxs("div",{className:"view-switcher",children:[M.jsx("button",{className:y==="landing"?"active":"",onClick:()=>p("landing"),children:"🏠 Home"}),M.jsx("button",{className:y==="all"?"active":"",onClick:()=>p("all"),children:"All Plans"}),M.jsx("button",{className:y==="customer"?"active":"",onClick:()=>p("customer"),children:"My Claims"}),M.jsx("button",{className:y==="merchant"?"active":"",onClick:()=>p("merchant"),children:"My Business"})]}),k()]}):M.jsx(WO,{onGetStarted:I,onLookup:D,lookupAddress:v})]})},u_e=new lk(["store_write","publish_data"]),d_e=new lx({appConfig:u_e}),h_e={appDetails:{name:"STX Airtime Drip",icon:`${window.location.origin}/app-icon.svg`},onFinish:()=>{window.location.reload()},onCancel:()=>{console.info("Wallet connect popup closed")}};K_.createRoot(document.getElementById("root")).render(M.jsx(iv.StrictMode,{children:M.jsx(x0e,{authOptions:h_e,children:M.jsx(l_e,{userSession:d_e})})}));export{aSe as $,ut as A,oi as B,De as C,Tge as D,En as E,it as F,FSe as G,ws as H,pF as I,EA as J,kf as K,tte as L,Vt as M,oSe as N,we as O,ms as P,jP as Q,mt as R,Se as S,hs as T,BB as U,_m as V,bA as W,Xee as X,$B as Y,nte as Z,mm as _,zSe as a,sSe as a0,Qv as a1,lSe as a2,cSe as a3,Kw as b,ot as c,Le as d,HSe as e,ve as f,x_e as g,LK as h,sf as i,Gw as j,eF as k,H as l,Mo as m,pa as n,pn as o,LSe as p,xh as q,S_e as r,Tr as s,jSe as t,Dn as u,hi as v,Ns as w,USe as x,Vr as y,ca as z}; +//# sourceMappingURL=index-B95lHF7v.js.map diff --git a/dist/assets/index-B95lHF7v.js.map b/dist/assets/index-B95lHF7v.js.map new file mode 100644 index 0000000..afafbc7 --- /dev/null +++ b/dist/assets/index-B95lHF7v.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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A,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,CACF,CAAC,EAGKt2G,GAAI,IAAI,YAAY,EAAE,EACtB2B,GAAI,IAAI,YAAY,EAAE,EAC5B,SAAS40G,GAAiBjB,EAAKC,EAAM,CACnC,IAAInoF,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAEjBptB,GAAEotB,CAAC,EAAIkoF,EAAI,EAAEloF,CAAC,EACdptB,GAAEotB,EAAI,CAAC,EAAIipF,GAAWjpF,CAAC,EAUzB,IAPAptB,GAAE,EAAE,GAAKs1G,EAAI,EACbt1G,GAAE,EAAE,GAAKs1G,EAAI,EAAI,WACbC,IAEFv1G,GAAE,EAAE,EAAI,CAACA,GAAE,EAAE,GAGVotB,EAAI,EAAGA,EAAI,GAAIA,IAElBzrB,GAAEyrB,CAAC,EAAI8oF,IAAUZ,EAAI,EAAG,EAAIloF,CAAC,EAO/B,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAElB+oF,GAAM,EAAG,EAAG,EAAG,GAAIx0G,GAAE20G,GAAMlpF,EAAI,GAAK,CAAC,CAAC,EAAGzrB,GAAE20G,GAAMlpF,EAAI,GAAK,CAAC,CAAC,CAAC,EAC7D+oF,GAAM,EAAG,EAAG,EAAG,GAAIx0G,GAAE20G,GAAMlpF,EAAI,GAAK,CAAC,CAAC,EAAGzrB,GAAE20G,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEhCC,IA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDAE5BC,IAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAExBC,IAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAE7BC,IAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEnBC,IAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEjBC,IAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEZC,IAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAEtB,MAAMC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEXC,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAEbC,IAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","I","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","reactDom_production_min","checkDCE","err","reactDomModule","client","DEFAULT_BLOCKSTACK_HOST","DEFAULT_PROFILE","DEFAULT_SCOPE","LOCALSTORAGE_SESSION_KEY","config","ERROR_CODES","BlockstackError","error","message","bugDetails","stack","MissingParameterError","parameter","InvalidDIDError","LoginFailedError","reason","FailedDecryptionError","InvalidStateError","NoSessionDataError","levels","levelToInt","index","level","Logger","nextMonth","nextHour","isLaterVersion","v1","v2","v1tuple","v2tuple","makeUUID4","getGlobalScope","getAPIUsageErrorMessage","scopeObject","apiName","usageDesc","getGlobalObject","name","throwIfUnavailable","returnEmptyObject","globalScope","obj","errMsg","intToBytes","value","byteLength","bigIntToBytes","intToBigInt","isInstance","bytesToHex","without0x","hexToBigInt","hex","intToHex","integer","hexToInt","length","hexToBytes","toTwos","width","nthBit","bytesToTwosBigInt","bytes","fromTwos","hexes","_","i","uint8a","array","j","hexByte","byte","utf8ToBytes","str","bytesToUtf8","arr","asciiToBytes","byteArray","bytesToAscii","isNotOctet","octet","octetsToBytes","numbers","concatBytes","arrays","result","pad","concatArray","elements","object","clazz","_b","_a","HIRO_MAINNET_URL","HIRO_TESTNET_URL","DEVNET_URL","GAIA_URL","PRIVATE_KEY_BYTES_COMPRESSED","COORDINATE_BYTES","parseRecoverableSignatureVrs","signature","recoveryIdHex","s","privateKeyToBytes","privateKey","privateKeyBuffer","readUInt16BE","source","offset","writeUInt16BE","destination","readUInt8","writeUInt8","readUInt32BE","writeUInt32BE","defaultFetchOpts","fetchWrapper","input","init","fetchOpts","argsForCreateFetchFn","args","fetchLib","middlewares","createFetchFn","url","fetchParams","middleware","response","AppConfig","scopes","appDomain","redirectPath","manifestPath","coreNode","authenticatorURL","number","bool","lengths","hash","exists","instance","checkFinished","output","out","min","assert","createView","rotr","word","shift","isLE","toBytes","data","Hash$1","wrapConstructor","hashConstructor","hashC","tmp","HMAC","Hash","_key","key","blockLen","buf","to","oHash","iHash","finished","destroyed","outputLen","hmac","setBigUint64","view","byteOffset","_32n","_u32_max","wl","padOffset","buffer","len","pos","take","dataView","oview","outLen","state","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA2","W15","W2","s0","s1","sigma1","T1","T2","SHA256","sha256","SHA224","__viteBrowserExternal","_0n","_1n","_2n","_3n","_8n","CURVE","divNearest","endo","a1","b1","a2","b2","POW_2_128","c1","c2","k1","mod","k2","k1neg","k2neg","fieldLen","groupLen","hashLen","compressedLen","uncompressedLen","weierstrass","x2","x3","USE_ENDOMORPHISM","ShaError","assertJacPoint","other","JacobianPoint","Point","points","toInv","invertBatch","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","x1b","X3","Y3","Z3","HH","HHH","scalar","P0","normalizeScalar","k1p","k2p","windows","base","window","affinePoint","precomputes","pointPrecomputes","windowSize","mask","maxNumber","shiftBy","wbits","offset1","offset2","cond1","cond2","constTimeNegate","point","fake","f1p","f2p","invZ","is0","invert","iz1","iz2","iz3","ax","ay","zz","condition","item","neg","isShort","bytesToNumber","isValidFieldElement","y2","sqrtMod","isYOdd","ensureBytes","header","normalizePrivateKey","msgHash","recovery","normalizeSignature","truncateHash","radj","rinv","u1","u2","prefix","numTo32bStr","isCompressed","msg","left","right","aP","bQ","sum","sliceDER","parseDERInt","parseDERSignature","sBytes","rBytesLeft","Signature","hexToNumber","isWithinCurveOrder","HALF","sHex","numberToHexUnpadded","rHex","sHexL","rHexL","sLen","rLen","POW_2_256","num","numTo32b","pow2","power","_6n","_11n","_22n","_23n","_44n","_88n","b3","b6","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","rt","modulo","nums","scratch","lastMultiplied","acc","inverted","bits2int_2","delta","truncateOnly","_sha256Sync","_hmacSha256Sync","HmacDrbg","qByteLen","values","utils","seed","kmdToSig","kBytes","lowS","kinv","sig","normalizePublicKey","publicKey","getPublicKey","isProbPub","getSharedSecret","privateA","publicB","bits2int","slice","bits2octets","z1","z2","int2octets","initSigArgs","extraEntropy","h1","seedArgs","finalizeSig","recSig","opts","der","recovered","hashed","signSync","privKey","drbg","crypto","nodeCrypto","TAGGED_HASH_PREFIXES","minLen","bytesLength","randomBytes","cached","messages","createHash","ckey","createHmac","tag","tagP","tagH","val","base64Js","toByteArray_1","toByteArray","fromByteArray_1","fromByteArray","lookup","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","start","end","extraBytes","parts","maxChunkLength","len2","isSubtleCryptoAvailable","NO_CRYPTO_LIB","getCryptoLib","NodeCryptoAesCipher","createCipher","createDecipher","algorithm","iv","cipher","WebCryptoAesCipher","subtleCrypto","algo","cryptoKey","cryptoLib","ALPHABET","BASE_MAP","BASE","LEADER","FACTOR","iFACTOR","encode","zeroes","pbegin","pend","size","b58","carry","it1","it2","decodeUnsafe","psz","b256","charCode","it3","it4","vch","decode","string","src","basex","bs58","Rho","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","BUF","RIPEMD160","h0","h2","h3","h4","ar","br","cr","dr","er","rGroup","hbl","hbr","rr","sr","tr","ripemd160","hashRipemd160","U32_MASK64","fromBig","split","lst","Al","toBig","shrSH","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","rotr32H","rotr32L","rotlSH","rotlSL","rotlBH","rotlBL","add","Bl","add3L","Cl","add3H","low","add4L","Dl","add4H","add5L","El","add5H","u64","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA512","Fl","Gl","Hl","W15h","W15l","s0h","s0l","W2h","W2l","s1h","s1l","SUMl","SUMh","sigma1h","sigma1l","CHIh","CHIl","T1ll","T1h","T1l","sigma0h","sigma0l","MAJh","MAJl","All","SHA512_224","SHA512_256","SHA384","sha512","sha512_256","hashSha256Sync","hashSha512Sync","BITCOIN_PUBKEYHASH","msgs","makeECPrivateKey","base58Encode","checksum","base58","base58CheckEncode","version","publicKeyToBtcAddress","publicKeyBytes","publicKeyHash160","getPublicKeyFromPrivate","privateKeyBytes","nobleGetPublicKey","InvalidPublicKeyReason","aes256CbcEncrypt","plaintext","aes256CbcDecrypt","ciphertext","hmacSha256","content","equalsConstTime","sharedSecretToKeys","sharedSecret","hashedSecret","allHexChars","maybe","isValidPublicKey","pub","invalidFormat","invalidPoint","firstByte","encryptECIES","wasString","cipherTextEncoding","validity","ephemeralPrivateKey","ephemeralPublicKey","sharedKeys","initializationVector","cipherText","macData","mac","cipherTextString","decryptECIES","cipherObject","ephemeralPK","ivBytes","cipherTextBytes","actualMac","expectedMac","plainText","signECDSA","contentBytes","contentHash","encryptContent","options","cipherPayload","signatureObject","signedCipherObject","decryptContent","_assert","cryptoBrowser","crypto_1","u8","u32","nextTick","asyncLoop","iters","tick","ts","diff","isPlainObject","checkOpts","defaults","wrapConstructorWithOpts","hashCons","_assert_js_1","utils_js_1","_sha2","_sha2_js_1","base64Url","base64_js_1","base64","unescape","recoverPublicKey","sign","vopts","verify","sinv","schnorrChallengeFinalize","SchnorrSignature","schnorrGetPublicKey","InternalSchnorrSignature","auxRand","priv","t0h","k0h","k0","rx","px","rand","TAGS","schnorrVerify","schnorrVerifySync","schnorrSign","schnorrSignSync","initSchnorrVerify","raw","finalizeSchnorrVerify","ecdsaSigFormatter","base64Url_1","getParamSize","keySize","paramBytesForAlg","getParamBytesForAlg","alg","paramBytes","MAX_OCTET","CLASS_UNIVERSAL","PRIMITIVE_BIT","TAG_SEQ","TAG_INT","ENCODED_TAG_SEQ","ENCODED_TAG_INT","signatureAsBytes","derToJose","signatureBytes","maxEncodedParamLength","inputLength","seqLength","rLength","rOffset","sLength","sOffset","rPadding","sPadding","dst","o","countPadding","stop","padding","joseToDer","rsBytes","shortLength","errors","MissingParametersError","InvalidTokenError","secp256k1","hmac_1","sha256_1","secp","require$$2","ecdsaSigFormatter_1","require$$3","errors_1","require$$4","utils_1","require$$5","SECP256K1Client","compressed","signingInputHash","format","derSignature","joseSignature","derSignatureBytes","secp256k1_1","cryptoClients","__awaiter","this","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","step","rejected","hashSha256","hashSha256Async","signer","base64url","cryptoClients_1","createSigningInput","payload","tokenParts","encodedHeader","encodedPayload","createUnsecuredToken","TokenSigner","signingAlgorithm","rawPrivateKey","defaultHeader","expanded","customHeader","signingInput","verifier","TokenVerifier","rawPublicKey","token","async","performVerify","verified","decodeToken","allHeaders","headerValue","__createBinding","desc","__exportStar","makeDIDFromAddress","address","getDIDType","decentralizedID","didParts","getAddressFromDID","VERSION","generateTransitKey","makeAuthRequestToken","transitPrivateKey","redirectURI","manifestURI","expiresAt","extraParams","getWindowOrigin","paramName","location","decryptPrivateKey","hexedEncrypted","unhexedString","encryptedObj","decrypted","doSignaturesMatchPublicKeys","publicKeys","doPublicKeysMatchIssuer","addressFromIssuer","isIssuanceDateValid","issuedAt","isExpirationDateValid","verifyAuthResponse","SESSION_VERSION","SessionData","json","SessionDataStore","sessionOptions","newSessionData","_session","InstanceDataStore","session","LocalStorageStore","sessionData","dataJSON","createEnumChecker","enumVariable","enumValues","enumValueSet","enumCheckFunctions","isEnum","checker","newChecker","BytesReader$1","invalidEnumErrorFormatter","ChainId","PeerNetworkId","TransactionVersion","AddressVersion","STACKS_MAINNET","STACKS_TESTNET","STACKS_DEVNET","STACKS_MOCKNET","networkFromName","networkFrom","network","MAX_STRING_LENGTH_BYTES","CLARITY_INT_SIZE","CLARITY_INT_BYTE_SIZE","COINBASE_BYTES_LENGTH","VRF_PROOF_BYTES_LENGTH","RECOVERABLE_ECDSA_SIG_LENGTH_BYTES","COMPRESSED_PUBKEY_LENGTH_BYTES","UNCOMPRESSED_PUBKEY_LENGTH_BYTES","MEMO_MAX_LENGTH_BYTES","MAX_PAYLOAD_LEN","PREAMBLE_ENCODED_SIZE","MAX_RELAYERS_LEN","PEER_ADDRESS_ENCODED_SIZE","HASH160_ENCODED_SIZE","NEIGHBOR_ADDRESS_ENCODED_SIZE","RELAY_DATA_ENCODED_SIZE","STRING_MAX_LENGTH","PayloadType","ClarityVersion","AnchorMode","AnchorModeNames","PostConditionMode","PostConditionType","AuthType","AddressHashMode","PubKeyEncoding","FungibleConditionCode","NonFungibleConditionCode","PostConditionPrincipalId","AssetType","TenureChangeCause","AuthFieldType","TxRejectedReason","TransactionError","c32encode","inputHex","minLength","currentCode","nextCode","nextBits","nextLowBits","curC32Digit","C32leadingZeros","zeroPrefix","numLeadingZeroBytesInHex","count","c32normalize","c32input","c32decode","numLeadingZeroBytes","carryBits","currentValue","currentHexDigit","hexLeadingZeros","hexStr","encoding_1","c32checksum","dataHex","dataHash","c32checkEncode","versionHex","checksumHex","c32str","c32checkDecode","c32data","versionChar","base58check","dataBytes","prefixBytes","check","checksum_1","ADDR_BITCOIN_TO_STACKS","ADDR_STACKS_TO_BITCOIN","c32address","hash160hex","c32addressDecode","c32addr","b58ToC32","b58check","addrInfo","hash160String","addrVersion","stacksVersion","c32ToB58","c32string","bitcoinVersion","address_1","addressHashModeToVersion","hashMode","LARGE_ARRAY_SIZE","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","global","freeSelf","root","freeExports","freeModule","module","moduleExports","addMapEntry","map","pair","addSetEntry","set","arrayEach","iteratee","arrayPush","arrayReduce","accumulator","initAccum","baseTimes","getValue","isHostObject","mapToArray","overArg","func","transform","arg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","funcToString","hasOwnProperty","objectToString","reIsNative","Buffer","Symbol","Uint8Array","getPrototype","objectCreate","propertyIsEnumerable","splice","nativeGetSymbols","nativeIsBuffer","nativeKeys","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","entries","entry","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","cache","pairs","arrayLikeKeys","inherited","isArray","isArguments","skipIndexes","isIndex","assignValue","objValue","eq","baseAssign","copyObject","keys","baseClone","isDeep","isFull","customizer","isObject","isArr","initCloneArray","copyArray","getTag","isFunc","isBuffer","cloneBuffer","initCloneObject","copySymbols","initCloneByTag","stacked","props","getAllKeys","subValue","baseCreate","proto","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","baseIsNative","isMasked","pattern","isFunction","baseKeys","isPrototype","cloneArrayBuffer","arrayBuffer","cloneDataView","cloneMap","cloneFunc","cloneRegExp","regexp","cloneSet","cloneSymbol","symbol","cloneTypedArray","typedArray","newValue","getSymbols","isKeyable","stubArray","Ctor","ctorString","type","cloneDeep","isArrayLikeObject","isArrayLike","isLength","isObjectLike","stubFalse","ClarityType","ClarityWireType","clarityTypeToByte","trueCV","falseCV","boolCV","bufferCV","MAX_U128","MIN_U128","MAX_I128","MIN_I128","intCV","bigInt","uintCV","listCV","noneCV","someCV","StacksWireType","createEmptyAddress","createMemoString","exceedsMaxLengthBytes","createLPList","lengthPrefixBytes","createMessageSignature","createTokenTransferPayload","recipient","amount","memo","principalCV","createContractCallPayload","contractAddress","contractName","functionName","functionArgs","createLPString","createAddress","codeBodyString","createSmartContractPayload","codeBody","clarityVersion","createPoisonPayload","createCoinbasePayload","coinbaseBytes","altRecipient","createNakamotoCoinbasePayload","vrfProof","createTenureChangePayload","tenureHash","previousTenureHash","burnViewHash","previousTenureEnd","previousTenureBlocks","cause","publicKeyHash","maxLengthBytes","prefixLength","maxLength","createAsset","addressString","assetName","c32AddressString","addressData","createContractPrincipal","addr","createStandardPrincipal","createTransactionAuthField","pubKeyEncoding","contents","serializeStacksWireBytes","wire","serializeAddressBytes","serializePrincipalBytes","serializeLPStringBytes","serializeMemoStringBytes","serializeAssetBytes","serializePostConditionWireBytes","serializePublicKeyBytes","serializeLPListBytes","serializePayloadBytes","serializeTransactionAuthFieldBytes","serializeMessageSignatureBytes","bytesArray","deserializeAddress","serialized","bytesReader","BytesReader","principal","deserializePrincipal","DeserializationError","deserializeLPString","lps","memoString","paddedContent","rightPadHexToLength","deserializeMemoString","info","deserializeAsset","lpList","list","deserializeLPList","deserializePostConditionWire","deserializePublicKey","deserializeTransactionAuthField","serializePostConditionWire","postCondition","serializeCVBytes","SerializationError","postConditionType","conditionCode","asset","deserializeCV","numArgs","deserializePayload","contractCallName","numberOfArgs","clarityValue","smartContractName","deserializeMessageSignature","authFieldType","createStacksPublicKey","uncompressPublicKey","messageSignature","field","compressPublicKey","fieldId","keyLength","addressFromPublicKeys","numSigs","publicKeyIsCompressed","addressFromVersionHash","hashP2PKH","hashP2WPKH","hashP2SH","hashP2WSH","addressToString","parseAssetString","assetAddress","assetContractName","assetTokenName","parsePrincipalString","principalString","contractPrincipalCV","standardPrincipalCV","standardPrincipalCVFromAddress","lengthPrefixedContractName","contractPrincipalCVFromAddress","responseErrorCV","responseOkCV","stringAsciiCV","stringUtf8CV","tupleCV","isClarityName","serializedClarityValue","hasHexPrefix","bufferLength","sAddress","cAddress","listLength","listContents","tupleLength","tupleContents","clarityName","asciiStrLen","asciiStr","utf8StrLen","utf8Str","bytesWithTypeID","typeId","serializeBoolCV","serializeOptionalCV","cv","serializeBufferCV","serializeIntCV","serializeUIntCV","serializeStandardPrincipalCV","serializeContractPrincipalCV","parseContractId","serializeResponseCV","serializeListCV","serializedValue","serializeTupleCV","lexicographicOrder","nameWithLength","serializeStringCV","encoding","serializeStringAsciiCV","serializeStringUtf8CV","serializeCV","leftPadHex","hexString","lodashCloneDeep","hash160","txidFromData","keyHash","redeemScript","redeemScriptHash","pubKeys","pubKey","scriptArray","script","digest","contractId","getAddressFromPublicKey","addrVer","publicKeyFromSignatureVrs","messageHash","parsedSignature","privateKeyToHex","publicKeyToHex","privateKeyIsCompressed","privateKeyToPublic","signWithKey","rawSignature","recoveryId","emptyMessageSignature","createSingleSigSpendingCondition","nonce","fee","keyEncoding","isSingleSig","isSequentialMultiSig","isNonSequentialMultiSig","clearCondition","cloned","serializeSingleSigSpendingConditionBytes","serializeMultiSigSpendingConditionBytes","fields","deserializeSingleSigSpendingCondition","deserializeMultiSigSpendingCondition","haveUncompressed","VerificationError","signaturesRequired","serializeSpendingConditionBytes","deserializeSpendingCondition","sigHashPreSign","curSigHash","authType","sigHash","sigHashPostSign","hashLength","sigHashBytes","nextSignature","sigHashPre","nextSigHash","nextVerification","initialSigHash","newInitialSigHash","spendingCondition","verifySingleSig","verifyMultiSig","addrBytes","createStandardAuth","createSponsoredAuth","sponsorSpendingCondition","intoInitialSighashAuth","auth","SigningError","verifyOrigin","setFee","setNonce","setSponsorNonce","setSponsor","serializeAuthorizationBytes","deserializeAuthorization","StacksTransactionWire","postConditions","postConditionMode","transactionVersion","chainId","tx","cond","nextSig","chainIdBytes","deserializeTransaction","anchorMode","transaction","PostConditionCodeWireType","postConditionToWire","postcondition","conditionTypeToByte","postConditionToHex","C32","stringify","int","uint","contractPrincipal","standardPrincipal","stringAscii","stringUtf8","none","some","tuple","serialize","deserialize","verifyProfileToken","publicKeyOrAddress","decodedToken","issuerPublicKey","tokenVerifier","extractProfile","profile","GLOBAL_DETECTION_CACHE_KEY","ECHO_REPLY_PARAM","AUTH_CONTINUATION_PARAM","getQueryStringParams","query","params","param","protocolEchoReplyDetection","existingDetection","searchParams","echoReplyParam","echoReplyKey","authContinuationParam","UserSession","runningInBrowser","transitKey","appConfig","authMessages.makeAuthRequestToken","authMessages.generateTransitKey","search","authResponseToken","fetchFn","tokenPayload","appPrivateKey","coreSessionToken","authMessages.decryptPrivateKey","hubUrl","gaiaAssociationToken","userData","profileURL","responseText","wrappedProfile","redirectURL","self","support","isDataView","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","iterator","Headers","headers","oldValue","callback","consumed","body","fileReaderReady","reader","readBlobAsArrayBuffer","blob","promise","readBlobAsText","match","readArrayBufferAsText","chars","bufferClone","Body","isConsumed","methods","normalizeMethod","method","upcased","Request","ctrl","reParamSearch","reQueryString","form","parseHeaders","rawHeaders","preProcessedHeaders","line","Response","bodyInit","redirectStatuses","status","fetch","request","xhr","abortXhr","fixUrl","names","signed","parsedValue","bn","lengthBytes","paddedHex","ChainID","PeerNetworkID","PRIVATE_KEY_COMPRESSED_LENGTH","HIRO_MAINNET_DEFAULT","HIRO_TESTNET_DEFAULT","HIRO_MOCKNET_DEFAULT","StacksNetworks","StacksNetwork","networkConfig","contract","dataVarName","mapName","fullyQualifiedName","nameLookupURL","resp","nameInfo","networkName","StacksMainnet","StacksTestnet","StacksDevnet","StacksMocknet","DEFAULT_CHAIN_ID","StacksMessageType","AnchorModeMap","anchorModeFromNameOrValue","mode","PostConditionPrincipalID","principalToString","cvToValue","strictJsonCompat","cvToJSON","getCVTypeString","publicKeyFromBytes","publicKeyToString","serializePublicKey","pubKeyfromPrivKey","createStacksPrivateKey","recoverableSignatureString","serializePayload","serializeStacksMessage","NoEstimateAvailableError","serializeMessageSignature","serializeTransactionAuthField","serializeAddress","serializePrincipal","serializeLPString","serializeMemoString","serializeAssetInfo","serializePostCondition","serializeLPList","omit","prop","clone","cvToHex","hexToCV","parseReadOnlyResponse","createMultiSigSpendingCondition","stacksPublicKeys","serializeSingleSigSpendingCondition","serializeMultiSigSpendingCondition","serializeSpendingCondition","makeSigHashPreSign","makeSigHashPostSign","serializeAuthorization","ClarityAbiTypeId","isClarityAbiPrimitive","isClarityAbiBuffer","isClarityAbiStringAscii","isClarityAbiStringUtf8","isClarityAbiResponse","isClarityAbiOptional","isClarityAbiTuple","isClarityAbiList","getTypeUnion","getTypeString","matchType","abiType","union","abiTupleEntry","validateContractCall","abi","filtered","fn","abiArgs","payloadArg","abiArg","argNum","TransactionSigner","nextVerify","originSigHash","nextSighash","StacksTransaction","_getNonceApi","getNonce","derivedNetwork","estimateTransferUnsafe","fetchOptions","deriveNetwork","feeRateResult","txBytes","estimateTransaction","transactionPayload","estimatedLen","getAbi","makeUnsignedContractCall","txOptions","defaultOptions","authorization","sortPublicKeysForAddress","lpPostConditions","estimateTransactionFeeWithFallback","addressVersion","senderAddress","txNonce","makeContractCall","mutatingSignAppendMultiSig","callReadOnlyFunction","readOnlyFunctionOptions","responseJson","estimateTransactionByteLength","multiSigSpendingCondition","existingSignatures","totalSignatureLength","signerKeys","pubs","signerKey","publicKeysSorted","isBytes","abytes","isArrayOf","isString","astr","label","anumber","aArr","astrArr","anumArr","chain","wrap","alphabet","letters","lettersA","indexes","digits","letter","join","separator","from","bits","chr","gcd","radix2carry","powers","convertRadix2","max","pow","radix2","revPadding","base32","hasBase64Builtin","decodeBase64Builtin","isUrl","LOCAL_STORAGE_KEY","getSelectedProviderId","setSelectedProviderId","provider","getRegisteredProviders","legacyProviders","wbipProviders","getInstalledProviders","defaultProviders","registeredProviders","additionalInstalledProviders","defaultProvider","rp","getProviderFromId","getProvider","providerId","part","NAMESPACE","BUILD","__defProp","__export","target","all","SVG_NS","HTML_NS","getHostRef","ref","registerInstance","lazyInstance","hostRef","registerHost","hostElement","cmpMeta","isMemberInElement","elm","memberName","consoleError","cmpModules","loadModule","hmrVersionId","exportName","bundleId","processMod","importedModule","__vitePreload","styles","HYDRATED_CSS","SLOT_FB_CSS","win","plt","eventName","listener","promiseResolve","supportsConstructableStylesheets","supportsMutableAdoptedStyleSheets","queuePending","queueDomReads","queueDomWrites","queueTask","queue","write","flush","consume","i2","writeTask","isComplexType","queryNonceMetaTagContent","doc","_c","escapeRegExpSpecialCharacters","text","result_exports","unwrap","unwrapErr","newVal","globalStyleSheet","createShadowRoot","shadowRoot","createTime","fnName","tagName","uniqueTime","measureText","rootAppliedStyles","registerStyle","scopeId2","cssText","allowCS","style","addStyle","styleContainerNode","getScopeId","appliedStyles","styleElm","preconnectLinks","referenceNode2","stylesheet","existingStyleContainer","attachStyles","flags","endAttachStyles","cmp","nodeName","vnodeData","children","child","simple","lastSimple","vNodeChildren","walk","newVNode","classData","vnode","Host","isHost","node","createSupportsRuleRe","selector","safeSelector2","parsePropertyValue","propValue","propType","isFormAssociated","getElement","emitEvent","ev","setAccessor","isSvg","initialRender","isProp","ln","classList","oldClasses","parseClassList","newClasses","capture","CAPTURE_EVENT_SUFFIX","CAPTURE_EVENT_REGEX","isComplex","parseClassListRegex","updateElement","oldVnode","newVnode","isSvgMode2","isInitialRender","oldVnodeAttrs","newVnodeAttrs","sortedAttrNames","attrNames","attr","hostTagName","isSvgMode","createElm","oldParentVNode","newParentVNode","childIndex","newVNode2","childNode","addVnodes","parentElm","before","parentVNode","vnodes","startIdx","endIdx","containerElm","insertBefore","removeVnodes","updateChildren","oldCh","newCh","oldStartIdx","newStartIdx","idxInOld","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","elmToMove","isSameVnode","patch","leftVNode","rightVNode","oldVNode","oldChildren","newChildren","parent","newNode","reference","renderVdom","renderFnResults","isInitialLoad","hostElm","rootVnode","attachToAncestor","ancestorComponent","scheduleUpdate","dispatch","dispatchHooks","endSchedule","maybePromise","safeCall","enqueue","updateComponent","isPromisey","err2","endUpdate","endRender","callRender","childrenPromises","postUpdate","postUpdateComponent","endPostUpdate","addHydratedFlag","appDidLoad","who","propName","setValue","oldVal","areBothNaN","didValueChange","proxyComponent","Cstr","prototype","members","memberFlags","origGetter","origSetter","setterSetVal","attrNameToPropName","attrName","_a2","flags2","callbackName","propDesc","initializeComponent","CstrImport","endLoad","endNewInstance","fireConnectedCallback","cmpTag","endRegisterStyles","schedule","connectedCallback","endConnected","disconnectInstance","disconnectedCallback","bootstrapLazy","lazyBundles","endBootstrap","cmpTags","exclude","customElements2","head","metaCharset","dataStyles","deferredConnectedCallbacks","appLoadFallback","isBootstrapping","hasSlotRelocation","lazyBundle","compactMeta","HostElement","_a3","host","globalScripts","defineCustomElements","ReflectApply","receiver","ReflectOwnKeys","ProcessEmitWarning","warning","NumberIsNaN","EventEmitter","eventsModule","once","defaultMaxListeners","checkListener","_getMaxListeners","that","doError","events","handler","listeners","arrayClone","_addListener","prepend","existing","onceWrapper","_onceWrap","wrapped","position","originalListener","spliceOne","_listeners","evlistener","unwrapListeners","emitter","listenerCount","copy","ret","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","wrapListener","extendStatics","__extends","__","__assign","__rest","__decorate","decorators","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__generator","verb","op","__values","__read","__spread","__spreadArrays","__await","__asyncGenerator","resume","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__importStar","__importDefault","__classPrivateFieldGet","privateMap","__classPrivateFieldSet","delay_1","delay","timeout","misc","tslib_1","convert","constants_1","toMiliseconds","seconds","fromMiliseconds","miliseconds","watch","Watch","timestamp","elapsed","IWatch","IEvents","suspectProtoRx","suspectConstructorRx","JsonSigRx","jsonParseTransform","warnKeyDropped","destr","_value","wrapToPromise","asyncCall","function_","arguments_","isPrimitive","isPureObject","BASE64_PREFIX","serializeRaw","base64Encode","deserializeRaw","base64Decode","normalizeKey","joinKeys","normalizeBaseKey","filterKeyByDepth","depth","substrCount","filterKeyByBase","DRIVER_NAME","memory","createStorage","context","getMount","getMounts","includeParent","mountpoint","onChange","event","startWatch","stopWatch","runBatch","commonOptions","batches","getBatch","mount","batch","isStringItem","options2","storage","relativeKey","driver","meta","value_","mounts","maskedMounts","allKeys","allMountsSupportMaxDepth","rawKeys","fullKey","shouldFilterByDepth","dispose","unwatcher","_dispose","promisifyRequest","createStore","dbName","storeName","dbp","getDB","txMode","defaultGetStoreFunc","defaultGetStore","get","customStore","store","del","clear","eachCursor","cursor","JSONStringify","JSONParse","numbersBiggerThanMaxInt","serializedData","safeJsonParse","safeJsonStringify","_$4","h$5","tryStringify","quickFormatUnescaped","ss","objects","argLen","lastPos","flen","browser","pino","_console","pfGlobalThisOrFallback","stdSerializers","mock","passthrough","asErrValue","shouldSerialize","serializers","transmit","stdErrSerialize","logger","noop","getLevelVal","getLevel","setLevel","setOpts","getTimeFunction","createLogEventShape","bindings","childOptions","childOptionsSerializers","childSerializers","childSerialize","applySerializers","Child","bind","nullTime","epochTime","unixTime","isoTime","fallback","asObject","transmitLevel","transmitValue","methodValue","argsCloned","lvl","send","methodLevel","defd","O$6","d$6","B$3","h$4","I$4","y$5","m$3","d$5","f$7","P$6","S$6","M$4","O$5","R$3","J$3","V$4","En","gn","it","_t","yn","xn$2","Bn","Cn","An$2","xn","wt","St","mn","_n","Sn","vn","In","Un","Tn","Fn","Nn","Ln","On","Hn","zn","Mn","qn","$n","kn","Rn","jn","Zn","Gn","Vn","Yn","Jn$2","An","ot","tt","st","at","Ct","At","Kn","Jn","vt","Wn","It","Ut","Tt","Xn","Ft","Pn","Et","Nt","Lt","Qn","ft","nr","Ot","nt","Ht","or","ir","ur","fr","Dr","_e","gt","zt","Mt","hr","qt","$t","lr","pr","yt","wr","Er","gr","yr","$","et","pt","mt","Dn","dn","hn","un","cn","an","kt","xr","Br","Cr","Ar","mr","_r","Sr","vr","Rt","jt","Zt","ut","Dt","Gt","xt","Vt","Yt","Jt","dt","Kt","Wt","Xt","Ir","Ur","Tr","Fr","Nr","Lr$2","Or$2","Hr$2","Hr","zr$1","Lr","Or","Bt","zr","ht","Mr","qr","$r","kr","Rr","jr","Zr","Gr","Vr","Yr","Jr","Wr","Xr","Pr","Qr","eo","no","ro","oo","so","io","uo","co","ao","fo","Do","ho","lo","bo","po","wo","Eo","go","yo","xo","Bo","Co","Ao","mo","So","vo","Io","Pt","Uo","To","Fo","No","Lo","Oo","Ho","zo","Mo","qo","$o","ko","Qt","Ro","Ro$2","jo","jo$2","Zo","Go","Vo","Yo","Jo","Ko","Wo","ct","lt","pn","bt","wn","en","nn","rn","on","sn","Po","Qo","__spreadArray","pack","BrowserInfo","os","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOX_UA_REGEX","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","getNodeVersion","matchUserAgent","matched","regex","uaMatch","matchedRule","versionParts","createVersionParts","detectOS","searchBotMatch","isNode","cjs","getLocation_1","getNavigator_1","getDocument_1","getFromWindow","getFromWindowOrThrow","getDocumentOrThrow","getDocument","getNavigatorOrThrow","getNavigator","getLocationOrThrow","getLocation","getCryptoOrThrow","getCrypto","getLocalStorageOrThrow","getLocalStorage","getWindowMetadata_1","window_getters_1","getWindowMetadata","loc","getIcons","links","icons","link","rel","href","absoluteHref","path","finalPath","absoluteUrl","getWindowMetadataOfAny","metaTags","attributes","getName","getDescription","description","isHex","strict","errorConfig","docsBaseUrl","docsPath","docsSlug","BaseError","shortMessage","details","docsUrl","targetSize","hexOrBytes","dir","padHex","padBytes","hex_","SizeExceedsPaddingSizeError","paddedBytes","padEnd","givenSize","maxSize","assertSize","size_","SizeOverflowError","_v","toHex","numberToHex","stringToHex","boolToHex","maxValue","minValue","suffix","IntegerOutOfRangeError","encoder","numberToBytes","boolToBytes","stringToBytes","charCodeMap","charCodeToBase16","char","nibbleLeft","nibbleRight","ahash","aexists","aoutput","clean","byteSwap","byteSwap32","swap32IfBE","createHasher","_7n","_256n","_0x71n","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","round","IOTAS","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","rotlL","keccakP","rounds","idx1","idx0","B0","B1","Tl","curH","curL","PI","Keccak","enableXOF","bufferOut","gen","keccak_256","keccak256","to_","firstKey","checksumAddressCache","LruMap","checksumAddress","address_","hexAddress","publicKeyToAddress","hashHex","yParity","yParityOrV","recoveryBit","toRecoveryBit","signatureHex","recoverAddress","utf8Count","strLength","extra","utf8EncodeJs","outputOffset","sharedTextEncoder","TEXT_ENCODER_THRESHOLD","utf8EncodeTE","utf8Encode","CHUNK_SIZE","utf8DecodeJs","inputOffset","units","byte1","byte2","byte3","byte4","unit","sharedTextDecoder","TEXT_DECODER_THRESHOLD","utf8DecodeTD","stringBytes","utf8Decode","ExtData","DecodeError","UINT32_MAX","setUint64","high","setInt64","getInt64","getUint64","EXT_TIMESTAMP","TIMESTAMP32_MAX_SEC","TIMESTAMP64_MAX_SEC","encodeTimeSpecToTimestamp","sec","nsec","rv","secHigh","secLow","encodeDateToTimeSpec","date","msec","nsecInSec","encodeTimestampExtension","timeSpec","decodeTimestampToTimeSpec","nsec30AndSecHigh2","secLow32","decodeTimestampExtension","timestampExtension","ExtensionCodec","encodeExt","decodeExt","isArrayBufferLike","ensureUint8Array","DEFAULT_MAX_DEPTH","DEFAULT_INITIAL_BUFFER_SIZE","Encoder$1","Encoder","sizeToWrite","requiredSize","newSize","newBuffer","newBytes","newView","ext","prettyByte","DEFAULT_MAX_KEY_LENGTH","DEFAULT_MAX_LENGTH_PER_KEY","CachedKeyDecoder","maxKeyLength","maxLengthPerKey","records","FIND_CHUNK","record","recordBytes","cachedValue","slicedCopyOfBytes","STATE_ARRAY","STATE_MAP_KEY","STATE_MAP_VALUE","mapKeyConverter","StackPool","partialState","HEAD_BYTE_REQUIRED","EMPTY_VIEW","EMPTY_BYTES","MORE_DATA","sharedCachedKeyDecoder","Decoder$1","Decoder","remainingData","newData","posToShow","stream","decoded","headByte","totalPos","isArrayHeaderRequired","arrayItemsLeft","DECODE","headerOffset","headOffset","extType","asUint8Array","allocUnsafe","concat","curr","_brrp__multiformats_scope_baseX","coerce","fromString","toString","baseEncode","baseDecode","decoder","ComposedDecoder","decoders","Codec","baseX","bitsPerChar","codes","written","rfc4648","identity","base2","base8","base10","base16","base16upper","base32upper","base32pad","base32padupper","base32hex","base32hexupper","base32hexpad","base32hexpadupper","base32z","base36","base36upper","base58btc","base58flickr","base64pad","base64urlpad","alphabetBytesToChars","alphabetCharsToBytes","byts","byt","base256emoji","bases","identityBase","createCodec","ascii","BASES","ERROR_MSG_INPUT","normalizeInput","uint32ToHex","debugPrint","testSpeed","hashFn","startMs","genMs","hashMs","ms","util","ADD64AA","o0","o1","ADD64AC","b0","B2B_GET32","B2B_G","ix","iy","x0","x1","y0","y1","xor0","xor1","BLAKE2B_IV32","SIGMA8","SIGMA82","blake2bCompress","ctx","last","parameterBlock","blake2bInit","outlen","salt","personal","blake2bUpdate","blake2bFinal","blake2b","blake2bHex","blake2b_1","B2S_GET32","B2S_G","ROTR32","BLAKE2S_IV","SIGMA","blake2sCompress","blake2sInit","keylen","blake2sUpdate","blake2sFinal","blake2s","blake2sHex","blake2s_1","b2b","b2s","blakejs","$s","Cs","Ls","js","ks","Ps","Ms","Vs","qs","Ks","xs","zs","Ys","Xs","ws","define_process_env_default","gi$1","tn","Ie$3","_i","vs","Es","Bs","Is","_f","_o","As","Ss","Xo","ga","es","ns","rs","is","fs","cs","as","us","ls","ds","hs","ps","gs","bs","ys","Ns","PARSE_ERROR","INVALID_REQUEST","METHOD_NOT_FOUND","INVALID_PARAMS","INTERNAL_ERROR","SERVER_ERROR","RESERVED_ERROR_CODES","STANDARD_ERROR_MAP","DEFAULT_ERROR","isReservedErrorCode","getError","getErrorByCode","parseConnectionError","getBrowerCrypto","getSubtleCrypto","browserCrypto","isBrowserCryptoAvailable","env","isReactNative","isBrowser","payloadId","entropy","getBigIntRpcId","formatJsonRpcRequest","formatJsonRpcResult","formatJsonRpcError","formatErrorMessage","n$3","HTTP_REGEX","WS_REGEX","getUrlProtocol","matches","matchRegexProtocol","protocol","isHttpUrl","isWsUrl","isLocalhostUrl","isJsonRpcPayload","isJsonRpcRequest","isJsonRpcResponse","isJsonRpcResult","isJsonRpcError","o$5","f$6","Qs","vi$1","De.generateKeyPair","De.encodeIss","De.signJWT","Ds","_s","Ts","Os","Rs","Gs","Us","Fs","Ms$1","Ee$2","__global__","__globalThis__","globalThis","f$3","De$1","Ue$1","Me$1","Je$1","We$1","Ze$1","ConstantsUtil","NetworkUtil","caipnetworkId","networks","namespace","caipNetworks","caipNetworkId","caipNetwork","AVAILABLE_NAMESPACES","DP","RM","MAX_DP","MAX_POWER","NE","PE","STRICT","NAME","INVALID","INVALID_DP","INVALID_RM","DIV_BY_ZERO","UNDEFINED","NUMERIC","_Big_","Big","parse","rm","more","doExponential","isNonzero","isneg","dp","bz","xlty","ygtx","one","half","NumberUtil","aBigNumber","bBigNumber","decimals","erc20ABI","swapABI","usdtABI","ContractUtil","tokenAddress","ParseUtil","caipAddress","chainNamespace","SafeLocalStorageKeys","getSafeConnectorIdKey","SafeLocalStorage","isSafe","getW3mThemeVariables","themeVariables","themeType","GET_ORIGINAL_SYMBOL","getProto","objectsToTrack","isObjectToTrack","getUntracked","markToTrack","mark","canProxyDefault","refSet","createSnapshotDefault","snapCache","snap","enumerable","proxyStateMap","target2","ensureVersion","createHandlerDefault","isInitializing","addPropListener","removePropListener","notifyUpdate","prevValue","deleted","hasPrevValue","objectIs","proxyCache","nextValue","canProxy","proxy","versionHolder","newProxy","createSnapshot","createHandler","baseObject","found","nextVersion","checkVersion","nextCheckVersion","propProxyStates","propProxyState","propVersion","createPropListener","newOp","__vite_import_meta_env__","remove","addListener","prevRemove","initializing","proxyObject","proxyState","subscribe","notifyInSync","ops","isListenerActive","removeListener","snapshot","unstable_getInternalStates","subscribeKey","proxyStateMap$1","snapCache$1","isProxy$1","proxyMap","initialData","initialIndex","indexMap","snapMapCache","registerSnapMap","vObject","latestSnap","clonedMap","getMapForThis","proxiedObject","ONRAMP_PROVIDERS","MELD_PUBLIC_KEY","CommonConstantsUtil","StorageUtil","cacheExpiry","stringChainId","deepLink","wallet","recentWallets","recent","connectorId","socialProvider","storedCaipNetworkId","namespaces","uniqueNamespaces","balanceCache","nativeBalanceCache","ensCache","identityCache","accountTypes","connections","existingConnections","connectorConnectionMap","conn","existingConn","isAuth","existingAddrs","newAccounts","dedupedConnections","connectionsStorage","namespaceConnections","connectionMap","connector","currentDisconnectedConnectorIds","disconnectedConnectorIdsByNamespace","transactionsCache","transactions","addressCache","_removed","updatedChainData","addresses","tokenPriceCache","CoreHelperUtil","expiry","lastRetry","differenceMs","ancestor","safeAppUrl","ancestorUrl","safeUrl","milliseconds","timer","next","appUrl","wcUri","universalLink","safeUniversalLink","encodedWcUrl","features","isStandaloneDisplayMode","isIOSStandalone","imagePromise","image","balance","formattedBalance","formattedValue","CommonConstants","approvedIds","requestedNetworks","approvedIndexMap","indexA","indexB","roundedNumber","dollars","pennies","keyValue","adapters","platform","adapterNames","adapter","sections","account","valueToInject","paramToInject","providerParam","providerUrl","resultUrl","appendString","keyIndex","keyEndIndex","keyParamEnd","beforeKeyValue","currentKeyValue","afterKeyValue","newKeyValue","fetchData","FetchUtil","baseUrl","clientId","signal","OptionsUtil","optionValue","socials","OptionsController","subKey","remoteFeatures","newRemoteFeatures","newFeatures","projectId","customRpcUrls","allWallets","includeWalletIds","excludeWalletIds","featuredWalletIds","tokens","termsConditionsUrl","privacyPolicyUrl","customWallets","isSiweEnabled","isUniversalProvider","sdkVersion","metadata","disableAppend","enableEIP6963","debug","enableWalletConnect","enableWalletGuide","enableAuthLogger","enableWallets","preferUniversalLinks","siwx","isVal","connectMethodsOrder","walletFeaturesOrder","socialsOrder","collapseWallets","enableEmbedded","allowUnsupportedChain","manualWCControl","enableNetworkSwitch","enableReconnect","defaultAccountType","accountType","universalProviderConfigOverride","DEFAULT_STATE","api","MAX_ERRORS_PER_MINUTE","ONE_MINUTE_MS","TelemetryController","category","now","eventTime","errorEvent","sdkType","AppKitError","originalError","isStackConstructedFromOriginal","originalErrorStack","firstNewlineIndex","originalFrames","errorHandler","defaultCategory","withErrorBoundary","controller","newController","original","W3mFrameRpcConstants","CUSTOM_DEEPLINK_WALLETS","MobileWalletUtil","encodedHref","encodedRef","sub","AssetController","namespaceImageIds","AssetUtil","imageId","ApiController","existingImage","variant","displayMessage","debugMessage","AlertController","excluded","EventsController","AccountController","recommendedEntries","imageCountToFetch","wallets","imageUrl","countryCode","ChainController","allowedOrigins","requestedCaipNetworks","ids","assets","connectors","ConnectorController","currencies","currency","sortedData","images","chains","recommendedImages","recentImages","page","badge","existingPromise","fetchConnectorImages","fetchFeaturedWallets","fetchRecommendedWallets","fetchNetworkImages","promises","isAnalyticsEnabled","caipNetworkIds","action","onSuccess","onError","onCancel","RouterController","isConnected","isFarcasterView","shouldReload","ModalController","authConnector","optionsState","historyIndex","themeMode","themeVariablesSnapshot","ThemeController","defaultActiveConnectors","defaultFilterByNamespaceMap","newConnector","existingConnector","enabledNamespaces","connectorsFilteredByNamespaces","enabled","enabledConnectors","areAllNamespacesEnabled","connectorsByNameMap","mergedConnectors","keyConnectors","firstItem","isAuthConnector","connectorName","connectorsByName","uniqueConnectors","activeNamespace","rdns","namespaceToUse","namespaceConnectors","getPreferredAccountType","UPDATE_EMAIL_INTERVAL_MS","ConnectorControllerUtil","walletConnect","closeModalOnConnect","redirectViewOnModalClose","onOpen","onConnect","unsubscribeModalController","unsubscribeChainController","ConnectionController","social","onOpenFarcaster","socialWindow","connectingSocial","popupWindow","handleSocialConnection","uri","connectSocial","interval","initialEmail","newEmail","getActiveNetworkTokenAddress","getActiveCaipNetwork","ConnectionControllerUtil","connection","connectedConnectorId","filteredAccounts","connectorIds","newConnections","existingConnectorIds","isMultiWalletEnabled","activeConnectorId","recentConnectionsWithCurrentActiveConnectors","dedupedRecentConnections","svg","errorMessage","autoClose","SnackController","lastNetworkInView","accountAddress","BlockchainApiController","nonSpamTransactions","TransactionsController","sameChainTransactions","filteredTransactions","activeChainNamespace","transactionsMap","grouped","year","month","yearTransactions","newMonthTransactions","transfer","wcConnectionPromise","storageConnections","namespacesToSync","storageConnectionsByNamespace","recentConnectionsMap","_connections","_connectorId","_d","setChain","connectData","wcLinking","recentWallet","wcBasic","wcError","buffering","isSwitchingConnection","initialDisconnect","connectionsMap","smartAccount","authName","isWCConnector","newAddress","socialAddress","emailAddress","wcAddress","isMobile","currentAddress","currentAddressParsed","hasSwitchedAccount","PublicStateController","newState","SwapApiUtil","lamportsPerSignature","userAddress","sourceTokenAmount","sourceTokenDecimals","forceUpdate","balances","BalanceUtil","sendTokenAmount","receiverAddress","receiverProfileImageUrl","receiverProfileName","networkBalanceInUSD","loading","SendController","activeAccountType","networkTokenBalances","networkToken","accountState","networkState","property","prev","activeChain","clients","activeChainId","activeCaipNetwork","adapterToActivate","namespacesFromAdapters","namespaceNetworks","storedAccountTypes","defaultTypes","nextAdapter","networkControllerClient","connectionControllerClient","chainAdapter","newNetworks","networkId","isActiveNetwork","newCaipNetworksOfAdapter","accountProps","_unknown","newAccountState","networkProps","newNetworkState","replaceState","newAdapter","isDifferentChain","caipNetworkOfNamespace","firstNetworkWithChain","activeAdapter","unsupportedNetwork","_chain","chainNetworkState","chainToFilter","approvedCaipNetworkIds","activeCaipNetworkId","smartAccountEnabledNetworks","chainToWrite","currentAccountType","optionsAccountType","isSwitchingNamespace","availableChains","firstCaipNetwork","firstAvailableChain","byChainId","DEFAULT_OPTIONS","sv","supportedChains","gasPrice","disableEstimate","cachedBalance","coinType","destinationWallets","partnerUserId","defaultNetwork","purchaseAmount","paymentAmount","purchaseCurrency","paymentCurrency","pci","replacer","space","formatUnits","display","negative","fraction","getUrl","HttpRequestError","RpcRequestError","TimeoutError","unknownErrorCode","RpcError","metaMessages","ProviderRpcError","ParseRpcError","InvalidRequestRpcError","MethodNotFoundRpcError","InvalidParamsRpcError","InternalRpcError","InvalidInputRpcError","ResourceNotFoundRpcError","ResourceUnavailableRpcError","TransactionRejectedRpcError","MethodNotSupportedRpcError","LimitExceededRpcError","JsonRpcVersionUnsupportedError","UserRejectedRequestError","UnauthorizedProviderError","UnsupportedProviderMethodError","ProviderDisconnectedError","ChainDisconnectedError","SwitchChainError","UnsupportedNonOptionalCapabilityError","UnsupportedChainIdError","DuplicateIdError","UnknownBundleIdError","BundleTooLargeError","AtomicReadyWalletRejectedUpgradeError","AtomicityNotSupportedError","UnknownRpcError","ExecutionRevertedError","withResolvers","resolve_","reject_","schedulerCache","createBatchScheduler","shouldSplitBatch","wait","sort","exec","scheduler","getScheduler","getBatchedArgs","setScheduler","time","withRetry","delay_","retryCount","shouldRetry","attemptRetry","retry","promiseCache","withDedupe","buildRequest","overrideOptions","dedupe","retryDelay","requestId","err_","retryAfter","withTimeout","errorInstance","timeoutId","createIdStore","idCache","getHttpRpcClient","onRequest","onResponse","signal_","createTransport","uid_","transports_","rank","shouldThrow_","shouldThrow","pollingInterval","rest","transports","transport","includes","include","rankOptions","rankTransports","onTransports","ping","sampleCount","weights","stabilityWeight","latencyWeight","samples","rankTransports_","sample","transport_","success","maxLatency","latency","scores","latencies","latencyScore","successes","stabilityScore","UrlRequiredError","http","onFetchRequest","onFetchResponse","retryCount_","timeout_","batchSize","url_","rpcClient","requests","ERC7811Utils","caip2ChainId","chainPart","parsed","eip155Balances","chainIdHex","walletCapabilities","walletGetAssetsResponse","filteredAssets","balanceSymbol","profileName","profileImage","user","explorerUrl","isDeployed","currentTab","tokenBalance","connectedWalletInfo","preferredAccountType","farcasterUrl","ignoreSwitchConfirmation","currentNetwork","routerData","isCurrentNamespaceConnected","isDifferentNamespace","isNextNamespaceConnected","isConnectedWithAuth","isSupportedForAuthConnector","currentNamespace","namespaceNetwork","hasNoAdapters","isEmbeddedEnabled","USDC_CURRENCY_DEFAULT","USD_CURRENCY_DEFAULT","defaultState","providers","validOnramp","newProviders","OnRampController","quote","SLIP44_MSB","EnsUtil","suggestion","EnsController","cachedEns","emailConnector","defaultError","ensError","addEmbeddedWalletSessionPromise","SIWXUtil","siwxMessage","properties","lastNetwork","sessions","allRequestedCaipNetworks","activeCaipAddress","isApproveSignScreen","isSiwxSignMessage","socialUri","siwxMessageData","universalProvider","cacao","PresetsUtil","HelpersUtil","caipTokens","str1","str2","conditionFn","intervalMs","maxRetries","attempts","tryCheck","abortController","ErrorUtil","warningMessage","LoggerUtil","loggerOptions","getDefaultLoggerOptions","generatePlatformLogger","RPC_URL_HOST","getBlockchainApiRpcUrl","WC_HTTP_RPC_SUPPORTED_CHAINS","CaipNetworksUtil","rpcUrl","isReownUrl","defaultRpcUrl","customNetworkImageUrls","networkDefaultRpcUrl","reownRpcUrl","chainDefaultRpcUrl","customRpcUrlsOfNetwork","_g","rpcUrls","rpcUrlsWithoutReown","defaultCaipNetwork","caipNetworkIdFromStorage","availableNamespaces","isNamespaceAvailable","CLEAN_PROVIDERS_STATE","ProviderUtil","WalletUtil","connectorRDNSs","recentRDNSs","allRDNSs","recentIds","allIds","uniqueByRDNS","installedWalletRdnsMap","rdnsMap","walletA","walletB","installationComparison","walletAFeaturedIndex","walletBFeaturedIndex","_features","_connectors","connectMethodOrder","injected","announced","ConnectorUtil","shownInjected","shownAnnounced","isRDNSExcluded","isNameExcluded","recommended","featured","filteredRecommended","filteredFeatured","multiChain","external","custom","overriddenConnectors","option","enabledConnectorTypes","prioritizedConnectors","remainingConnectors","enabledConnectorType","prioritizedConnectorType","email","socialUsername","accounts","hexChainId","n$2","y$2","N$2","R$1","H$2","z$1","themeTag","darkModeTag","lightModeTag","initializeTheming","createRootStyles","setColorTheme","setThemeVariables","css","unsafeCSS","resetStyles","elementStyles","colorStyles","EthersHelpersUtil","BitcoinConstantsUtil","defineChain","solana","solanaDevnet","bitcoin","DEFAULT_METHODS","WcHelpersUtil","baseNamespaces","overrides","namespacesToOverride","processedNamespaces","configOverride","defaultNamespaces","wcNameAddress","accountsChains","currentOrigin","allowedPatterns","defaultAllowedOrigins","regexString","onDisconnect","onAccountsChanged","onChainChanged","onDisplayUri","callbackData","parsedCaipAddresses","accountsAdded","ConnectionManager","getConnectionStatusInfo","onConnection","onListenProvider","hasDisconnected","hasConnected","validConnection","WcConstantsUtil","WalletConnectConnector","OPTIONAL_METHODS","IGNORED_CONNECTOR_IDS_FOR_LISTENER","AdapterBlueprint","authProvider","connectorsAdded","connectionsAdded","emit","_chainId","providerType","_account","disconnectIfNoAccounts","formattedChainId","accountsChangedHandler","chainChangedHandler","disconnectHandler","disconnect","accountsChanged","chainChanged","UniversalAdapter","CoreConstantsUtil","_params","switchError","FEATURE_KEYS","featureConfig","apiConfig","localValue","_localValue","ConfigUtil","apiProjectConfig","localFeatureValue","featureKey","warningName","localFeatures","useApi","isBasic","useApiConfig","remoteFeaturesConfig","AppKitBaseClient","caipNetworkWithId","namespaceCaipNetwork","allConnectors","walletInfo","addressExplorerUrl","adapterNamespaces","networkNamespaces","optionsCopy","defaultMetaData","disconnectResult","isMultiWallet","hasConnections","toConnectNetwork","fallbackCaipNetwork","connectorIdParam","namespaceConnectorId","isWalletConnect","namespacesToDisconnect","disconnectPromises","connectorIdToDisconnect","disconnectData","disconnectResults","failures","UtilConstantsUtil","networkNamespace","blueprints","blueprint","connectionStatus","isSameNamespace","allConnections","isActiveChain","closeModal","sessionNamespaces","syncTasks","namespaceAccounts","sessionAddress","isActiveNamespace","networkOfChain","chainIdToUse","isUnsupportedNetwork","shouldSupportAllNetworks","fallBackCaipNetworkId","newChainId","newCaipAddress","registeredWcNames","wcName","isConnectorId","isRdns","hasMultiChainConnector","icon","universalProviderOptions","_h","_j","UniversalProvider","isCurrentConnectorWalletConnect","currentCaipNetwork","matchedUniversalProviderError","errorKey","errorValue","alertErrorKey","alertError","adapterBlueprint","appKitNetwork","_namespace","allAccounts","updateVal","route","newOptions","updatedOptions","extendedNetwork","isInitialized","AppKit","_request","modal","PACKAGE_VERSION","createAppKit","UniversalConnector","appKit","appKitConfig","Cl.bool","Cl.int","Cl.uint","Cl.buffer","Cl.stringAscii","Cl.stringUtf8","Cl.list","Cl.tuple","Cl.none","Cl.some","Cl.error","Cl.ok","Cl.contractPrincipal","Address.stringify","Cl.standardPrincipal","Cl.deserialize","Cl.serialize","createContext","useReducer","useContext","authenticate","showBlockstackConnect","openContractCall","openContractDeploy","openSTXTransfer","openProfileUpdateRequestPopup","openSignTransaction","openSignatureRequestPopup","openStructuredDataSignatureRequestPopup","openPsbtRequestPopup","REVISION","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","ConstantColorFactor","OneMinusConstantColorFactor","ConstantAlphaFactor","OneMinusConstantAlphaFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","AgXToneMapping","NeutralToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedInt248Type","UnsignedInt5999Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","LinearTransfer","SRGBTransfer","KeepStencilOp","AlwaysStencilFunc","NeverCompare","LessCompare","EqualCompare","LessEqualCompare","GreaterCompare","NotEqualCompare","GreaterEqualCompare","AlwaysCompare","StaticDrawUsage","GLSL3","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","listenerArray","_lut","DEG2RAD","RAD2DEG","generateUUID","d0","d1","d2","d3","clamp","euclideanModulo","lerp","denormalize","normalize","Vector2","minVal","maxVal","denominator","theta","dx","dy","alpha","attribute","center","angle","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","xAxis","yAxis","zAxis","a11","a12","a13","a21","a22","a23","a31","a32","a33","b12","b13","b21","b23","b31","b32","b33","t11","t12","t13","det","detInv","matrix4","ty","sx","sy","rotation","cx","cy","_m3","matrix","arrayNeedsUint32","createElementNS","createCanvasElement","canvas","_cache","warnOnce","probeAsync","sync","probe","toNormalizedProjectionMatrix","projectionMatrix","toReversedProjectionMatrix","ColorManagement","color","sourceColorSpace","targetColorSpace","SRGBToLinear","LinearToSRGB","colorSpace","colorSpaces","targetMatrix","REC709_PRIMARIES","REC709_LUMINANCE_COEFFICIENTS","D65","LINEAR_REC709_TO_XYZ","XYZ_TO_LINEAR_REC709","_canvas","ImageUtils","imageData","_sourceId","Source","isRootObject","serializeImage","_textureId","Texture","mapping","wrapS","wrapT","magFilter","minFilter","anisotropy","uv","Vector4","m11","m12","m13","m21","m22","m23","m31","m32","m33","xx","yy","xy","xz","yz","RenderTarget","height","texture","WebGLRenderTarget","DataArrayTexture","layerIndex","Data3DTexture","Quaternion","dstOffset","src0","srcOffset0","src1","srcOffset1","z0","w0","w1","cos","sqrSin","sin","tDir","quaternion","euler","update","order","c3","s2","s3","axis","halfAngle","trace","vFrom","vTo","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","theta1","theta2","r1","r2","Vector3","_quaternion$4","vx","vy","vz","qx","qy","qz","qw","tz","camera","az","bx","by","planeNormal","_vector$c","normal","dz","radius","phi","sinPhiRadius","sz","Box3","_vector$b","halfSize","precise","box","vector","geometry","positionAttribute","_box$4","sphere","plane","triangle","_center","_extents","_v0$3","_v1$7","_v2$4","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","_points","_testAxis","v0","extents","p0","p1","p2","_box$3","_v1$6","_v2$3","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","lengthSq","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","origin","direction","ray","directionDistance","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","sqrDist","extDet","invDet","tca","radius2","thc","t0","distToPoint","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","backfaceCulling","DdN","DdQxE2","DdE1xQ","QdN","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","_zero","_one","eye","up","_z","_x","_y","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","scale","wx","wy","wz","_m1$4","invSX","invSY","invSZ","top","bottom","near","far","coordinateSystem","zInv","_matrix$2","_quaternion$3","Euler","newOrder","Layers","channel","layers","_object3DId","_v1$4","_q1","_m1$3","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","_childaddedEvent","_childremovedEvent","Object3D","onRotationChange","onQuaternionChange","distance","force","updateParents","bound","library","element","parameters","shapes","shape","uuids","animation","geometries","extractFromCache","materials","textures","skeletons","animations","nodes","recursive","_v0$2","_v1$3","_v2$2","_v3$2","_vab","_vac","_vbc","_vap","_vbp","_vcp","_v40","_v41","_v42","Triangle","targetLengthSq","dot00","dot01","dot02","dot11","dot12","denom","invDenom","p3","v3","i1","i3","barycoord","i0","d4","d5","d6","_colorKeywords","_hslA","_hslB","hue2rgb","Color","handleAlpha","components","_color","hue","saturation","lightness","color1","color2","_materialId","Material","srcPlanes","dstPlanes","MeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","normalized","index1","index2","component","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$2","_m1$2","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","indirect","materialIndex","normalMatrix","tangent","morphAttributesPosition","morphAttribute","morphTargetsRelative","normalAttribute","uvAttribute","tangentAttribute","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","groups","tmp2","n2","handleVertex","pA","pB","pC","nA","nB","nC","normals","convertBufferAttribute","indices","array2","geometry2","newAttribute","morphAttributes","morphArray","hasMorphAttributes","attributeArray","boundingSphere","boundingBox","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_vA$1","_vB$1","_vC$1","_tempA","_morphA","_intersectionPoint","_intersectionPointWorld","Mesh","material","morphPosition","morphInfluences","influence","raycaster","intersects","matrixWorld","rayLocalSpace","intersection","uv1","drawRange","groupMaterial","checkGeometryIntersection","checkIntersection$1","intersect","face","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","vertices","uvs","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","mergeUniforms","uniforms","merged","cloneUniformsGroups","getUnlitUniformColorSpace","renderer","currentRenderTarget","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","extensions","Camera","_v3$1","_minTarget","_maxTarget","PerspectiveCamera","fov","aspect","focalLength","vExtentSlope","minTarget","maxTarget","fullWidth","fullHeight","skew","CubeCamera","renderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","cameras","scene","activeMipmapLevel","currentActiveCubeFace","currentActiveMipmapLevel","currentXrEnabled","generateMipmaps","CubeTexture","WebGLCubeRenderTarget","shader","mesh","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","Plane","constant","inverseNormalLength","startSign","endSign","optionalNormalMatrix","referencePoint","_sphere$5","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","onAnimationFrame","frame","WebGLAttributes","buffers","createBuffer","bufferType","usage","updateBuffer","updateRanges","mergeIndex","previousRange","range","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphahash_fragment","alphahash_pars_fragment","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","batching_pars_vertex","batching_vertex","begin_vertex","beginnormal_vertex","bsdfs","iridescence_fragment","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","common","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","colorspace_fragment","colorspace_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_pars_fragment","lights_lambert_fragment","lights_lambert_pars_fragment","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphinstance_vertex","morphcolor_vertex","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","iridescence_pars_fragment","opaque_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","worldpos_vertex","vertex$h","fragment$h","vertex$g","fragment$g","vertex$f","fragment$f","vertex$e","fragment$e","vertex$d","fragment$d","vertex$c","fragment$c","vertex$b","fragment$b","vertex$a","fragment$a","vertex$9","fragment$9","vertex$8","fragment$8","vertex$7","fragment$7","vertex$6","fragment$6","vertex$5","fragment$5","vertex$4","fragment$4","vertex$3","fragment$3","vertex$2","fragment$2","vertex$1","fragment$1","ShaderChunk","UniformsLib","ShaderLib","_rgb","_e1$1","_m1$1","WebGLBackground","cubemaps","cubeuvmaps","premultipliedAlpha","clearColor","clearAlpha","planeMesh","boxMesh","currentBackground","currentBackgroundVersion","currentTonemapping","getBackground","background","render","forceClear","setClear","environmentBlendMode","addToRenderList","renderList","WebGLBindingStates","maxVertexAttributes","bindingStates","createBindingState","currentState","setup","program","updateBuffers","getBindingState","bindVertexArrayObject","needsUpdate","saveCache","setupVertexAttributes","createVertexArrayObject","vao","deleteVertexArrayObject","wireframe","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","programAttributes","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","disableUnusedAttributes","vertexAttribPointer","stride","materialDefaultAttributeValues","programAttribute","bytesPerElement","reset","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","setMode","renderInstances","primcount","renderMultiDraw","starts","counts","drawCount","elementCount","renderMultiDrawInstances","extension","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","textureFormatReadable","textureFormat","textureTypeReadable","textureType","halfFloatSupportedByExt","getMaxPrecision","precision","maxPrecision","logarithmicDepthBuffer","reverseDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","uniform","enableLocalClipping","projectPlanes","useCache","clipIntersection","clipShadows","materialProperties","resetGlobalState","nGlobal","lGlobal","dstArray","skipTransform","nPlanes","flatSize","viewMatrix","i4","WebGLCubeMaps","mapTextureMapping","cubemap","onTextureDispose","OrthographicCamera","scaleW","scaleH","LOD_MIN","EXTRA_LOD_SIGMA","MAX_SAMPLES","_flatCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","_oldXrEnabled","PHI","INV_PHI","_axisDirections","PMREMGenerator","sigma","cubeUVRenderTarget","equirectangular","_getCubemapMaterial","_getEquirectMaterial","cubeSize","outputTarget","_setViewport","_createRenderTarget","_lodMax","_createPlanes","_getBlurShader","tmpMesh","cubeCamera","upSign","forwardSign","originalAutoClear","toneMapping","backgroundMaterial","backgroundBox","useSolidColor","col","isCubeTexture","autoClear","poleAxis","lodIn","lodOut","pingPongRenderTarget","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weight","outputSize","lodMax","lodPlanes","sizeLods","sigmas","lod","totalLods","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","faceIndex","coordinates","fill","_getCommonVertexShader","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","currentPMREMVersion","isCubeTextureComplete","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","setIndex","WebGLInfo","instanceCount","WebGLMorphtargets","capabilities","morphTextures","morph","objectInfluences","morphTargetsCount","disposeTexture","hasMorphPosition","hasMorphNormals","hasMorphColors","morphTargets","morphNormals","morphColors","vertexDataCount","vertexDataStride","morphTarget","morphNormal","morphColor","morphInfluencesSum","morphBaseInfluence","WebGLObjects","updateMap","buffergeometry","onInstancedMeshDispose","skeleton","instancedMesh","DepthTexture","emptyTexture","emptyShadowTexture","emptyArrayTexture","empty3dTexture","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","blockSize","firstElem","arraysEqual","allocTexUnits","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","setValueM3","setValueM4","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","emptyTexture2D","setValueT3D1","setValueT6","setValueT2DArray1","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","seq","RePathPart","addUniform","container","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","WebGLShader","COMPLETION_STATUS_KHR","programIdCount","handleSource","errorLine","lines","lines2","_m0","getEncodingComponents","encodingMatrix","getShaderErrors","errorMatches","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","_v0$1","getLuminanceFunction","generateVertexExtensions","filterEmptyLine","generateDefines","defines","chunks","fetchAttributeLocations","locationSize","replaceLightNums","numSpotLightCoords","replaceClippingPlaneNums","includePattern","resolveIncludes","includeReplacer","shaderChunkMap","newInclude","unrollLoopPattern","unrollLoops","loopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","generateEnvMapTypeDefine","envMapTypeDefine","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","generateCubeUVSize","imageHeight","maxMip","texelHeight","WebGLProgram","cacheKey","vertexShader","fragmentShader","envMapCubeUVSize","customVertexExtensions","customDefines","prefixVertex","prefixFragment","versionString","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","onFirstUse","programLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","cachedUniforms","programReady","_id$1","WebGLShaderCache","vertexShaderStage","fragmentShaderStage","materialShaders","shaderStage","stage","WebGLShaderStage","WebGLPrograms","clipping","_programLayers","_customShaders","_activeChannels","programs","SUPPORTS_VERTEX_TEXTURES","shaderIDs","getChannel","getParameters","lights","shadows","fog","environment","envMap","envMapCubeUVHeight","shaderID","morphTextureStride","customVertexShaderID","customFragmentShaderID","IS_INSTANCEDMESH","IS_BATCHEDMESH","HAS_MAP","HAS_MATCAP","HAS_ENVMAP","HAS_AOMAP","HAS_LIGHTMAP","HAS_BUMPMAP","HAS_NORMALMAP","HAS_DISPLACEMENTMAP","HAS_EMISSIVEMAP","HAS_METALNESSMAP","HAS_ROUGHNESSMAP","HAS_ANISOTROPY","HAS_CLEARCOAT","HAS_DISPERSION","HAS_IRIDESCENCE","HAS_SHEEN","HAS_TRANSMISSION","HAS_ANISOTROPYMAP","HAS_CLEARCOATMAP","HAS_CLEARCOAT_NORMALMAP","HAS_CLEARCOAT_ROUGHNESSMAP","HAS_IRIDESCENCEMAP","HAS_IRIDESCENCE_THICKNESSMAP","HAS_SHEEN_COLORMAP","HAS_SHEEN_ROUGHNESSMAP","HAS_SPECULARMAP","HAS_SPECULAR_COLORMAP","HAS_SPECULAR_INTENSITYMAP","HAS_TRANSMISSIONMAP","HAS_THICKNESSMAP","HAS_GRADIENTMAP","HAS_ALPHAMAP","HAS_ALPHATEST","HAS_ALPHAHASH","HAS_EXTENSIONS","getProgramCacheKey","getProgramCacheKeyParameters","getProgramCacheKeyBooleans","getUniforms","acquireProgram","preexistingProgram","releaseProgram","releaseShaderCache","WebGLProperties","has","painterSortStable","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","transparent","getNextRenderItem","groupOrder","renderItem","push","unshift","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","listArray","UniformsCache","light","ShadowUniformsCache","shadowCastingAndTexturingLightsFirst","lightA","lightB","WebGLLights","shadowCache","vector3","matrix42","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","numSpotMaps","numSpotShadowsWithMaps","numLightProbes","intensity","shadowMap","shadow","shadowUniforms","setupView","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderStateArray","renderState","MeshDepthMaterial","MeshDistanceMaterial","vertex","fragment","WebGLShadowMap","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","shadowSide","shadowMaterialVertical","shadowMaterialHorizontal","fullScreenTri","fullScreenMesh","_previousType","activeCubeFace","_state","toVSM","fromVSM","shadowFrameExtents","pars","viewportCount","vp","viewport","renderObject","VSMPass","getDepthMaterial","customMaterial","keyA","keyB","materialsForVariant","cachedMaterial","onMaterialDispose","shadowCamera","depthMaterial","uuid","reversedFuncs","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","colorMask","lock","DepthBuffer","reversed","currentDepthMask","currentDepthFunc","currentDepthClear","oldDepth","depthTest","enable","disable","depthMask","depthFunc","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","stencilFunc","stencilRef","stencilFail","stencilZFail","stencilZPass","colorBuffer","depthBuffer","stencilBuffer","uboBindings","uboProgramMap","enabledCapabilities","currentBoundFramebuffers","currentDrawbuffers","defaultDrawbuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentBlendColor","currentBlendAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","dimensions","emptyTextures","setFlipSided","setCullFace","setBlending","bindFramebuffer","framebuffer","drawBuffers","useProgram","equationToGL","factorToGL","blending","blendEquation","blendSrc","blendDst","blendEquationAlpha","blendSrcAlpha","blendDstAlpha","blendColor","blendAlpha","setMaterial","frontFaceCW","flipSided","stencilWrite","setPolygonOffset","cullFace","setLineWidth","polygonOffset","factor","setScissorTest","scissorTest","activeTexture","webglSlot","bindTexture","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","compressedTexImage3D","texSubImage2D","texSubImage3D","compressedTexSubImage2D","compressedTexSubImage3D","texStorage2D","texStorage3D","texImage2D","texImage3D","scissor","updateUBOMapping","uniformsGroup","blockIndex","uniformBlockBinding","getByteLength","typeByteLength","getTextureTypeByteLength","WebGLTextures","_gl","multisampledRTTExt","supportsInvalidateFramebuffer","_imageDimensions","_videoTextures","_sources","useOffscreenCanvas","createCanvas","resizeImage","needsNewCanvas","getDimensions","textureNeedsGenerateMipmaps","generateMipmap","getTargetType","getInternalFormat","internalFormatName","glFormat","glType","forceLinearTransfer","internalFormat","getInternalDepthFormat","useStencil","depthType","glInternalFormat","getMipLevels","deallocateTexture","onRenderTargetDispose","deallocateRenderTarget","textureProperties","webglTextures","deleteTexture","renderTargetProperties","attachmentProperties","textureUnits","resetTextureUnits","allocateTextureUnit","textureUnit","getTextureCacheKey","setTexture2D","slot","updateVideoTexture","uploadTexture","setTexture2DArray","setTexture3D","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","compareToGL","setTextureParameters","initTexture","forceUpload","textureCacheKey","sourceProperties","workingPrimaries","texturePrimaries","unpackConversion","verifyColorSpace","mipmap","mipmaps","useTexStorage","allocateMemory","dataReady","layerByteLength","layerData","isDataTexture","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","useMultisampledRTT","getRenderTargetSamples","setupRenderBufferStorage","renderbuffer","isMultisample","depthTexture","glAttachmentType","setupDepthTexture","webglDepthTexture","setupDepthRenderbuffer","isCube","disposeEvent","rebindTextures","colorTexture","setupRenderTarget","isMultipleRenderTargets","glTextureType","updateRenderTargetMipmap","targetType","invalidationArrayRead","invalidationArrayDraw","updateMultisampleRenderTarget","depthStyle","WebGLUtils","ArrayCamera","Group","_moveEvent","WebXRController","inputSource","hand","inputjoint","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","jointPose","joint","indexTip","thumbTip","distanceToPinch","threshold","_occlusion_vertex","_occlusion_fragment","WebXRDepthSensing","depthData","texProps","cameraXR","WebXRManager","framebufferScaleFactor","referenceSpaceType","foveation","customReferenceSpace","pose","glBinding","glProjLayer","glBaseLayer","xrFrame","depthSensing","initialRenderTarget","newRenderTarget","controllers","controllerInputSources","currentSize","currentPixelRatio","cameraL","cameraR","_currentDepthNear","_currentDepthFar","onSessionEvent","controllerIndex","onSessionEnd","onInputSourcesChange","layerInit","depthFormat","glDepthFormat","projectionlayerInit","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","near2","far2","left2","right2","top2","bottom2","updateCamera","depthNear","depthFar","updateUserCamera","onAnimationFrameCallback","views","cameraXRNeedsUpdate","glSubImage","enabledFeatures","_e1","_m1","WebGLMaterials","refreshTransformUniform","refreshFogUniforms","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","refreshUniformsToon","refreshUniformsPhong","refreshUniformsStandard","refreshUniformsPhysical","refreshUniformsMatcap","refreshUniformsDistance","refreshUniformsLine","refreshUniformsDash","refreshUniformsPoints","refreshUniformsSprites","envMapRotation","WebGLUniformsGroups","updateList","allocatedBindingPoints","maxBindingPoints","webglProgram","prepareUniformsGroup","onUniformsGroupsDispose","updateBufferData","bindingPointIndex","allocateBindingPointIndex","uniformArray","hasUniformChanged","arrayOffset","getUniformSize","indexArray","indexString","cachedObject","chunkSize","chunkOffset","chunkPadding","chunkStart","WebGLRenderer","antialias","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","_alpha","uintClearColor","intClearColor","currentRenderList","currentRenderState","renderListStack","renderStateStack","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_currentClearColor","_currentClearAlpha","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_clippingEnabled","_localClippingEnabled","_currentProjectionMatrix","_projScreenMatrix","_vector3","_vector4","_emptyScene","_renderBackground","getTargetPixelRatio","getContext","contextName","contextAttributes","onContextLost","onContextRestore","onContextCreationError","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","uniformsGroups","initGLContext","updateStyle","boolean","isIntegerFormat","targetFormat","isUnsignedType","onXRSessionStart","onXRSessionEnd","infoAutoReset","shadowMapEnabled","shadowMapAutoUpdate","shadowMapNeedsUpdate","shadowMapType","deallocateMaterial","releaseMaterialProgramReferences","setProgram","rangeFactor","drawStart","drawEnd","lineWidth","maxInstanceCount","prepareMaterial","getProgram","targetScene","material2","checkMaterialsReady","depthSensingMesh","projectObject","opaqueObjects","transmissiveObjects","camera2","renderTransmissionPass","renderScene","sortObjects","transparentObjects","renderObjects","activeViewport","currentToneMapping","currentCameraViewport","renderTargetNeedsUpdate","currentSide","overrideMaterial","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","materialNeedsLights","getUniformList","progUniforms","vertexAlphas","vertexTangents","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","markUniformsLightsNeedsUpdate","defaultFramebuffer","useDefaultFramebuffer","isRenderTarget3D","__webglFramebuffer","layer","activeCubeFaceIndex","glBuffer","currFramebuffer","levelScale","srcTexture","dstTexture","srcRegion","dstPosition","minX","minY","minZ","dstX","dstY","dstZ","glTarget","currentUnpackRowLen","currentUnpackImageHeight","currentUnpackSkipPixels","currentUnpackSkipRows","currentUnpackSkipImages","isSrc3D","isDst3D","srcTextureProperties","dstTextureProperties","srcRenderTargetProperties","dstRenderTargetProperties","Scene","LineBasicMaterial","_vStart","_vEnd","_inverseMatrix$1","_ray$1","_sphere$1","_intersectPointOnRay","_intersectPointOnSegment","Line","lineDistances","localThreshold","localThresholdSq","checkIntersection","thresholdSq","_start","_end","LineSegments","PointsMaterial","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","intersectPoint","PolyhedronGeometry","detail","vertexBuffer","uvBuffer","subdivide","applyRadius","generateUVs","getVertexByIndex","subdivideFace","cols","rows","pushVertex","azimuth","inclination","correctUVs","correctSeam","centroid","azi","correctUV","_v0","_v1$1","_normal","_triangle","EdgesGeometry","thresholdAngle","thresholdDot","indexAttr","positionAttr","indexCount","indexArr","vertKeys","hashes","edgeData","jNext","vecHash0","vecHash1","reverseHash","index0","IcosahedronGeometry","MeshStandardMaterial","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","shadowMatrix","viewportIndex","_lightPositionWorld","_lookTarget","PointLightShadow","PointLight","decay","AmbientLight","AnimatedBackground","mountRef","useRef","useEffect","THREE.Scene","THREE.PerspectiveCamera","THREE.WebGLRenderer","ambientLight","THREE.AmbientLight","orangeLight","THREE.PointLight","greenLight","THREE.IcosahedronGeometry","THREE.MeshStandardMaterial","THREE.Mesh","edges","THREE.EdgesGeometry","THREE.LineSegments","THREE.LineBasicMaterial","orbitGroup","THREE.Group","particlesGeometry","THREE.BufferGeometry","particleCount","positions","THREE.BufferAttribute","particlesMaterial","THREE.PointsMaterial","particles","THREE.Points","animationFrame","onResize","animate","apiUrl","networkKey","STACKS_NETWORK","CONTRACT_ADDRESS","CONTRACT_NAME","NETWORK_KEY","NETWORK_NAME","STACKS_API_URL","MICRO_STX","formatStx","whole","fractionStr","toMicroStx","cleaned","toFixedBuffer","padded","FeeEstimator","useState","isEstimating","setIsEstimating","planCost","totalCost","jsxs","jsx","initialValues","CreatePlanForm","onSubmit","disabled","setValues","setError","isSubmitting","setSubmitting","handleSubmit","BlockCountdown","currentBlock","targetBlock","blocksRemaining","minutesRemaining","hoursRemaining","minsRemaining","timeStr","PlanHistory","plan","initialFunding","topupAmount","QRCodeShare","planId","customerAddress","showQR","setShowQR","shareUrl","qrApiUrl","handleCopyLink","PlanCard","onClaim","onTopup","busy","extraClaims","setExtraClaims","isRunning","setRunning","showHistory","setShowHistory","isMerchant","isCustomer","claimsLeft","hasBalance","canClaim","handleClaim","handleTopup","handleCancel","Fragment","CustomerPortal","plans","onClaimAll","myPlans","totalClaimable","totalLocked","claimablePlans","MerchantPortal","totalFunded","totalClaimed","activePlans","completedPlans","ReadOnlyView","lookupAddress","onLookup","inputAddress","setInputAddress","FaucetHelper","faucetUrl","LandingPage","onGetStarted","Toast","toast","onDismiss","getIcon","getClassName","ToastContainer","toasts","toastId","useToast","setToasts","showToast","useCallback","duration","dismissToast","updateToast","useBlockHeight","blockHeight","setBlockHeight","isLoading","setIsLoading","fetchBlockHeight","decodeBuff","unwrapOk","unwrapUInt","parsePlanOption","optionCv","tupleData","App","userSession","doOpenAuth","doContractCall","connectSession","useConnect","setPlans","isFetching","setFetching","busyPlanId","setBusyPlanId","viewMode","setViewMode","setLookupAddress","planParam","customerParam","isSignedIn","useMemo","shortAddress","contractReady","refreshPlans","loadingToastId","lookupAddr","latestResponse","totalPlans","planCv","requireWallet","handleCreatePlan","runPlanAction","actionName","handleClaimAll","customerPlans","handleSignIn","handleSignOut","handleLookup","renderContent","authOptions","ReactDOM","React","Connect"],"ignoreList":[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,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,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366],"sources":["../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js","../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js","../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js","../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/index.js","../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/config.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/errors.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/logger.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/utils.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/signatures.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/keys.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/buffer.js","../../node_modules/.pnpm/@stacks+common@7.0.2/node_modules/@stacks/common/dist/esm/fetch.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/appConfig.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/_assert.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/utils.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/hmac.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/_sha2.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/sha256.js","../../__vite-browser-external","../../node_modules/.pnpm/@noble+secp256k1@1.7.1/node_modules/@noble/secp256k1/lib/esm/index.js","../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/cryptoUtils.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/aesCipher.js","../../node_modules/.pnpm/base-x@4.0.1/node_modules/base-x/src/index.js","../../node_modules/.pnpm/bs58@5.0.0/node_modules/bs58/index.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/ripemd160.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/hashRipemd160.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/_u64.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/esm/sha512.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/sha2Hash.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/keys.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/ec.js","../../node_modules/.pnpm/@stacks+encryption@7.2.0/node_modules/@stacks/encryption/dist/esm/encryption.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/_assert.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/cryptoBrowser.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/utils.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/hmac.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/_sha2.js","../../node_modules/.pnpm/@noble+hashes@1.1.5/node_modules/@noble/hashes/sha256.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/base64Url.js","../../node_modules/.pnpm/@noble+secp256k1@1.7.1/node_modules/@noble/secp256k1/lib/index.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/ecdsaSigFormatter.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/errors.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/cryptoClients/secp256k1.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/cryptoClients/index.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/cryptoClients/sha256.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/signer.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/verifier.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/decode.js","../../node_modules/.pnpm/jsontokens@4.0.1/node_modules/jsontokens/lib/index.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/dids.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/messages.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/verification.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/sessionData.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/sessionStore.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/BytesReader.js","../../node_modules/.pnpm/@stacks+network@7.2.0/node_modules/@stacks/network/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+network@7.2.0/node_modules/@stacks/network/dist/esm/network.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/errors.js","../../node_modules/.pnpm/c32check@2.0.0/node_modules/c32check/lib/encoding.js","../../node_modules/.pnpm/c32check@2.0.0/node_modules/c32check/lib/checksum.js","../../node_modules/.pnpm/c32check@2.0.0/node_modules/c32check/lib/base58check.js","../../node_modules/.pnpm/c32check@2.0.0/node_modules/c32check/lib/address.js","../../node_modules/.pnpm/c32check@2.0.0/node_modules/c32check/lib/index.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/address.js","../../node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/constants.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/booleanCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/bufferCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/intCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/listCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/optionalCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/wire/types.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/wire/create.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/wire/serialization.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/wire/helpers.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/principalCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/responseCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/stringCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/values/tupleCV.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/deserialize.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/clarity/serialize.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/utils.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/keys.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/authorization.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/transaction.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/postcondition.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/namespaces/address.js","../../node_modules/.pnpm/@stacks+transactions@7.2.0/node_modules/@stacks/transactions/dist/esm/cl.js","../../node_modules/.pnpm/@stacks+profile@7.2.0/node_modules/@stacks/profile/dist/esm/profileTokens.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/protocolEchoDetection.js","../../node_modules/.pnpm/@stacks+auth@7.2.0/node_modules/@stacks/auth/dist/esm/userSession.js","../../node_modules/.pnpm/cross-fetch@3.2.0/node_modules/cross-fetch/dist/browser-polyfill.js","../../node_modules/.pnpm/@stacks+network@6.17.0/node_modules/@stacks/network/dist/esm/fetch.js","../../node_modules/.pnpm/@stacks+common@6.16.0/node_modules/@stacks/common/dist/esm/utils.js","../../node_modules/.pnpm/@stacks+common@6.16.0/node_modules/@stacks/common/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+common@6.16.0/node_modules/@stacks/common/dist/esm/signatures.js","../../node_modules/.pnpm/@stacks+common@6.16.0/node_modules/@stacks/common/dist/esm/keys.js","../../node_modules/.pnpm/@stacks+common@6.16.0/node_modules/@stacks/common/dist/esm/buffer.js","../../node_modules/.pnpm/@stacks+network@6.17.0/node_modules/@stacks/network/dist/esm/network.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/constants.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/common.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/postcondition-types.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/constants.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/principalCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/clarityValue.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/booleanCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/intCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/bufferCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/optionalCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/responseCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/listCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/tupleCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/types/stringCV.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/keys.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/payload.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/errors.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/signature.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/types.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/serialize.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/bytesReader.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/clarity/deserialize.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/utils.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/authorization.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/contract-abi.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/signer.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/transaction.js","../../node_modules/.pnpm/@stacks+transactions@6.17.0/node_modules/@stacks/transactions/dist/esm/builders.js","../../node_modules/.pnpm/@scure+base@1.2.6/node_modules/@scure/base/lib/esm/index.js","../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/dist/esm/index.js","../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/dist/esm/index-BnFj5nlp.js","../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/dist/esm/app-globals-DQuL1Twl.js","../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/dist/esm/loader.js","../../node_modules/.pnpm/@stacks+connect-ui@8.1.0/node_modules/@stacks/connect-ui/loader/index.js","../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","../../node_modules/.pnpm/tslib@1.14.1/node_modules/tslib/tslib.es6.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/utils/delay.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/constants/misc.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/constants/time.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/constants/index.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/utils/convert.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/utils/index.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/watch.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/types/watch.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/types/index.js","../../node_modules/.pnpm/@walletconnect+time@1.0.2/node_modules/@walletconnect/time/dist/cjs/index.js","../../node_modules/.pnpm/@walletconnect+events@1.0.1/node_modules/@walletconnect/events/dist/esm/events.js","../../node_modules/.pnpm/@walletconnect+heartbeat@1.2.2/node_modules/@walletconnect/heartbeat/dist/index.es.js","../../node_modules/.pnpm/destr@2.0.5/node_modules/destr/dist/index.mjs","../../node_modules/.pnpm/unstorage@1.17.1_idb-keyval@6.2.2/node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../node_modules/.pnpm/unstorage@1.17.1_idb-keyval@6.2.2/node_modules/unstorage/dist/index.mjs","../../node_modules/.pnpm/idb-keyval@6.2.2/node_modules/idb-keyval/dist/index.js","../../node_modules/.pnpm/@walletconnect+safe-json@1.0.2/node_modules/@walletconnect/safe-json/dist/esm/index.js","../../node_modules/.pnpm/@walletconnect+keyvaluestorage@1.1.1/node_modules/@walletconnect/keyvaluestorage/dist/index.es.js","../../node_modules/.pnpm/quick-format-unescaped@4.0.4/node_modules/quick-format-unescaped/index.js","../../node_modules/.pnpm/pino@7.11.0/node_modules/pino/browser.js","../../node_modules/.pnpm/@walletconnect+logger@2.1.2/node_modules/@walletconnect/logger/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+types@2.21.5/node_modules/@walletconnect/types/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+relay-auth@1.1.0/node_modules/@walletconnect/relay-auth/dist/index.es.js","../../node_modules/.pnpm/detect-browser@5.3.0/node_modules/detect-browser/es/index.js","../../node_modules/.pnpm/@walletconnect+window-getters@1.0.1/node_modules/@walletconnect/window-getters/dist/cjs/index.js","../../node_modules/.pnpm/@walletconnect+window-metadata@1.0.1/node_modules/@walletconnect/window-metadata/dist/cjs/index.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/isHex.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/size.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/version.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/base.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/data.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/pad.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/encoding.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/encoding/fromHex.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/encoding/toHex.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/encoding/toBytes.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/crypto.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha3.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/hash/keccak256.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/lru.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/address/getAddress.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/accounts/utils/publicKeyToAddress.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/signature/recoverPublicKey.js","../../node_modules/.pnpm/viem@2.31.0_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/signature/recoverAddress.js","../../node_modules/.pnpm/base-x@5.0.1/node_modules/base-x/src/esm/index.js","../../node_modules/.pnpm/bs58@6.0.0/node_modules/bs58/src/esm/index.js","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/utils/utf8.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/ExtData.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/DecodeError.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/utils/int.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/timestamp.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/ExtensionCodec.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/utils/typedArrays.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/Encoder.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/encode.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/utils/prettyByte.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/CachedKeyDecoder.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/Decoder.mjs","../../node_modules/.pnpm/@msgpack+msgpack@3.1.2/node_modules/@msgpack/msgpack/dist.esm/decode.mjs","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/as-uint8array.js","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/alloc.js","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/concat.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/vendor/base-x.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bytes.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/identity.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base2.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base8.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base10.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base16.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base32.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base36.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base58.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base64.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/bases/base256emoji.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/codecs/json.js","../../node_modules/.pnpm/multiformats@9.9.0/node_modules/multiformats/esm/src/basics.js","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/util/bases.js","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/from-string.js","../../node_modules/.pnpm/uint8arrays@3.1.1/node_modules/uint8arrays/esm/src/to-string.js","../../node_modules/.pnpm/@walletconnect+relay-api@1.0.11/node_modules/@walletconnect/relay-api/dist/index.es.js","../../node_modules/.pnpm/blakejs@1.2.1/node_modules/blakejs/util.js","../../node_modules/.pnpm/blakejs@1.2.1/node_modules/blakejs/blake2b.js","../../node_modules/.pnpm/blakejs@1.2.1/node_modules/blakejs/blake2s.js","../../node_modules/.pnpm/blakejs@1.2.1/node_modules/blakejs/index.js","../../node_modules/.pnpm/@walletconnect+utils@2.21.5_typescript@5.9.3_zod@3.22.4/node_modules/@walletconnect/utils/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-utils@1.0.8/node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-utils@1.0.8/node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js","../../node_modules/.pnpm/@walletconnect+environment@1.0.1/node_modules/@walletconnect/environment/dist/cjs/crypto.js","../../node_modules/.pnpm/@walletconnect+environment@1.0.1/node_modules/@walletconnect/environment/dist/cjs/env.js","../../node_modules/.pnpm/@walletconnect+environment@1.0.1/node_modules/@walletconnect/environment/dist/cjs/index.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-utils@1.0.8/node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-types@1.0.4/node_modules/@walletconnect/jsonrpc-types/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-utils@1.0.8/node_modules/@walletconnect/jsonrpc-utils/dist/esm/url.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-utils@1.0.8/node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-provider@1.0.14/node_modules/@walletconnect/jsonrpc-provider/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-ws-connection@1.0.16/node_modules/@walletconnect/jsonrpc-ws-connection/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+core@2.21.5_typescript@5.9.3_zod@3.22.4/node_modules/@walletconnect/core/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+sign-client@2.21.5_typescript@5.9.3_zod@3.22.4/node_modules/@walletconnect/sign-client/dist/index.es.js","../../node_modules/.pnpm/cross-fetch@3.2.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../node_modules/.pnpm/@walletconnect+jsonrpc-http-connection@1.0.8/node_modules/@walletconnect/jsonrpc-http-connection/dist/index.es.js","../../node_modules/.pnpm/@walletconnect+universal-provider@2.21.5_typescript@5.9.3_zod@3.22.4/node_modules/@walletconnect/universal-provider/dist/index.es.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/NetworkUtil.js","../../node_modules/.pnpm/big.js@6.2.2/node_modules/big.js/big.mjs","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/NumberUtil.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/contracts/erc20.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/contracts/swap.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/contracts/usdt.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/ContractUtil.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/ParseUtil.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/SafeLocalStorage.js","../../node_modules/.pnpm/@reown+appkit-common@1.7.17_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-common/dist/esm/src/utils/ThemeUtil.js","../../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js","../../node_modules/.pnpm/valtio@2.1.5_@types+react@18.3.25_react@18.3.1/node_modules/valtio/esm/vanilla.mjs","../../node_modules/.pnpm/valtio@2.1.5_@types+react@18.3.25_react@18.3.1/node_modules/valtio/esm/vanilla/utils.mjs","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/StorageUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/CoreHelperUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/FetchUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/OptionsUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/OptionsController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/TelemetryController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/withErrorBoundary.js","../../node_modules/.pnpm/@reown+appkit-wallet@1.7.17_typescript@5.9.3/node_modules/@reown/appkit-wallet/dist/esm/src/W3mFrameConstants.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/MobileWallet.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/AssetController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/AssetUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/AlertController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/EventsController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ApiController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/RouterController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ThemeController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ConnectorController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ConnectorControllerUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ChainControllerUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ConnectionControllerUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/SnackController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/TransactionsController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ConnectionController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/PublicStateController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/SwapApiUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/SendController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ChainController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/BlockchainApiController.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/isHex.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/size.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/version.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/base.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/data.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/data/pad.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/encoding.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/encoding/fromHex.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/encoding/toHex.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/lru.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/stringify.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/unit/formatUnits.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/utils.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/request.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/rpc.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/node.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/promise/withResolvers.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/promise/createBatchScheduler.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/wait.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/promise/withRetry.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/uid.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/promise/withDedupe.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/buildRequest.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/promise/withTimeout.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/rpc/id.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/utils/rpc/http.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/clients/transports/createTransport.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/clients/transports/fallback.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/errors/transport.js","../../node_modules/.pnpm/viem@2.37.12_typescript@5.9.3_zod@3.22.4/node_modules/viem/_esm/clients/transports/http.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ERC7811Util.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/BalanceUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/AccountController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/NetworkUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/ModalController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/OnRampController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/EnsUtil.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/EnsController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/SIWXUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/PresetsUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/HelpersUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/ErrorUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/LoggerUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/CaipNetworkUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/ProviderUtil.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/WalletUtil.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/utils/ConnectorUtil.js","../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/css-tag.js","../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/reactive-element.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/lit-html.js","../../node_modules/.pnpm/lit-element@4.2.1/node_modules/lit-element/lit-element.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/ThemeUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/ethers/EthersHelpersUtil.js","../../node_modules/.pnpm/@reown+appkit-utils@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_valtio@2._7cbe0ee763ceb868407d9b67b26e28cf/node_modules/@reown/appkit-utils/dist/esm/src/bitcoin/BitcoinConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/networks/utils.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/networks/solana/solana.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/networks/solana/solanaDevnet.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/networks/solana/solanaTestnet.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/networks/bitcoin.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/utils/HelpersUtil.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/connections/ConnectionManager.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/utils/ConstantsUtil.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/connectors/WalletConnectConnector.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/adapters/ChainAdapterBlueprint.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/universal-adapter/client.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/utils/ConfigUtil.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/client/appkit-base-client.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/src/client/appkit-core.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/exports/constants.js","../../node_modules/.pnpm/@reown+appkit@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit/dist/esm/exports/core.js","../../node_modules/.pnpm/@reown+appkit-universal-connector@1.7.17_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-universal-connector/dist/esm/src/UniversalConnector.js","../../node_modules/.pnpm/@stacks+connect@8.2.0_@types+react@18.3.25_lit@3.3.0_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@stacks/connect/dist/index.mjs","../../node_modules/.pnpm/@stacks+connect-react@23.1.0_@types+react@18.3.25_lit@3.3.0_react-dom@18.3.1_react@18.3_dd54337a0a62ea961d19843d4658703c/node_modules/@stacks/connect-react/dist/index.mjs","../../node_modules/.pnpm/three@0.170.0/node_modules/three/build/three.module.js","../../frontend/src/components/AnimatedBackground.tsx","../../frontend/src/lib/config.ts","../../frontend/src/components/FeeEstimator.tsx","../../frontend/src/components/CreatePlanForm.tsx","../../frontend/src/components/BlockCountdown.tsx","../../frontend/src/components/PlanHistory.tsx","../../frontend/src/components/QRCodeShare.tsx","../../frontend/src/components/PlanCard.tsx","../../frontend/src/components/CustomerPortal.tsx","../../frontend/src/components/MerchantPortal.tsx","../../frontend/src/components/ReadOnlyView.tsx","../../frontend/src/components/FaucetHelper.tsx","../../frontend/src/components/LandingPage.tsx","../../frontend/src/components/Toast.tsx","../../frontend/src/hooks/useToast.ts","../../frontend/src/hooks/useBlockHeight.ts","../../frontend/src/lib/clarity.ts","../../frontend/src/App.tsx","../../frontend/src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 parseInt(x, 10));\n const v2tuple = v2.split('.').map(x => parseInt(x, 10));\n for (let index = 0; index < v2.length; index++) {\n if (index >= v1.length) {\n v2tuple.push(0);\n }\n if (v1tuple[index] < v2tuple[index]) {\n return false;\n }\n }\n return true;\n}\nexport function makeUUID4() {\n let d = new Date().getTime();\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\nexport function isSameOriginAbsoluteUrl(uri1, uri2) {\n try {\n const parsedUri1 = new URL(uri1);\n const parsedUri2 = new URL(uri2);\n const port1 = parseInt(parsedUri1.port || '0', 10) | 0 || (parsedUri1.protocol === 'https:' ? 443 : 80);\n const port2 = parseInt(parsedUri2.port || '0', 10) | 0 || (parsedUri2.protocol === 'https:' ? 443 : 80);\n const match = {\n scheme: parsedUri1.protocol === parsedUri2.protocol,\n hostname: parsedUri1.hostname === parsedUri2.hostname,\n port: port1 === port2,\n absolute: (uri1.includes('http://') || uri1.includes('https://')) &&\n (uri2.includes('http://') || uri2.includes('https://')),\n };\n return match.scheme && match.hostname && match.port && match.absolute;\n }\n catch (error) {\n console.log(error);\n console.log('Parsing error in same URL origin check');\n return false;\n }\n}\nexport function getGlobalScope() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unexpected runtime environment - no supported global scope (`window`, `self`, `global`) available');\n}\nfunction getAPIUsageErrorMessage(scopeObject, apiName, usageDesc) {\n if (usageDesc) {\n return `Use of '${usageDesc}' requires \\`${apiName}\\` which is unavailable on the '${scopeObject}' object within the currently executing environment.`;\n }\n else {\n return `\\`${apiName}\\` is unavailable on the '${scopeObject}' object within the currently executing environment.`;\n }\n}\nexport function getGlobalObject(name, { throwIfUnavailable, usageDesc, returnEmptyObject } = {}) {\n let globalScope = undefined;\n try {\n globalScope = getGlobalScope();\n if (globalScope) {\n const obj = globalScope[name];\n if (obj) {\n return obj;\n }\n }\n }\n catch (error) {\n Logger.error(`Error getting object '${name}' from global scope '${globalScope}': ${error}`);\n }\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n if (returnEmptyObject) {\n return {};\n }\n return undefined;\n}\nexport function getGlobalObjects(names, { throwIfUnavailable, usageDesc, returnEmptyObject } = {}) {\n let globalScope;\n try {\n globalScope = getGlobalScope();\n }\n catch (error) {\n Logger.error(`Error getting global scope: ${error}`);\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, names[0].toString(), usageDesc);\n Logger.error(errMsg);\n throw errMsg;\n }\n else if (returnEmptyObject) {\n globalScope = {};\n }\n }\n const result = {};\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n try {\n if (globalScope) {\n const obj = globalScope[name];\n if (obj) {\n result[name] = obj;\n }\n else if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n else if (returnEmptyObject) {\n result[name] = {};\n }\n }\n }\n catch (error) {\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n }\n }\n return result;\n}\nexport function intToBytes(value, byteLength) {\n return bigIntToBytes(intToBigInt(value), byteLength);\n}\nexport function intToBigInt(value) {\n if (typeof value === 'bigint')\n return value;\n if (typeof value === 'string')\n return BigInt(value);\n if (typeof value === 'number') {\n if (!Number.isInteger(value)) {\n throw new RangeError(`Invalid value. Values of type 'number' must be an integer.`);\n }\n if (value > Number.MAX_SAFE_INTEGER) {\n throw new RangeError(`Invalid value. Values of type 'number' must be less than or equal to ${Number.MAX_SAFE_INTEGER}. For larger values, try using a BigInt instead.`);\n }\n return BigInt(value);\n }\n if (isInstance(value, Uint8Array))\n return BigInt(`0x${bytesToHex(value)}`);\n throw new TypeError(`intToBigInt: Invalid value type. Must be a number, bigint, BigInt-compatible string, or Uint8Array.`);\n}\nexport function with0x(value) {\n return /^0x/i.test(value)\n ? value\n : `0x${value}`;\n}\nexport function without0x(value) {\n return /^0x/i.test(value)\n ? value.slice(2)\n : value;\n}\nexport function hexToBigInt(hex) {\n if (typeof hex !== 'string')\n throw new TypeError(`hexToBigInt: expected string, got ${typeof hex}`);\n return BigInt(`0x${hex}`);\n}\nexport function intToHex(integer, byteLength = 8) {\n const value = typeof integer === 'bigint' ? integer : intToBigInt(integer);\n return value.toString(16).padStart(byteLength * 2, '0');\n}\nexport function hexToInt(hex) {\n return parseInt(hex, 16);\n}\nexport function bigIntToBytes(value, length = 16) {\n const hex = intToHex(value, length);\n return hexToBytes(hex);\n}\nexport function toTwos(value, width) {\n if (value < -(BigInt(1) << (width - BigInt(1))) ||\n (BigInt(1) << (width - BigInt(1))) - BigInt(1) < value) {\n throw `Unable to represent integer in width: ${width}`;\n }\n if (value >= BigInt(0)) {\n return BigInt(value);\n }\n return value + (BigInt(1) << width);\n}\nfunction nthBit(value, n) {\n return value & (BigInt(1) << n);\n}\nexport function bytesToTwosBigInt(bytes) {\n return fromTwos(BigInt(`0x${bytesToHex(bytes)}`), BigInt(bytes.byteLength * 8));\n}\nexport function fromTwos(value, width) {\n if (nthBit(value, width - BigInt(1))) {\n return value - (BigInt(1) << width);\n }\n return value;\n}\nconst hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\nexport function bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (const u of uint8a) {\n hex += hexes[u];\n }\n return hex;\n}\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError(`hexToBytes: expected string, got ${typeof hex}`);\n }\n hex = without0x(hex);\n hex = hex.length % 2 ? `0${hex}` : hex;\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexport function utf8ToBytes(str) {\n return new TextEncoder().encode(str);\n}\nexport function bytesToUtf8(arr) {\n return new TextDecoder().decode(arr);\n}\nexport function asciiToBytes(str) {\n const byteArray = [];\n for (let i = 0; i < str.length; i++) {\n byteArray.push(str.charCodeAt(i) & 0xff);\n }\n return new Uint8Array(byteArray);\n}\nexport function bytesToAscii(arr) {\n return String.fromCharCode.apply(null, arr);\n}\nfunction isNotOctet(octet) {\n return !Number.isInteger(octet) || octet < 0 || octet > 255;\n}\nexport function octetsToBytes(numbers) {\n if (numbers.some(isNotOctet))\n throw new Error('Some values are invalid bytes.');\n return new Uint8Array(numbers);\n}\nexport function concatBytes(...arrays) {\n if (!arrays.every(a => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function concatArray(elements) {\n return concatBytes(...elements.map(e => {\n if (typeof e === 'number')\n return octetsToBytes([e]);\n if (e instanceof Array)\n return octetsToBytes(e);\n return e;\n }));\n}\nexport function isInstance(object, clazz) {\n return object instanceof clazz || object?.constructor?.name?.toLowerCase() === clazz.name;\n}\nexport function validateHash256(hex) {\n hex = without0x(hex);\n if (hex.length !== 64)\n return false;\n return /^[0-9a-fA-F]+$/.test(hex);\n}\n//# sourceMappingURL=utils.js.map","export const HIRO_MAINNET_URL = 'https://api.mainnet.hiro.so';\nexport const HIRO_TESTNET_URL = 'https://api.testnet.hiro.so';\nexport const DEVNET_URL = 'http://localhost:3999';\nexport const GAIA_URL = 'https://hub.blockstack.org';\nexport const PRIVATE_KEY_BYTES_COMPRESSED = 33;\nexport const PRIVATE_KEY_BYTES_UNCOMPRESSED = 32;\n//# sourceMappingURL=constants.js.map","import { hexToInt } from './utils';\nconst COORDINATE_BYTES = 32;\nexport function parseRecoverableSignatureVrs(signature) {\n if (signature.length < COORDINATE_BYTES * 2 * 2 + 1) {\n throw new Error('Invalid signature');\n }\n const recoveryIdHex = signature.slice(0, 2);\n const r = signature.slice(2, 2 + COORDINATE_BYTES * 2);\n const s = signature.slice(2 + COORDINATE_BYTES * 2);\n return {\n recoveryId: hexToInt(recoveryIdHex),\n r,\n s,\n };\n}\nexport function signatureVrsToRsv(signature) {\n return signature.slice(2) + signature.slice(0, 2);\n}\nexport function signatureRsvToVrs(signature) {\n return signature.slice(-2) + signature.slice(0, -2);\n}\n//# sourceMappingURL=signatures.js.map","import { hexToBytes } from './utils';\nexport function privateKeyToBytes(privateKey) {\n const privateKeyBuffer = typeof privateKey === 'string' ? hexToBytes(privateKey) : privateKey;\n if (privateKeyBuffer.length != 32 && privateKeyBuffer.length != 33) {\n throw new Error(`Improperly formatted private-key. Private-key byte length should be 32 or 33. Length provided: ${privateKeyBuffer.length}`);\n }\n if (privateKeyBuffer.length == 33 && privateKeyBuffer[32] !== 1) {\n throw new Error('Improperly formatted private-key. 33 bytes indicate compressed key, but the last byte must be == 01');\n }\n return privateKeyBuffer;\n}\n//# sourceMappingURL=keys.js.map","export function equals(a, b) {\n if (a.byteLength !== b.byteLength)\n return false;\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\nexport function alloc(length, value) {\n const a = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n a[i] = value;\n }\n return a;\n}\nexport function readUInt16BE(source, offset) {\n return ((source[offset + 0] << 8) | source[offset + 1]) >>> 0;\n}\nexport function writeUInt16BE(destination, value, offset = 0) {\n destination[offset + 0] = value >>> 8;\n destination[offset + 1] = value >>> 0;\n return destination;\n}\nexport function readUInt8(source, offset) {\n return source[offset];\n}\nexport function writeUInt8(destination, value, offset = 0) {\n destination[offset] = value;\n return destination;\n}\nexport function readUInt16LE(source, offset) {\n return ((source[offset + 0] << 0) >>> 0) | ((source[offset + 1] << 8) >>> 0);\n}\nexport function writeUInt16LE(destination, value, offset = 0) {\n destination[offset + 0] = value & 255;\n value >>>= 8;\n destination[offset + 1] = value & 255;\n return destination;\n}\nexport function readUInt32BE(source, offset) {\n return (source[offset] * 2 ** 24 +\n source[offset + 1] * 2 ** 16 +\n source[offset + 2] * 2 ** 8 +\n source[offset + 3]);\n}\nexport function writeUInt32BE(destination, value, offset = 0) {\n destination[offset + 3] = value;\n value >>>= 8;\n destination[offset + 2] = value;\n value >>>= 8;\n destination[offset + 1] = value;\n value >>>= 8;\n destination[offset] = value;\n return destination;\n}\nexport function readUInt32LE(source, offset) {\n return (((source[offset + 0] << 0) >>> 0) |\n ((source[offset + 1] << 8) >>> 0) |\n ((source[offset + 2] << 16) >>> 0) |\n ((source[offset + 3] << 24) >>> 0));\n}\nexport function writeUInt32LE(destination, value, offset = 0) {\n destination[offset + 0] = value & 255;\n value >>>= 8;\n destination[offset + 1] = value & 255;\n value >>>= 8;\n destination[offset + 2] = value & 255;\n value >>>= 8;\n destination[offset + 3] = value & 255;\n return destination;\n}\n//# sourceMappingURL=buffer.js.map","const defaultFetchOpts = {\n referrerPolicy: 'origin',\n headers: {\n 'x-hiro-product': 'stacksjs',\n },\n};\nexport const getFetchOptions = () => {\n return defaultFetchOpts;\n};\nexport const setFetchOptions = (ops) => {\n return Object.assign(defaultFetchOpts, ops);\n};\nexport async function fetchWrapper(input, init) {\n const fetchOpts = {};\n Object.assign(fetchOpts, defaultFetchOpts, init);\n const fetchResult = await fetch(input, fetchOpts);\n return fetchResult;\n}\nexport function hostMatches(host, pattern) {\n if (typeof pattern === 'string')\n return pattern === host;\n return pattern.exec(host);\n}\nexport function createApiKeyMiddleware({ apiKey, host = /(.*)api(.*)(\\.stacks\\.co|\\.hiro\\.so)$/i, httpHeader = 'x-api-key', }) {\n return {\n pre: context => {\n const reqUrl = new URL(context.url);\n if (!hostMatches(reqUrl.host, host))\n return;\n const headers = context.init.headers instanceof Headers\n ? context.init.headers\n : (context.init.headers = new Headers(context.init.headers));\n headers.set(httpHeader, apiKey);\n },\n };\n}\nfunction argsForCreateFetchFn(args) {\n let fetchLib = fetchWrapper;\n let middlewares = [];\n if (args.length > 0 && typeof args[0] === 'function') {\n fetchLib = args.shift();\n }\n if (args.length > 0) {\n middlewares = args;\n }\n return { fetchLib, middlewares };\n}\nexport function createFetchFn(...args) {\n const { fetchLib, middlewares } = argsForCreateFetchFn(args);\n const fetchFn = async (url, init) => {\n let fetchParams = { url, init: init ?? {} };\n for (const middleware of middlewares) {\n if (typeof middleware.pre === 'function') {\n const result = await Promise.resolve(middleware.pre({\n fetch: fetchLib,\n ...fetchParams,\n }));\n fetchParams = result ?? fetchParams;\n }\n }\n let response = await fetchLib(fetchParams.url, fetchParams.init);\n for (const middleware of middlewares) {\n if (typeof middleware.post === 'function') {\n const result = await Promise.resolve(middleware.post({\n fetch: fetchLib,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response?.clone() ?? response,\n }));\n response = result ?? response;\n }\n }\n return response;\n };\n return fetchFn;\n}\n//# sourceMappingURL=fetch.js.map","import { DEFAULT_SCOPE, DEFAULT_BLOCKSTACK_HOST } from './constants';\nimport { getGlobalObject } from '@stacks/common';\nexport class AppConfig {\n constructor(scopes = DEFAULT_SCOPE.slice(), appDomain = getGlobalObject('location', { returnEmptyObject: true })\n ?.origin, redirectPath = '', manifestPath = '/manifest.json', coreNode = undefined, authenticatorURL = DEFAULT_BLOCKSTACK_HOST) {\n this.appDomain = appDomain;\n this.scopes = scopes;\n this.redirectPath = redirectPath;\n this.manifestPath = manifestPath;\n this.coreNode = coreNode;\n this.authenticatorURL = authenticatorURL;\n }\n redirectURI() {\n return `${this.appDomain}${this.redirectPath}`;\n }\n manifestURI() {\n return `${this.appDomain}${this.manifestPath}`;\n }\n}\n//# sourceMappingURL=appConfig.js.map","export function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexport function bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexport function hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexport function exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexport function output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import assert from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assert.hash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assert.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import assert from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n assert.exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\nexport const sha224 = wrapConstructor(() => new SHA224());\n","export default {}","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n a: _0n,\n b: BigInt(7),\n P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst endo = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000');\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n};\nconst fieldLen = 32;\nconst groupLen = 32;\nconst hashLen = 32;\nconst compressedLen = fieldLen + 1;\nconst uncompressedLen = 2 * fieldLen + 1;\nexport { CURVE };\nfunction weierstrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n constructor(message) {\n super(message);\n }\n}\nfunction assertJacPoint(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n}\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n if (p.equals(Point.ZERO))\n return JacobianPoint.ZERO;\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(B * B);\n const x1b = X1 + B;\n const D = mod(_2n * (mod(x1b * x1b) - A - C));\n const E = mod(_3n * A);\n const F = mod(E * E);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H * H);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r * r - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n const P0 = JacobianPoint.ZERO;\n if (typeof scalar === 'bigint' && scalar === _0n)\n return P0;\n let n = normalizeScalar(scalar);\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.BASE;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1;\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n k1p = constTimeNegate(k1neg, k1p);\n k2p = constTimeNegate(k2neg, k2p);\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ) {\n const { x, y, z } = this;\n const is0 = this.equals(JacobianPoint.ZERO);\n if (invZ == null)\n invZ = is0 ? _8n : invert(z);\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (is0)\n return Point.ZERO;\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nfunction constTimeNegate(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n hasEvenY() {\n return this.y % _2n === _0n;\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, fieldLen + 1));\n const y = bytesToNumber(bytes.subarray(fieldLen + 1, fieldLen * 2 + 1));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === fieldLen)\n return this.fromCompressedHex(bytes);\n if (len === compressedLen && (header === 0x02 || header === 0x03)) {\n return this.fromCompressedHex(bytes);\n }\n if (len === uncompressedLen && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n const { r, s } = normalizeSignature(signature);\n if (![0, 1, 2, 3].includes(recovery))\n throw new Error('Cannot recover: invalid recovery bit');\n const h = truncateHash(ensureBytes(msgHash));\n const { n } = CURVE;\n const radj = recovery === 2 || recovery === 3 ? r + n : r;\n const rinv = invert(radj, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(radj));\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.hasEvenY() ? '02' : '03';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weierstrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = hex instanceof Uint8Array;\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = hex instanceof Uint8Array;\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, mod(-this.s, CURVE.n)) : this;\n }\n toDERRawBytes() {\n return hexToBytes(this.toDERHex());\n }\n toDERHex() {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const sHexL = sHex.length / 2;\n const rHexL = rHex.length / 2;\n const sLen = numberToHexUnpadded(sHexL);\n const rLen = numberToHexUnpadded(rHexL);\n const length = numberToHexUnpadded(rHexL + sHexL + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every((b) => b instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n if (!(_0n <= num && num < POW_2_256))\n throw new Error('Expected number 0 <= n < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n const b = hexToBytes(numTo32bStr(num));\n if (b.length !== 32)\n throw new Error('Error: expected 32 bytes');\n return b;\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n const rt = pow2(t2, _2n);\n const xc = (rt * rt) % P;\n if (xc !== x)\n throw new Error('Cannot find square root');\n return rt;\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nfunction bits2int_2(bytes) {\n const delta = bytes.length * 8 - groupLen * 8;\n const num = bytesToNumber(bytes);\n return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction truncateHash(hash, truncateOnly = false) {\n const h = bits2int_2(hash);\n if (truncateOnly)\n return h;\n const { n } = CURVE;\n return h >= n ? h - n : h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n constructor(hashLen, qByteLen) {\n this.hashLen = hashLen;\n this.qByteLen = qByteLen;\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n this.v = new Uint8Array(hashLen).fill(1);\n this.k = new Uint8Array(hashLen).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n return _hmacSha256Sync(this.k, ...values);\n }\n checkSync() {\n if (typeof _hmacSha256Sync !== 'function')\n throw new ShaError('hmacSha256Sync needs to be set');\n }\n incr() {\n if (this.counter >= 1000)\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.checkSync();\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = await this.hmac(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n generateSync() {\n this.checkSync();\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = this.hmacSync(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d, lowS = true) {\n const { n } = CURVE;\n const k = truncateHash(kBytes, true);\n if (!isWithinCurveOrder(k))\n return;\n const kinv = invert(k, n);\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(kinv * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n let sig = new Signature(r, s);\n let recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n if (lowS && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 2 * groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (key instanceof Uint8Array) {\n if (key.length !== groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === compressedLen * 2 || len === uncompressedLen * 2;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isProbPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isProbPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > fieldLen ? bytes.slice(0, fieldLen) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(fieldLen);\n const e = ensureBytes(extraEntropy);\n if (e.length !== fieldLen)\n throw new Error(`sign: Expected ${fieldLen} bytes of extra data`);\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n const { sig, recovery } = recSig;\n const { der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n await drbg.reseed(seed);\n let sig;\n while (!(sig = kmdToSig(await drbg.generate(), m, d, opts.canonical)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n drbg.reseedSync(seed);\n let sig;\n while (!(sig = kmdToSig(drbg.generateSync(), m, d, opts.canonical)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nfunction schnorrChallengeFinalize(ch) {\n return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n constructor(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n this.m = ensureBytes(message);\n const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n this.px = x;\n this.d = scalar;\n this.rand = ensureBytes(auxRand);\n if (this.rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n }\n getScalar(priv) {\n const point = Point.fromPrivateKey(priv);\n const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n return { point, scalar, x: point.toRawX() };\n }\n initNonce(d, t0h) {\n return numTo32b(d ^ bytesToNumber(t0h));\n }\n finalizeNonce(k0h) {\n const k0 = mod(bytesToNumber(k0h), CURVE.n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n return { R, rx, k };\n }\n finalizeSig(R, k, e, d) {\n return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n }\n error() {\n throw new Error('sign: Invalid signature produced');\n }\n async calc() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHash;\n const t = this.initNonce(d, await tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!(await schnorrVerify(sig, m, px)))\n this.error();\n return sig;\n }\n calcSync() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHashSync;\n const t = this.initNonce(d, tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!schnorrVerifySync(sig, m, px))\n this.error();\n return sig;\n }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n return {\n ...sig,\n m: ensureBytes(message),\n P: normalizePublicKey(publicKey),\n };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !R.hasEvenY() || R.x !== r)\n return false;\n return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(await utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n return false;\n }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n if (error instanceof ShaError)\n throw error;\n return false;\n }\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n signSync: schnorrSignSync,\n verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n challenge: 'BIP0340/challenge',\n aux: 'BIP0340/aux',\n nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexport const utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod,\n invert,\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n _bigintTo32Bytes: numTo32b,\n _normalizePrivateKey: normalizePrivateKey,\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n const minLen = groupLen + 8;\n if (hash.length < minLen || hash.length > 1024) {\n throw new Error(`Expected valid bytes of private key as per FIPS 186`);\n }\n const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => utils.hashToPrivateKey(utils.randomBytes(groupLen + 8)),\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n sha256: async (...messages) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n const hash = createHash('sha256');\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n taggedHash: async (tag, ...messages) => {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = await utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return utils.sha256(tagP, ...messages);\n },\n taggedHashSync: (tag, ...messages) => {\n if (typeof _sha256Sync !== 'function')\n throw new ShaError('sha256Sync is undefined, you need to set it');\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return _sha256Sync(tagP, ...messages);\n },\n _JacobianPoint: JacobianPoint,\n};\nObject.defineProperties(utils, {\n sha256Sync: {\n configurable: false,\n get() {\n return _sha256Sync;\n },\n set(val) {\n if (!_sha256Sync)\n _sha256Sync = val;\n },\n },\n hmacSha256Sync: {\n configurable: false,\n get() {\n return _hmacSha256Sync;\n },\n set(val) {\n if (!_hmacSha256Sync)\n _hmacSha256Sync = val;\n },\n },\n});\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","export function isSubtleCryptoAvailable() {\n return typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n}\nexport function isNodeCryptoAvailable(withFeature) {\n try {\n const resolvedResult = require.resolve('crypto');\n if (!resolvedResult) {\n return false;\n }\n const cryptoModule = require('crypto');\n if (!cryptoModule) {\n return false;\n }\n if (withFeature) {\n const features = withFeature(cryptoModule);\n return features;\n }\n return true;\n }\n catch (error) {\n return false;\n }\n}\nexport const NO_CRYPTO_LIB = 'Crypto lib not found. Either the WebCrypto \"crypto.subtle\" or Node.js \"crypto\" module must be available.';\nexport async function getCryptoLib() {\n if (isSubtleCryptoAvailable()) {\n return {\n lib: crypto.subtle,\n name: 'subtleCrypto',\n };\n }\n else {\n try {\n const nodeCrypto = require('crypto');\n return {\n lib: nodeCrypto,\n name: 'nodeCrypto',\n };\n }\n catch (error) {\n throw new Error(NO_CRYPTO_LIB);\n }\n }\n}\n//# sourceMappingURL=cryptoUtils.js.map","import { concatBytes } from '@stacks/common';\nimport { getCryptoLib } from './cryptoUtils';\nexport class NodeCryptoAesCipher {\n constructor(createCipher, createDecipher) {\n this.createCipher = createCipher;\n this.createDecipher = createDecipher;\n }\n async encrypt(algorithm, key, iv, data) {\n if (algorithm !== 'aes-128-cbc' && algorithm !== 'aes-256-cbc') {\n throw new Error(`Unsupported cipher algorithm \"${algorithm}\"`);\n }\n const cipher = this.createCipher(algorithm, key, iv);\n const result = new Uint8Array(concatBytes(cipher.update(data), cipher.final()));\n return Promise.resolve(result);\n }\n async decrypt(algorithm, key, iv, data) {\n if (algorithm !== 'aes-128-cbc' && algorithm !== 'aes-256-cbc') {\n throw new Error(`Unsupported cipher algorithm \"${algorithm}\"`);\n }\n const cipher = this.createDecipher(algorithm, key, iv);\n const result = new Uint8Array(concatBytes(cipher.update(data), cipher.final()));\n return Promise.resolve(result);\n }\n}\nexport class WebCryptoAesCipher {\n constructor(subtleCrypto) {\n this.subtleCrypto = subtleCrypto;\n }\n async encrypt(algorithm, key, iv, data) {\n let algo;\n let length;\n if (algorithm === 'aes-128-cbc') {\n algo = 'AES-CBC';\n length = 128;\n }\n else if (algorithm === 'aes-256-cbc') {\n algo = 'AES-CBC';\n length = 256;\n }\n else {\n throw new Error(`Unsupported cipher algorithm \"${algorithm}\"`);\n }\n const cryptoKey = await this.subtleCrypto.importKey('raw', key, { name: algo, length }, false, [\n 'encrypt',\n ]);\n const result = await this.subtleCrypto.encrypt({ name: algo, iv }, cryptoKey, data);\n return new Uint8Array(result);\n }\n async decrypt(algorithm, key, iv, data) {\n let algo;\n let length;\n if (algorithm === 'aes-128-cbc') {\n algo = 'AES-CBC';\n length = 128;\n }\n else if (algorithm === 'aes-256-cbc') {\n algo = 'AES-CBC';\n length = 256;\n }\n else {\n throw new Error(`Unsupported cipher algorithm \"${algorithm}\"`);\n }\n const cryptoKey = await this.subtleCrypto.importKey('raw', key, { name: algo, length }, false, [\n 'decrypt',\n ]);\n const result = await this.subtleCrypto.decrypt({ name: algo, iv }, cryptoKey, data);\n return new Uint8Array(result);\n }\n}\nexport async function createCipher() {\n const cryptoLib = await getCryptoLib();\n if (cryptoLib.name === 'subtleCrypto') {\n return new WebCryptoAesCipher(cryptoLib.lib);\n }\n return new NodeCryptoAesCipher(cryptoLib.lib.createCipheriv, cryptoLib.lib.createDecipheriv);\n}\n//# sourceMappingURL=aesCipher.js.map","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 } from '@noble/hashes/ripemd160';\nexport function hashRipemd160(data) {\n return ripemd160(data);\n}\n//# sourceMappingURL=hashRipemd160.js.map","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexport function split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_224 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x8c3d37c8 | 0;\n this.Al = 0x19544da2 | 0;\n this.Bh = 0x73e19966 | 0;\n this.Bl = 0x89dcd4d6 | 0;\n this.Ch = 0x1dfab7ae | 0;\n this.Cl = 0x32ff9c82 | 0;\n this.Dh = 0x679dd514 | 0;\n this.Dl = 0x582f9fcf | 0;\n this.Eh = 0x0f6d2b69 | 0;\n this.El = 0x7bd44da8 | 0;\n this.Fh = 0x77e36f73 | 0;\n this.Fl = 0x04c48942 | 0;\n this.Gh = 0x3f9d85a8 | 0;\n this.Gl = 0x6a1d36c8 | 0;\n this.Hh = 0x1112e6ad | 0;\n this.Hl = 0x91d692a1 | 0;\n this.outputLen = 28;\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_224 = wrapConstructor(() => new SHA512_224());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","import { sha256 } from '@noble/hashes/sha256';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { getCryptoLib } from './cryptoUtils';\nexport class NodeCryptoSha2Hash {\n constructor(createHash) {\n this.createHash = createHash;\n }\n async digest(data, algorithm = 'sha256') {\n try {\n const result = this.createHash(algorithm).update(data).digest();\n return Promise.resolve(result);\n }\n catch (error) {\n console.log(error);\n console.log(`Error performing ${algorithm} digest with Node.js 'crypto.createHash', falling back to JS implementation.`);\n return Promise.resolve(algorithm === 'sha256' ? hashSha256Sync(data) : hashSha512Sync(data));\n }\n }\n}\nexport class WebCryptoSha2Hash {\n constructor(subtleCrypto) {\n this.subtleCrypto = subtleCrypto;\n }\n async digest(data, algorithm = 'sha256') {\n let algo;\n if (algorithm === 'sha256') {\n algo = 'SHA-256';\n }\n else if (algorithm === 'sha512') {\n algo = 'SHA-512';\n }\n else {\n throw new Error(`Unsupported hash algorithm ${algorithm}`);\n }\n try {\n const hash = await this.subtleCrypto.digest(algo, data);\n return new Uint8Array(hash);\n }\n catch (error) {\n console.log(error);\n console.log(`Error performing ${algorithm} digest with WebCrypto, falling back to JS implementation.`);\n return Promise.resolve(algorithm === 'sha256' ? hashSha256Sync(data) : hashSha512Sync(data));\n }\n }\n}\nexport async function createSha2Hash() {\n const cryptoLib = await getCryptoLib();\n if (cryptoLib.name === 'subtleCrypto') {\n return new WebCryptoSha2Hash(cryptoLib.lib);\n }\n else {\n return new NodeCryptoSha2Hash(cryptoLib.lib.createHash);\n }\n}\nexport function hashSha256Sync(data) {\n return sha256(data);\n}\nexport function hashSha512Sync(data) {\n return sha512(data);\n}\n//# sourceMappingURL=sha2Hash.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { getPublicKey as nobleGetPublicKey, signSync, utils } from '@noble/secp256k1';\nimport { bytesToHex, concatBytes, hexToBytes, privateKeyToBytes, readUInt8, } from '@stacks/common';\nimport base58 from 'bs58';\nimport { hashRipemd160 } from './hashRipemd160';\nimport { hashSha256Sync } from './sha2Hash';\nconst BITCOIN_PUBKEYHASH = 0x00;\nutils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac.create(sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\nexport function makeECPrivateKey() {\n return bytesToHex(utils.randomPrivateKey());\n}\nexport function base58CheckDecode(btcAddress) {\n const bytes = base58.decode(btcAddress);\n const payload = bytes.slice(0, -4);\n const checksum = bytes.slice(-4);\n const newChecksum = sha256(sha256(payload));\n if ((checksum[0] ^ newChecksum[0]) |\n (checksum[1] ^ newChecksum[1]) |\n (checksum[2] ^ newChecksum[2]) |\n (checksum[3] ^ newChecksum[3])) {\n throw new Error('Invalid checksum');\n }\n if (payload.length !== 21)\n throw new TypeError('Invalid address length');\n const version = readUInt8(payload, 0);\n const hash = payload.slice(1);\n return { version, hash };\n}\nexport function base58Encode(hash) {\n const checksum = sha256(sha256(hash));\n return base58.encode(concatBytes(hash, checksum).slice(0, hash.length + 4));\n}\nexport function base58CheckEncode(version, hash) {\n return base58Encode(concatBytes(new Uint8Array([version]), hash.slice(0, 20)));\n}\nexport function publicKeyToBtcAddress(publicKey, version = BITCOIN_PUBKEYHASH) {\n const publicKeyBytes = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;\n const publicKeyHash160 = hashRipemd160(hashSha256Sync(publicKeyBytes));\n return base58CheckEncode(version, publicKeyHash160);\n}\nexport function getPublicKeyFromPrivate(privateKey) {\n const privateKeyBytes = privateKeyToBytes(privateKey);\n return bytesToHex(nobleGetPublicKey(privateKeyBytes.slice(0, 32), true));\n}\nexport function ecSign(messageHash, privateKey) {\n return signSync(messageHash, privateKeyToBytes(privateKey).slice(0, 32), {\n der: false,\n });\n}\n//# sourceMappingURL=keys.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { getPublicKey, getSharedSecret, Point, Signature, signSync, utils, verify, } from '@noble/secp256k1';\nimport { bigIntToBytes, bytesToHex, bytesToUtf8, concatBytes, FailedDecryptionError, hexToBigInt, hexToBytes, parseRecoverableSignatureVrs, signatureRsvToVrs, utf8ToBytes, } from '@stacks/common';\nimport { fromByteArray, toByteArray } from 'base64-js';\nimport { createCipher } from './aesCipher';\nimport { getPublicKeyFromPrivate } from './keys';\nimport { encodeMessage, hashMessage } from './messageSignature';\nimport { hashSha256Sync, hashSha512Sync } from './sha2Hash';\nimport { getAesCbcOutputLength, getBase64OutputLength } from './utils';\nutils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac.create(sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\nexport var InvalidPublicKeyReason;\n(function (InvalidPublicKeyReason) {\n InvalidPublicKeyReason[\"InvalidFormat\"] = \"InvalidFormat\";\n InvalidPublicKeyReason[\"IsNotPoint\"] = \"IsNotPoint\";\n})(InvalidPublicKeyReason || (InvalidPublicKeyReason = {}));\nexport async function aes256CbcEncrypt(iv, key, plaintext) {\n const cipher = await createCipher();\n return await cipher.encrypt('aes-256-cbc', key, iv, plaintext);\n}\nasync function aes256CbcDecrypt(iv, key, ciphertext) {\n const cipher = await createCipher();\n return await cipher.decrypt('aes-256-cbc', key, iv, ciphertext);\n}\nexport function hmacSha256(key, content) {\n return hmac(sha256, key, content);\n}\nfunction equalsConstTime(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n let res = 0;\n for (let i = 0; i < a.length; i++) {\n res |= a[i] ^ b[i];\n }\n return res === 0;\n}\nfunction sharedSecretToKeys(sharedSecret) {\n const hashedSecret = hashSha512Sync(sharedSecret);\n return {\n encryptionKey: hashedSecret.slice(0, 32),\n hmacKey: hashedSecret.slice(32),\n };\n}\nfunction allHexChars(maybe) {\n return maybe.match(/^[0-9a-f]+$/i) !== null;\n}\nfunction isValidPublicKey(pub) {\n const invalidFormat = {\n result: false,\n reason_data: 'Invalid public key format',\n reason: InvalidPublicKeyReason.InvalidFormat,\n };\n const invalidPoint = {\n result: false,\n reason_data: 'Public key is not a point',\n reason: InvalidPublicKeyReason.IsNotPoint,\n };\n if (pub.length !== 66 && pub.length !== 130)\n return invalidFormat;\n const firstByte = pub.slice(0, 2);\n if (pub.length === 130 && firstByte !== '04')\n return invalidFormat;\n if (pub.length === 66 && firstByte !== '02' && firstByte !== '03')\n return invalidFormat;\n if (!allHexChars(pub))\n return invalidFormat;\n try {\n const point = Point.fromHex(pub);\n point.assertValidity();\n return {\n result: true,\n reason_data: null,\n reason: null,\n };\n }\n catch (e) {\n return invalidPoint;\n }\n}\nexport function getHexFromBN(bnInput) {\n const hexOut = bnInput.toString(16);\n if (hexOut.length === 64) {\n return hexOut;\n }\n else if (hexOut.length < 64) {\n const padding = '0'.repeat(64 - hexOut.length);\n return `${padding}${hexOut}`;\n }\n else {\n throw new Error('Generated a > 32-byte bigint for encryption. Failing.');\n }\n}\nexport function getBytesFromBN(bnInput) {\n const result = bigIntToBytes(bnInput, 32);\n if (result.byteLength !== 32) {\n throw new Error('Failed to generate a 32-byte Uint8Array');\n }\n return result;\n}\nexport function getCipherObjectWrapper(opts) {\n const shell = {\n iv: '',\n ephemeralPK: '',\n mac: '',\n cipherText: '',\n wasString: !!opts.wasString,\n };\n if (opts.cipherTextEncoding === 'base64') {\n shell.cipherTextEncoding = 'base64';\n }\n const ivLength = 32;\n const ephemeralPKLength = 66;\n const macLength = 64;\n return {\n payloadValuesLength: ivLength + ephemeralPKLength + macLength,\n payloadShell: JSON.stringify(shell),\n };\n}\nexport function getSignedCipherObjectWrapper(payloadShell) {\n const shell = {\n signature: '',\n publicKey: '',\n cipherText: payloadShell,\n };\n const signatureLength = 144;\n const publicKeyLength = 66;\n return {\n signedPayloadValuesLength: signatureLength + publicKeyLength,\n signedPayloadShell: JSON.stringify(shell),\n };\n}\nexport function eciesGetJsonStringLength(opts) {\n const { payloadShell, payloadValuesLength } = getCipherObjectWrapper(opts);\n const cipherTextLength = getAesCbcOutputLength(opts.contentLength);\n let encodedCipherTextLength;\n if (!opts.cipherTextEncoding || opts.cipherTextEncoding === 'hex') {\n encodedCipherTextLength = cipherTextLength * 2;\n }\n else if (opts.cipherTextEncoding === 'base64') {\n encodedCipherTextLength = getBase64OutputLength(cipherTextLength);\n }\n else {\n throw new Error(`Unexpected cipherTextEncoding \"${opts.cipherTextEncoding}\"`);\n }\n if (!opts.sign) {\n return payloadShell.length + payloadValuesLength + encodedCipherTextLength;\n }\n else {\n const { signedPayloadShell, signedPayloadValuesLength } = getSignedCipherObjectWrapper(payloadShell);\n return (signedPayloadShell.length +\n signedPayloadValuesLength +\n payloadValuesLength +\n encodedCipherTextLength);\n }\n}\nexport async function encryptECIES(publicKey, content, wasString, cipherTextEncoding) {\n const validity = isValidPublicKey(publicKey);\n if (!validity.result) {\n throw validity;\n }\n const ephemeralPrivateKey = utils.randomPrivateKey();\n const ephemeralPublicKey = getPublicKey(ephemeralPrivateKey, true);\n let sharedSecret = getSharedSecret(ephemeralPrivateKey, publicKey, true);\n sharedSecret = sharedSecret.slice(1);\n const sharedKeys = sharedSecretToKeys(sharedSecret);\n const initializationVector = utils.randomBytes(16);\n const cipherText = await aes256CbcEncrypt(initializationVector, sharedKeys.encryptionKey, content);\n const macData = concatBytes(initializationVector, ephemeralPublicKey, cipherText);\n const mac = hmacSha256(sharedKeys.hmacKey, macData);\n let cipherTextString;\n if (!cipherTextEncoding || cipherTextEncoding === 'hex') {\n cipherTextString = bytesToHex(cipherText);\n }\n else if (cipherTextEncoding === 'base64') {\n cipherTextString = fromByteArray(cipherText);\n }\n else {\n throw new Error(`Unexpected cipherTextEncoding \"${cipherTextEncoding}\"`);\n }\n const result = {\n iv: bytesToHex(initializationVector),\n ephemeralPK: bytesToHex(ephemeralPublicKey),\n cipherText: cipherTextString,\n mac: bytesToHex(mac),\n wasString,\n };\n if (cipherTextEncoding && cipherTextEncoding !== 'hex') {\n result.cipherTextEncoding = cipherTextEncoding;\n }\n return result;\n}\nexport async function decryptECIES(privateKey, cipherObject) {\n if (!cipherObject.ephemeralPK) {\n throw new FailedDecryptionError('Unable to get public key from cipher object. ' +\n 'You might be trying to decrypt an unencrypted object.');\n }\n const ephemeralPK = cipherObject.ephemeralPK;\n let sharedSecret = getSharedSecret(privateKey, ephemeralPK, true);\n sharedSecret = sharedSecret.slice(1);\n const sharedKeys = sharedSecretToKeys(sharedSecret);\n const ivBytes = hexToBytes(cipherObject.iv);\n let cipherTextBytes;\n if (!cipherObject.cipherTextEncoding || cipherObject.cipherTextEncoding === 'hex') {\n cipherTextBytes = hexToBytes(cipherObject.cipherText);\n }\n else if (cipherObject.cipherTextEncoding === 'base64') {\n cipherTextBytes = toByteArray(cipherObject.cipherText);\n }\n else {\n throw new Error(`Unexpected cipherTextEncoding \"${cipherObject.cipherText}\"`);\n }\n const macData = concatBytes(ivBytes, hexToBytes(ephemeralPK), cipherTextBytes);\n const actualMac = hmacSha256(sharedKeys.hmacKey, macData);\n const expectedMac = hexToBytes(cipherObject.mac);\n if (!equalsConstTime(expectedMac, actualMac)) {\n throw new FailedDecryptionError('Decryption failed: failure in MAC check');\n }\n const plainText = await aes256CbcDecrypt(ivBytes, sharedKeys.encryptionKey, cipherTextBytes);\n if (cipherObject.wasString) {\n return bytesToUtf8(plainText);\n }\n return plainText;\n}\nexport function signECDSA(privateKey, content) {\n const contentBytes = typeof content === 'string' ? utf8ToBytes(content) : content;\n const publicKey = getPublicKeyFromPrivate(privateKey);\n const contentHash = hashSha256Sync(contentBytes);\n const signature = signSync(contentHash, privateKey);\n return {\n signature: bytesToHex(signature),\n publicKey,\n };\n}\nexport function verifyECDSA(content, publicKey, signature) {\n const contentBytes = typeof content === 'string' ? utf8ToBytes(content) : content;\n const contentHash = hashSha256Sync(contentBytes);\n return verify(signature, contentHash, publicKey, { strict: false });\n}\nexport function verifyMessageSignature({ signature, message, publicKey, }) {\n const { r, s } = parseRecoverableSignatureVrs(signature);\n const sig = new Signature(hexToBigInt(r), hexToBigInt(s));\n const hashedMsg = typeof message === 'string' ? hashMessage(message) : message;\n const verificationResult = verify(sig, hashedMsg, publicKey, { strict: false });\n if (verificationResult || typeof message !== 'string')\n return verificationResult;\n const LEGACY_PREFIX = '\\x18Stacks Message Signing:\\n';\n const legacyHash = sha256(encodeMessage(message, LEGACY_PREFIX));\n return verify(sig, legacyHash, publicKey, { strict: false });\n}\nexport function verifyMessageSignatureRsv({ signature, message, publicKey, }) {\n return verifyMessageSignature({\n signature: signatureRsvToVrs(signature),\n message,\n publicKey,\n });\n}\n//# sourceMappingURL=ec.js.map","import { utf8ToBytes } from '@stacks/common';\nimport { decryptECIES, encryptECIES, signECDSA, } from './ec';\nimport { getPublicKeyFromPrivate } from './keys';\nexport async function encryptContent(content, options) {\n const opts = Object.assign({}, options);\n let privateKey;\n if (!opts.publicKey) {\n if (!opts.privateKey) {\n throw new Error('Either public key or private key must be supplied for encryption.');\n }\n opts.publicKey = getPublicKeyFromPrivate(opts.privateKey);\n }\n const wasString = typeof opts.wasString === 'boolean' ? opts.wasString : typeof content === 'string';\n const contentBytes = typeof content === 'string' ? utf8ToBytes(content) : content;\n const cipherObject = await encryptECIES(opts.publicKey, contentBytes, wasString, opts.cipherTextEncoding);\n let cipherPayload = JSON.stringify(cipherObject);\n if (opts.sign) {\n if (typeof opts.sign === 'string') {\n privateKey = opts.sign;\n }\n else if (!privateKey) {\n privateKey = opts.privateKey;\n }\n const signatureObject = signECDSA(privateKey, cipherPayload);\n const signedCipherObject = {\n signature: signatureObject.signature,\n publicKey: signatureObject.publicKey,\n cipherText: cipherPayload,\n };\n cipherPayload = JSON.stringify(signedCipherObject);\n }\n return cipherPayload;\n}\nexport function decryptContent(content, options) {\n const opts = Object.assign({}, options);\n if (!opts.privateKey) {\n throw new Error('Private key is required for decryption.');\n }\n try {\n const cipherObject = JSON.parse(content);\n return decryptECIES(opts.privateKey, cipherObject);\n }\n catch (err) {\n if (err instanceof SyntaxError) {\n throw new Error('Failed to parse encrypted content JSON. The content may not ' +\n 'be encrypted. If using getFile, try passing { decrypt: false }.');\n }\n else {\n throw err;\n }\n }\n}\n//# sourceMappingURL=encryption.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.output = exports.exists = exports.hash = exports.bytes = exports.bool = exports.number = void 0;\nfunction number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexports.number = number;\nfunction bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexports.bool = bool;\nfunction bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexports.bytes = bytes;\nfunction hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexports.hash = hash;\nfunction exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexports.exists = exists;\nfunction output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nexports.output = output;\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexports.default = assert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.crypto = void 0;\nexports.crypto = {\n node: undefined,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\n","\"use strict\";\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomBytes = exports.wrapConstructorWithOpts = exports.wrapConstructor = exports.checkOpts = exports.Hash = exports.concatBytes = exports.toBytes = exports.utf8ToBytes = exports.asyncLoop = exports.nextTick = exports.hexToBytes = exports.bytesToHex = exports.isLE = exports.rotr = exports.createView = exports.u32 = exports.u8 = void 0;\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nconst crypto_1 = require(\"@noble/hashes/crypto\");\n// Cast array to different type\nconst u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.u8 = u8;\nconst u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\nexports.u32 = u32;\n// Cast array to view\nconst createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\nexports.createView = createView;\n// The rotate right (circular right shift) operation for uint32\nconst rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexports.rotr = rotr;\nexports.isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!exports.isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nfunction bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nexports.bytesToHex = bytesToHex;\n/**\n * @example hexToBytes('deadbeef')\n */\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexports.hexToBytes = hexToBytes;\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nconst nextTick = async () => { };\nexports.nextTick = nextTick;\n// Returns control to thread each 'tick' ms to avoid blocking\nasync function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await (0, exports.nextTick)();\n ts += diff;\n }\n}\nexports.asyncLoop = asyncLoop;\nfunction utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexports.utf8ToBytes = utf8ToBytes;\nfunction toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\nexports.toBytes = toBytes;\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nfunction concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexports.concatBytes = concatBytes;\n// For runtime check if class implements interface\nclass Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\nexports.Hash = Hash;\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nfunction checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexports.checkOpts = checkOpts;\nfunction wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexports.wrapConstructor = wrapConstructor;\nfunction wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexports.wrapConstructorWithOpts = wrapConstructorWithOpts;\n/**\n * Secure PRNG\n */\nfunction randomBytes(bytesLength = 32) {\n if (crypto_1.crypto.web) {\n return crypto_1.crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto_1.crypto.node) {\n return new Uint8Array(crypto_1.crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\nexports.randomBytes = randomBytes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hmac = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// HMAC (RFC 2104)\nclass HMAC extends utils_js_1.Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n _assert_js_1.default.hash(hash);\n const key = (0, utils_js_1.toBytes)(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n _assert_js_1.default.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nconst hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nexports.hmac = hmac;\nexports.hmac.create = (hash, key) => new HMAC(hash, key);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SHA2 = void 0;\nconst _assert_js_1 = require(\"./_assert.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nclass SHA2 extends utils_js_1.Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = (0, utils_js_1.createView)(this.buffer);\n }\n update(data) {\n _assert_js_1.default.exists(this);\n const { view, buffer, blockLen } = this;\n data = (0, utils_js_1.toBytes)(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = (0, utils_js_1.createView)(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n _assert_js_1.default.exists(this);\n _assert_js_1.default.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = (0, utils_js_1.createView)(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\nexports.SHA2 = SHA2;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sha224 = exports.sha256 = void 0;\nconst _sha2_js_1 = require(\"./_sha2.js\");\nconst utils_js_1 = require(\"./utils.js\");\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends _sha2_js_1.SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = (0, utils_js_1.rotr)(W15, 7) ^ (0, utils_js_1.rotr)(W15, 18) ^ (W15 >>> 3);\n const s1 = (0, utils_js_1.rotr)(W2, 17) ^ (0, utils_js_1.rotr)(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = (0, utils_js_1.rotr)(E, 6) ^ (0, utils_js_1.rotr)(E, 11) ^ (0, utils_js_1.rotr)(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = (0, utils_js_1.rotr)(A, 2) ^ (0, utils_js_1.rotr)(A, 13) ^ (0, utils_js_1.rotr)(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n// Constants from https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf\nclass SHA224 extends SHA256 {\n constructor() {\n super();\n this.A = 0xc1059ed8 | 0;\n this.B = 0x367cd507 | 0;\n this.C = 0x3070dd17 | 0;\n this.D = 0xf70e5939 | 0;\n this.E = 0xffc00b31 | 0;\n this.F = 0x68581511 | 0;\n this.G = 0x64f98fa7 | 0;\n this.H = 0xbefa4fa4 | 0;\n this.outputLen = 28;\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexports.sha256 = (0, utils_js_1.wrapConstructor)(() => new SHA256());\nexports.sha224 = (0, utils_js_1.wrapConstructor)(() => new SHA224());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = exports.unescape = exports.escape = exports.pad = void 0;\nconst base64_js_1 = require(\"base64-js\");\nfunction pad(base64) {\n return `${base64}${'='.repeat(4 - (base64.length % 4 || 4))}`;\n}\nexports.pad = pad;\nfunction escape(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nexports.escape = escape;\nfunction unescape(base64Url) {\n return pad(base64Url).replace(/-/g, '+').replace(/_/g, '/');\n}\nexports.unescape = unescape;\nfunction encode(base64) {\n return escape((0, base64_js_1.fromByteArray)(new TextEncoder().encode(base64)));\n}\nexports.encode = encode;\nfunction decode(base64Url) {\n return new TextDecoder().decode((0, base64_js_1.toByteArray)(pad(unescape(base64Url))));\n}\nexports.decode = decode;\n//# sourceMappingURL=base64Url.js.map","\"use strict\";\n/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utils = exports.schnorr = exports.verify = exports.signSync = exports.sign = exports.getSharedSecret = exports.recoverPublicKey = exports.getPublicKey = exports.Signature = exports.Point = exports.CURVE = void 0;\nconst nodeCrypto = require(\"crypto\");\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n a: _0n,\n b: BigInt(7),\n P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nexports.CURVE = CURVE;\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst endo = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000');\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n};\nconst fieldLen = 32;\nconst groupLen = 32;\nconst hashLen = 32;\nconst compressedLen = fieldLen + 1;\nconst uncompressedLen = 2 * fieldLen + 1;\nfunction weierstrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n constructor(message) {\n super(message);\n }\n}\nfunction assertJacPoint(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n}\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n if (p.equals(Point.ZERO))\n return JacobianPoint.ZERO;\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(B * B);\n const x1b = X1 + B;\n const D = mod(_2n * (mod(x1b * x1b) - A - C));\n const E = mod(_3n * A);\n const F = mod(E * E);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n assertJacPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H * H);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r * r - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n const P0 = JacobianPoint.ZERO;\n if (typeof scalar === 'bigint' && scalar === _0n)\n return P0;\n let n = normalizeScalar(scalar);\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.BASE;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n const offset1 = offset;\n const offset2 = offset + Math.abs(wbits) - 1;\n const cond1 = window % 2 !== 0;\n const cond2 = wbits < 0;\n if (wbits === 0) {\n f = f.add(constTimeNegate(cond1, precomputes[offset1]));\n }\n else {\n p = p.add(constTimeNegate(cond2, precomputes[offset2]));\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n k1p = constTimeNegate(k1neg, k1p);\n k2p = constTimeNegate(k2neg, k2p);\n k2p = new JacobianPoint(mod(k2p.x * endo.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ) {\n const { x, y, z } = this;\n const is0 = this.equals(JacobianPoint.ZERO);\n if (invZ == null)\n invZ = is0 ? _8n : invert(z);\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (is0)\n return Point.ZERO;\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nfunction constTimeNegate(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\nconst pointPrecomputes = new WeakMap();\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n hasEvenY() {\n return this.y % _2n === _0n;\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weierstrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, fieldLen + 1));\n const y = bytesToNumber(bytes.subarray(fieldLen + 1, fieldLen * 2 + 1));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === fieldLen)\n return this.fromCompressedHex(bytes);\n if (len === compressedLen && (header === 0x02 || header === 0x03)) {\n return this.fromCompressedHex(bytes);\n }\n if (len === uncompressedLen && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-${compressedLen} compressed bytes or ${uncompressedLen} uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n const { r, s } = normalizeSignature(signature);\n if (![0, 1, 2, 3].includes(recovery))\n throw new Error('Cannot recover: invalid recovery bit');\n const h = truncateHash(ensureBytes(msgHash));\n const { n } = CURVE;\n const radj = recovery === 2 || recovery === 3 ? r + n : r;\n const rinv = invert(radj, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(radj));\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.hasEvenY() ? '02' : '03';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weierstrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nexports.Point = Point;\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nclass Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = hex instanceof Uint8Array;\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = hex instanceof Uint8Array;\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, mod(-this.s, CURVE.n)) : this;\n }\n toDERRawBytes() {\n return hexToBytes(this.toDERHex());\n }\n toDERHex() {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const sHexL = sHex.length / 2;\n const rHexL = rHex.length / 2;\n const sLen = numberToHexUnpadded(sHexL);\n const rLen = numberToHexUnpadded(rHexL);\n const length = numberToHexUnpadded(rHexL + sHexL + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nexports.Signature = Signature;\nfunction concatBytes(...arrays) {\n if (!arrays.every((b) => b instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n if (!(_0n <= num && num < POW_2_256))\n throw new Error('Expected number 0 <= n < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n const b = hexToBytes(numTo32bStr(num));\n if (b.length !== 32)\n throw new Error('Error: expected 32 bytes');\n return b;\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n const rt = pow2(t2, _2n);\n const xc = (rt * rt) % P;\n if (xc !== x)\n throw new Error('Cannot find square root');\n return rt;\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nfunction bits2int_2(bytes) {\n const delta = bytes.length * 8 - groupLen * 8;\n const num = bytesToNumber(bytes);\n return delta > 0 ? num >> BigInt(delta) : num;\n}\nfunction truncateHash(hash, truncateOnly = false) {\n const h = bits2int_2(hash);\n if (truncateOnly)\n return h;\n const { n } = CURVE;\n return h >= n ? h - n : h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n constructor(hashLen, qByteLen) {\n this.hashLen = hashLen;\n this.qByteLen = qByteLen;\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n this.v = new Uint8Array(hashLen).fill(1);\n this.k = new Uint8Array(hashLen).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return exports.utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n return _hmacSha256Sync(this.k, ...values);\n }\n checkSync() {\n if (typeof _hmacSha256Sync !== 'function')\n throw new ShaError('hmacSha256Sync needs to be set');\n }\n incr() {\n if (this.counter >= 1000)\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.checkSync();\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = await this.hmac(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n generateSync() {\n this.checkSync();\n this.incr();\n let len = 0;\n const out = [];\n while (len < this.qByteLen) {\n this.v = this.hmacSync(this.v);\n const sl = this.v.slice();\n out.push(sl);\n len += this.v.length;\n }\n return concatBytes(...out);\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d, lowS = true) {\n const { n } = CURVE;\n const k = truncateHash(kBytes, true);\n if (!isWithinCurveOrder(k))\n return;\n const kinv = invert(k, n);\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(kinv * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n let sig = new Signature(r, s);\n let recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n if (lowS && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 2 * groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (key instanceof Uint8Array) {\n if (key.length !== groupLen)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nfunction getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexports.getPublicKey = getPublicKey;\nfunction recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nexports.recoverPublicKey = recoverPublicKey;\nfunction isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === compressedLen || len === uncompressedLen;\n if (str)\n return len === compressedLen * 2 || len === uncompressedLen * 2;\n if (item instanceof Point)\n return true;\n return false;\n}\nfunction getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isProbPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isProbPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nexports.getSharedSecret = getSharedSecret;\nfunction bits2int(bytes) {\n const slice = bytes.length > fieldLen ? bytes.slice(0, fieldLen) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = exports.utils.randomBytes(fieldLen);\n const e = ensureBytes(extraEntropy);\n if (e.length !== fieldLen)\n throw new Error(`sign: Expected ${fieldLen} bytes of extra data`);\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n const { sig, recovery } = recSig;\n const { der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n await drbg.reseed(seed);\n let sig;\n while (!(sig = kmdToSig(await drbg.generate(), m, d, opts.canonical)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nexports.sign = sign;\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n const drbg = new HmacDrbg(hashLen, groupLen);\n drbg.reseedSync(seed);\n let sig;\n while (!(sig = kmdToSig(drbg.generateSync(), m, d, opts.canonical)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexports.signSync = signSync;\nconst vopts = { strict: true };\nfunction verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nexports.verify = verify;\nfunction schnorrChallengeFinalize(ch) {\n return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n constructor(message, privateKey, auxRand = exports.utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n this.m = ensureBytes(message);\n const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n this.px = x;\n this.d = scalar;\n this.rand = ensureBytes(auxRand);\n if (this.rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n }\n getScalar(priv) {\n const point = Point.fromPrivateKey(priv);\n const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n return { point, scalar, x: point.toRawX() };\n }\n initNonce(d, t0h) {\n return numTo32b(d ^ bytesToNumber(t0h));\n }\n finalizeNonce(k0h) {\n const k0 = mod(bytesToNumber(k0h), CURVE.n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n return { R, rx, k };\n }\n finalizeSig(R, k, e, d) {\n return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n }\n error() {\n throw new Error('sign: Invalid signature produced');\n }\n async calc() {\n const { m, d, px, rand } = this;\n const tag = exports.utils.taggedHash;\n const t = this.initNonce(d, await tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!(await schnorrVerify(sig, m, px)))\n this.error();\n return sig;\n }\n calcSync() {\n const { m, d, px, rand } = this;\n const tag = exports.utils.taggedHashSync;\n const t = this.initNonce(d, tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!schnorrVerifySync(sig, m, px))\n this.error();\n return sig;\n }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n return {\n ...sig,\n m: ensureBytes(message),\n P: normalizePublicKey(publicKey),\n };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !R.hasEvenY() || R.x !== r)\n return false;\n return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(await exports.utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n return false;\n }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(exports.utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n if (error instanceof ShaError)\n throw error;\n return false;\n }\n}\nexports.schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n signSync: schnorrSignSync,\n verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n challenge: 'BIP0340/challenge',\n aux: 'BIP0340/aux',\n nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexports.utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod,\n invert,\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n _bigintTo32Bytes: numTo32b,\n _normalizePrivateKey: normalizePrivateKey,\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n const minLen = groupLen + 8;\n if (hash.length < minLen || hash.length > 1024) {\n throw new Error(`Expected valid bytes of private key as per FIPS 186`);\n }\n const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => exports.utils.hashToPrivateKey(exports.utils.randomBytes(groupLen + 8)),\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n sha256: async (...messages) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n const hash = createHash('sha256');\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n taggedHash: async (tag, ...messages) => {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = await exports.utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return exports.utils.sha256(tagP, ...messages);\n },\n taggedHashSync: (tag, ...messages) => {\n if (typeof _sha256Sync !== 'function')\n throw new ShaError('sha256Sync is undefined, you need to set it');\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return _sha256Sync(tagP, ...messages);\n },\n _JacobianPoint: JacobianPoint,\n};\nObject.defineProperties(exports.utils, {\n sha256Sync: {\n configurable: false,\n get() {\n return _sha256Sync;\n },\n set(val) {\n if (!_sha256Sync)\n _sha256Sync = val;\n },\n },\n hmacSha256Sync: {\n configurable: false,\n get() {\n return _hmacSha256Sync;\n },\n set(val) {\n if (!_hmacSha256Sync)\n _hmacSha256Sync = val;\n },\n },\n});\n","\"use strict\";\n// NOTICE\n// Copyright 2015 D2L Corporation\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joseToDer = exports.derToJose = void 0;\n// The following code is adapted from https://github.com/Brightspace/node-ecdsa-sig-formatter\nconst base64_js_1 = require(\"base64-js\");\nconst base64Url_1 = require(\"./base64Url\");\nfunction getParamSize(keySize) {\n return ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n}\nconst paramBytesForAlg = {\n ES256: getParamSize(256),\n ES384: getParamSize(384),\n ES512: getParamSize(521),\n};\nfunction getParamBytesForAlg(alg) {\n const paramBytes = paramBytesForAlg[alg];\n if (paramBytes) {\n return paramBytes;\n }\n throw new Error(`Unknown algorithm \"${alg}\"`);\n}\nconst MAX_OCTET = 0x80;\nconst CLASS_UNIVERSAL = 0;\nconst PRIMITIVE_BIT = 0x20;\nconst TAG_SEQ = 0x10;\nconst TAG_INT = 0x02;\nconst ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | (CLASS_UNIVERSAL << 6);\nconst ENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\nfunction signatureAsBytes(signature) {\n if (signature instanceof Uint8Array) {\n return signature;\n }\n else if ('string' === typeof signature) {\n return (0, base64_js_1.toByteArray)((0, base64Url_1.pad)(signature));\n }\n throw new TypeError('ECDSA signature must be a Base64 string or a Uint8Array');\n}\nfunction derToJose(signature, alg) {\n const signatureBytes = signatureAsBytes(signature);\n const paramBytes = getParamBytesForAlg(alg);\n // the DER encoded param should at most be the param size, plus a padding\n // zero, since due to being a signed integer\n const maxEncodedParamLength = paramBytes + 1;\n const inputLength = signatureBytes.length;\n let offset = 0;\n if (signatureBytes[offset++] !== ENCODED_TAG_SEQ) {\n throw new Error('Could not find expected \"seq\"');\n }\n let seqLength = signatureBytes[offset++];\n if (seqLength === (MAX_OCTET | 1)) {\n seqLength = signatureBytes[offset++];\n }\n if (inputLength - offset < seqLength) {\n throw new Error(`\"seq\" specified length of \"${seqLength}\", only \"${inputLength - offset}\" remaining`);\n }\n if (signatureBytes[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"r\"');\n }\n const rLength = signatureBytes[offset++];\n if (inputLength - offset - 2 < rLength) {\n throw new Error(`\"r\" specified length of \"${rLength}\", only \"${inputLength - offset - 2}\" available`);\n }\n if (maxEncodedParamLength < rLength) {\n throw new Error(`\"r\" specified length of \"${rLength}\", max of \"${maxEncodedParamLength}\" is acceptable`);\n }\n const rOffset = offset;\n offset += rLength;\n if (signatureBytes[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"s\"');\n }\n const sLength = signatureBytes[offset++];\n if (inputLength - offset !== sLength) {\n throw new Error(`\"s\" specified length of \"${sLength}\", expected \"${inputLength - offset}\"`);\n }\n if (maxEncodedParamLength < sLength) {\n throw new Error(`\"s\" specified length of \"${sLength}\", max of \"${maxEncodedParamLength}\" is acceptable`);\n }\n const sOffset = offset;\n offset += sLength;\n if (offset !== inputLength) {\n throw new Error(`Expected to consume entire array, but \"${inputLength - offset}\" bytes remain`);\n }\n const rPadding = paramBytes - rLength;\n const sPadding = paramBytes - sLength;\n const dst = new Uint8Array(rPadding + rLength + sPadding + sLength);\n for (offset = 0; offset < rPadding; ++offset) {\n dst[offset] = 0;\n }\n dst.set(signatureBytes.subarray(rOffset + Math.max(-rPadding, 0), rOffset + rLength), offset);\n offset = paramBytes;\n for (const o = offset; offset < o + sPadding; ++offset) {\n dst[offset] = 0;\n }\n dst.set(signatureBytes.subarray(sOffset + Math.max(-sPadding, 0), sOffset + sLength), offset);\n return (0, base64Url_1.escape)((0, base64_js_1.fromByteArray)(dst));\n}\nexports.derToJose = derToJose;\nfunction countPadding(buf, start, stop) {\n let padding = 0;\n while (start + padding < stop && buf[start + padding] === 0) {\n ++padding;\n }\n const needsSign = buf[start + padding] >= MAX_OCTET;\n if (needsSign) {\n --padding;\n }\n return padding;\n}\nfunction joseToDer(signature, alg) {\n signature = signatureAsBytes(signature);\n const paramBytes = getParamBytesForAlg(alg);\n const signatureBytes = signature.length;\n if (signatureBytes !== paramBytes * 2) {\n throw new TypeError(`\"${alg}\" signatures must be \"${paramBytes * 2}\" bytes, saw \"${signatureBytes}\"`);\n }\n const rPadding = countPadding(signature, 0, paramBytes);\n const sPadding = countPadding(signature, paramBytes, signature.length);\n const rLength = paramBytes - rPadding;\n const sLength = paramBytes - sPadding;\n const rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n const shortLength = rsBytes < MAX_OCTET;\n const dst = new Uint8Array((shortLength ? 2 : 3) + rsBytes);\n let offset = 0;\n dst[offset++] = ENCODED_TAG_SEQ;\n if (shortLength) {\n // Bit 8 has value \"0\"\n // bits 7-1 give the length.\n dst[offset++] = rsBytes;\n }\n else {\n // Bit 8 of first octet has value \"1\"\n // bits 7-1 give the number of additional length octets.\n dst[offset++] = MAX_OCTET | 1;\n // length, base 256\n dst[offset++] = rsBytes & 0xff;\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = rLength;\n if (rPadding < 0) {\n dst[offset++] = 0;\n dst.set(signature.subarray(0, paramBytes), offset);\n offset += paramBytes;\n }\n else {\n dst.set(signature.subarray(rPadding, paramBytes), offset);\n offset += paramBytes - rPadding;\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = sLength;\n if (sPadding < 0) {\n dst[offset++] = 0;\n dst.set(signature.subarray(paramBytes), offset);\n }\n else {\n dst.set(signature.subarray(paramBytes + sPadding), offset);\n }\n return dst;\n}\nexports.joseToDer = joseToDer;\n//# sourceMappingURL=ecdsaSigFormatter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidTokenError = exports.MissingParametersError = void 0;\nclass MissingParametersError extends Error {\n constructor(message) {\n super();\n this.name = 'MissingParametersError';\n this.message = message || '';\n }\n}\nexports.MissingParametersError = MissingParametersError;\nclass InvalidTokenError extends Error {\n constructor(message) {\n super();\n this.name = 'InvalidTokenError';\n this.message = message || '';\n }\n}\nexports.InvalidTokenError = InvalidTokenError;\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SECP256K1Client = void 0;\nconst hmac_1 = require(\"@noble/hashes/hmac\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst secp = require(\"@noble/secp256k1\");\nconst ecdsaSigFormatter_1 = require(\"../ecdsaSigFormatter\");\nconst errors_1 = require(\"../errors\");\nconst utils_1 = require(\"@noble/hashes/utils\");\n// required to use noble secp https://github.com/paulmillr/noble-secp256k1\nsecp.utils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac_1.hmac.create(sha256_1.sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\nclass SECP256K1Client {\n static derivePublicKey(privateKey, compressed = true) {\n if (privateKey.length === 66) {\n privateKey = privateKey.slice(0, 64);\n }\n if (privateKey.length < 64) {\n // backward compatibly accept too short private keys\n privateKey = privateKey.padStart(64, '0');\n }\n return (0, utils_1.bytesToHex)(secp.getPublicKey(privateKey, compressed));\n }\n static signHash(signingInputHash, privateKey, format = 'jose') {\n // make sure the required parameters are provided\n if (!signingInputHash || !privateKey) {\n throw new errors_1.MissingParametersError('a signing input hash and private key are all required');\n }\n const derSignature = secp.signSync(signingInputHash, privateKey.slice(0, 64), {\n der: true,\n canonical: false,\n });\n if (format === 'der')\n return (0, utils_1.bytesToHex)(derSignature);\n if (format === 'jose')\n return (0, ecdsaSigFormatter_1.derToJose)(derSignature, 'ES256');\n throw Error('Invalid signature format');\n }\n static loadSignature(joseSignature) {\n // create and return the DER-formatted signature bytes\n return (0, ecdsaSigFormatter_1.joseToDer)(joseSignature, 'ES256');\n }\n static verifyHash(signingInputHash, derSignatureBytes, publicKey) {\n // make sure the required parameters are provided\n if (!signingInputHash || !derSignatureBytes || !publicKey) {\n throw new errors_1.MissingParametersError('a signing input hash, der signature, and public key are all required');\n }\n return secp.verify(derSignatureBytes, signingInputHash, publicKey, { strict: false });\n }\n}\nexports.SECP256K1Client = SECP256K1Client;\nSECP256K1Client.algorithmName = 'ES256K';\n//# sourceMappingURL=secp256k1.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cryptoClients = exports.SECP256K1Client = void 0;\nconst secp256k1_1 = require(\"./secp256k1\");\nObject.defineProperty(exports, \"SECP256K1Client\", { enumerable: true, get: function () { return secp256k1_1.SECP256K1Client; } });\nconst cryptoClients = {\n ES256K: secp256k1_1.SECP256K1Client,\n};\nexports.cryptoClients = cryptoClients;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hashSha256Async = exports.hashSha256 = void 0;\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nfunction hashSha256(input) {\n return (0, sha256_1.sha256)(input);\n}\nexports.hashSha256 = hashSha256;\nfunction hashSha256Async(input) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const isSubtleCryptoAvailable = typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined';\n if (isSubtleCryptoAvailable) {\n // Use the W3C Web Crypto API if available (running in a web browser).\n const bytes = typeof input === 'string' ? new TextEncoder().encode(input) : input;\n const hash = yield crypto.subtle.digest('SHA-256', bytes);\n return new Uint8Array(hash);\n }\n else {\n // Otherwise try loading the Node.js `crypto` module (running in Node.js, or an older browser with a polyfill).\n const nodeCrypto = require('crypto');\n if (!nodeCrypto.createHash) {\n throw new Error('`crypto` module does not contain `createHash`');\n }\n return Promise.resolve(nodeCrypto.createHash('sha256').update(input).digest());\n }\n }\n catch (error) {\n console.log(error);\n console.log('Crypto lib not found. Neither the global `crypto.subtle` Web Crypto API, ' +\n 'nor the or the Node.js `require(\"crypto\").createHash` module is available. ' +\n 'Falling back to JS implementation.');\n return Promise.resolve(hashSha256(input));\n }\n });\n}\nexports.hashSha256Async = hashSha256Async;\n//# sourceMappingURL=sha256.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenSigner = exports.createUnsecuredToken = void 0;\nconst base64url = require(\"./base64Url\");\nconst cryptoClients_1 = require(\"./cryptoClients\");\nconst errors_1 = require(\"./errors\");\nconst sha256_1 = require(\"./cryptoClients/sha256\");\nfunction createSigningInput(payload, header) {\n const tokenParts = [];\n // add in the header\n const encodedHeader = base64url.encode(JSON.stringify(header));\n tokenParts.push(encodedHeader);\n // add in the payload\n const encodedPayload = base64url.encode(JSON.stringify(payload));\n tokenParts.push(encodedPayload);\n // prepare the message\n const signingInput = tokenParts.join('.');\n // return the signing input\n return signingInput;\n}\nfunction createUnsecuredToken(payload) {\n const header = { typ: 'JWT', alg: 'none' };\n return createSigningInput(payload, header) + '.';\n}\nexports.createUnsecuredToken = createUnsecuredToken;\nclass TokenSigner {\n constructor(signingAlgorithm, rawPrivateKey) {\n if (!(signingAlgorithm && rawPrivateKey)) {\n throw new errors_1.MissingParametersError('a signing algorithm and private key are required');\n }\n if (typeof signingAlgorithm !== 'string') {\n throw new Error('signing algorithm parameter must be a string');\n }\n signingAlgorithm = signingAlgorithm.toUpperCase();\n if (!cryptoClients_1.cryptoClients.hasOwnProperty(signingAlgorithm)) {\n throw new Error('invalid signing algorithm');\n }\n this.tokenType = 'JWT';\n this.cryptoClient = cryptoClients_1.cryptoClients[signingAlgorithm];\n this.rawPrivateKey = rawPrivateKey;\n }\n header(header = {}) {\n const defaultHeader = { typ: this.tokenType, alg: this.cryptoClient.algorithmName };\n return Object.assign({}, defaultHeader, header);\n }\n sign(payload, expanded = false, customHeader = {}) {\n // generate the token header\n const header = this.header(customHeader);\n // prepare the message to be signed\n const signingInput = createSigningInput(payload, header);\n const signingInputHash = (0, sha256_1.hashSha256)(signingInput);\n return this.createWithSignedHash(payload, expanded, header, signingInput, signingInputHash);\n }\n signAsync(payload, expanded = false, customHeader = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n // generate the token header\n const header = this.header(customHeader);\n // prepare the message to be signed\n const signingInput = createSigningInput(payload, header);\n const signingInputHash = yield (0, sha256_1.hashSha256Async)(signingInput);\n return this.createWithSignedHash(payload, expanded, header, signingInput, signingInputHash);\n });\n }\n createWithSignedHash(payload, expanded, header, signingInput, signingInputHash) {\n // sign the message and add in the signature\n const signature = this.cryptoClient.signHash(signingInputHash, this.rawPrivateKey);\n if (expanded) {\n const signedToken = {\n header: [base64url.encode(JSON.stringify(header))],\n payload: JSON.stringify(payload),\n signature: [signature],\n };\n return signedToken;\n }\n else {\n return [signingInput, signature].join('.');\n }\n }\n}\nexports.TokenSigner = TokenSigner;\n//# sourceMappingURL=signer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenVerifier = void 0;\nconst base64url = require(\"./base64Url\");\nconst cryptoClients_1 = require(\"./cryptoClients\");\nconst errors_1 = require(\"./errors\");\nconst sha256_1 = require(\"./cryptoClients/sha256\");\nclass TokenVerifier {\n constructor(signingAlgorithm, rawPublicKey) {\n if (!(signingAlgorithm && rawPublicKey)) {\n throw new errors_1.MissingParametersError('a signing algorithm and public key are required');\n }\n if (typeof signingAlgorithm !== 'string') {\n throw 'signing algorithm parameter must be a string';\n }\n signingAlgorithm = signingAlgorithm.toUpperCase();\n if (!cryptoClients_1.cryptoClients.hasOwnProperty(signingAlgorithm)) {\n throw 'invalid signing algorithm';\n }\n this.tokenType = 'JWT';\n this.cryptoClient = cryptoClients_1.cryptoClients[signingAlgorithm];\n this.rawPublicKey = rawPublicKey;\n }\n verify(token) {\n if (typeof token === 'string') {\n return this.verifyCompact(token, false);\n }\n else if (typeof token === 'object') {\n return this.verifyExpanded(token, false);\n }\n else {\n return false;\n }\n }\n verifyAsync(token) {\n if (typeof token === 'string') {\n return this.verifyCompact(token, true);\n }\n else if (typeof token === 'object') {\n return this.verifyExpanded(token, true);\n }\n else {\n return Promise.resolve(false);\n }\n }\n verifyCompact(token, async) {\n // decompose the token into parts\n const tokenParts = token.split('.');\n // calculate the signing input hash\n const signingInput = tokenParts[0] + '.' + tokenParts[1];\n const performVerify = (signingInputHash) => {\n // extract the signature as a DER array\n const derSignatureBytes = this.cryptoClient.loadSignature(tokenParts[2]);\n // verify the signed hash\n return this.cryptoClient.verifyHash(signingInputHash, derSignatureBytes, this.rawPublicKey);\n };\n if (async) {\n return (0, sha256_1.hashSha256Async)(signingInput).then(signingInputHash => performVerify(signingInputHash));\n }\n else {\n const signingInputHash = (0, sha256_1.hashSha256)(signingInput);\n return performVerify(signingInputHash);\n }\n }\n verifyExpanded(token, async) {\n const signingInput = [token['header'].join('.'), base64url.encode(token['payload'])].join('.');\n let verified = true;\n const performVerify = (signingInputHash) => {\n token['signature'].map((signature) => {\n const derSignatureBytes = this.cryptoClient.loadSignature(signature);\n const signatureVerified = this.cryptoClient.verifyHash(signingInputHash, derSignatureBytes, this.rawPublicKey);\n if (!signatureVerified) {\n verified = false;\n }\n });\n return verified;\n };\n if (async) {\n return (0, sha256_1.hashSha256Async)(signingInput).then(signingInputHash => performVerify(signingInputHash));\n }\n else {\n const signingInputHash = (0, sha256_1.hashSha256)(signingInput);\n return performVerify(signingInputHash);\n }\n }\n}\nexports.TokenVerifier = TokenVerifier;\n//# sourceMappingURL=verifier.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeToken = void 0;\nconst base64url = require(\"./base64Url\");\nfunction decodeToken(token) {\n if (typeof token === 'string') {\n // decompose the token into parts\n const tokenParts = token.split('.');\n const header = JSON.parse(base64url.decode(tokenParts[0]));\n const payload = JSON.parse(base64url.decode(tokenParts[1]));\n const signature = tokenParts[2];\n // return the token object\n return {\n header: header,\n payload: payload,\n signature: signature,\n };\n }\n else if (typeof token === 'object') {\n if (typeof token.payload !== 'string') {\n throw new Error('Expected token payload to be a base64 or json string');\n }\n let payload = token.payload;\n if (token.payload[0] !== '{') {\n payload = base64url.decode(payload);\n }\n const allHeaders = [];\n token.header.map((headerValue) => {\n const header = JSON.parse(base64url.decode(headerValue));\n allHeaders.push(header);\n });\n return {\n header: allHeaders,\n payload: JSON.parse(payload),\n signature: token.signature,\n };\n }\n}\nexports.decodeToken = decodeToken;\n//# sourceMappingURL=decode.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./signer\"), exports);\n__exportStar(require(\"./verifier\"), exports);\n__exportStar(require(\"./decode\"), exports);\n__exportStar(require(\"./errors\"), exports);\n__exportStar(require(\"./cryptoClients\"), exports);\n//# sourceMappingURL=index.js.map","import { InvalidDIDError } from '@stacks/common';\nexport function makeDIDFromAddress(address) {\n return `did:btc-addr:${address}`;\n}\nexport function makeDIDFromPublicKey(publicKey) {\n return `did:ecdsa-pub:${publicKey}`;\n}\nexport function getDIDType(decentralizedID) {\n const didParts = decentralizedID.split(':');\n if (didParts.length !== 3) {\n throw new InvalidDIDError('Decentralized IDs must have 3 parts');\n }\n if (didParts[0].toLowerCase() !== 'did') {\n throw new InvalidDIDError('Decentralized IDs must start with \"did\"');\n }\n return didParts[1].toLowerCase();\n}\nexport function getAddressFromDID(decentralizedID) {\n if (decentralizedID) {\n const didType = getDIDType(decentralizedID);\n if (didType === 'btc-addr') {\n return decentralizedID.split(':')[2];\n }\n else {\n return undefined;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=dids.js.map","import { bytesToHex, bytesToUtf8, getGlobalObject, hexToBytes, makeUUID4, nextMonth, utf8ToBytes, } from '@stacks/common';\nimport { decryptECIES, encryptECIES, makeECPrivateKey, publicKeyToBtcAddress, } from '@stacks/encryption';\nimport { SECP256K1Client, TokenSigner } from 'jsontokens';\nimport { DEFAULT_SCOPE } from './constants';\nimport { makeDIDFromAddress } from './dids';\nconst VERSION = '1.4.0';\nexport function generateTransitKey() {\n const transitKey = makeECPrivateKey();\n return transitKey;\n}\nexport const makeAuthRequest = makeAuthRequestToken;\nexport function makeAuthRequestToken(transitPrivateKey, redirectURI, manifestURI, scopes = DEFAULT_SCOPE.slice(), appDomain, expiresAt = nextMonth().getTime(), extraParams = {}) {\n const getWindowOrigin = (paramName) => {\n const location = getGlobalObject('location', {\n throwIfUnavailable: true,\n usageDesc: `makeAuthRequest([${paramName}=undefined])`,\n });\n return location?.origin;\n };\n if (!redirectURI) {\n redirectURI = `${getWindowOrigin('redirectURI')}/`;\n }\n if (!manifestURI) {\n manifestURI = `${getWindowOrigin('manifestURI')}/manifest.json`;\n }\n if (!appDomain) {\n appDomain = getWindowOrigin('appDomain');\n }\n const payload = Object.assign({}, extraParams, {\n jti: makeUUID4(),\n iat: Math.floor(new Date().getTime() / 1000),\n exp: Math.floor(expiresAt / 1000),\n iss: null,\n public_keys: [],\n domain_name: appDomain,\n manifest_uri: manifestURI,\n redirect_uri: redirectURI,\n version: VERSION,\n do_not_include_profile: true,\n supports_hub_url: true,\n scopes,\n });\n const publicKey = SECP256K1Client.derivePublicKey(transitPrivateKey);\n payload.public_keys = [publicKey];\n const address = publicKeyToBtcAddress(publicKey);\n payload.iss = makeDIDFromAddress(address);\n const tokenSigner = new TokenSigner('ES256k', transitPrivateKey);\n const token = tokenSigner.sign(payload);\n return token;\n}\nexport async function encryptPrivateKey(publicKey, privateKey) {\n const encryptedObj = await encryptECIES(publicKey, utf8ToBytes(privateKey), true);\n const encryptedJSON = JSON.stringify(encryptedObj);\n return bytesToHex(utf8ToBytes(encryptedJSON));\n}\nexport async function decryptPrivateKey(privateKey, hexedEncrypted) {\n const unhexedString = bytesToUtf8(hexToBytes(hexedEncrypted));\n const encryptedObj = JSON.parse(unhexedString);\n const decrypted = await decryptECIES(privateKey, encryptedObj);\n if (typeof decrypted !== 'string') {\n throw new Error('Unable to correctly decrypt private key');\n }\n else {\n return decrypted;\n }\n}\nexport async function makeAuthResponse(privateKey, profile = {}, metadata, coreToken = null, appPrivateKey = null, expiresAt = nextMonth().getTime(), transitPublicKey = null, hubUrl = null, blockstackAPIUrl = null, associationToken = null, appPrivateKeyFromWalletSalt = null) {\n const publicKey = SECP256K1Client.derivePublicKey(privateKey);\n const address = publicKeyToBtcAddress(publicKey);\n let privateKeyPayload = appPrivateKey;\n let coreTokenPayload = coreToken;\n let additionalProperties = {};\n if (appPrivateKey !== undefined && appPrivateKey !== null) {\n if (transitPublicKey !== undefined && transitPublicKey !== null) {\n privateKeyPayload = await encryptPrivateKey(transitPublicKey, appPrivateKey);\n if (coreToken !== undefined && coreToken !== null) {\n coreTokenPayload = await encryptPrivateKey(transitPublicKey, coreToken);\n }\n }\n additionalProperties = {\n email: metadata?.email ? metadata.email : null,\n profile_url: metadata?.profileUrl ? metadata.profileUrl : null,\n hubUrl,\n blockstackAPIUrl,\n associationToken,\n version: VERSION,\n };\n }\n else {\n }\n const payload = Object.assign({}, {\n jti: makeUUID4(),\n iat: Math.floor(new Date().getTime() / 1000),\n exp: Math.floor(expiresAt / 1000),\n iss: makeDIDFromAddress(address),\n private_key: privateKeyPayload,\n public_keys: [publicKey],\n appPrivateKeyFromWalletSalt,\n profile,\n core_token: coreTokenPayload,\n }, additionalProperties);\n const tokenSigner = new TokenSigner('ES256k', privateKey);\n return tokenSigner.sign(payload);\n}\n//# sourceMappingURL=messages.js.map","import { isSameOriginAbsoluteUrl } from '@stacks/common';\nimport { publicKeyToBtcAddress } from '@stacks/encryption';\nimport { decodeToken, TokenVerifier } from 'jsontokens';\nimport { getAddressFromDID } from './dids';\nimport { fetchAppManifest } from './provider';\nexport function doSignaturesMatchPublicKeys(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n const publicKeys = payload.public_keys;\n if (publicKeys.length === 1) {\n const publicKey = publicKeys[0];\n try {\n const tokenVerifier = new TokenVerifier('ES256k', publicKey);\n return tokenVerifier.verify(token);\n }\n catch (e) {\n return false;\n }\n }\n else {\n throw new Error('Multiple public keys are not supported');\n }\n}\nexport function doPublicKeysMatchIssuer(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n const publicKeys = payload.public_keys;\n const addressFromIssuer = getAddressFromDID(payload.iss);\n if (publicKeys.length === 1) {\n const addressFromPublicKeys = publicKeyToBtcAddress(publicKeys[0]);\n if (addressFromPublicKeys === addressFromIssuer) {\n return true;\n }\n }\n else {\n throw new Error('Multiple public keys are not supported');\n }\n return false;\n}\nexport function isIssuanceDateValid(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n if (payload.iat) {\n if (typeof payload.iat !== 'number') {\n return false;\n }\n const issuedAt = new Date(payload.iat * 1000);\n if (new Date().getTime() < issuedAt.getTime()) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\nexport function isExpirationDateValid(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n if (payload.exp) {\n if (typeof payload.exp !== 'number') {\n return false;\n }\n const expiresAt = new Date(payload.exp * 1000);\n if (new Date().getTime() > expiresAt.getTime()) {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n}\nexport function isManifestUriValid(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n return isSameOriginAbsoluteUrl(payload.domain_name, payload.manifest_uri);\n}\nexport function isRedirectUriValid(token) {\n const payload = decodeToken(token).payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n return isSameOriginAbsoluteUrl(payload.domain_name, payload.redirect_uri);\n}\nexport async function verifyAuthRequest(token) {\n if (decodeToken(token).header.alg === 'none') {\n throw new Error('Token must be signed in order to be verified');\n }\n const values = await Promise.all([\n isExpirationDateValid(token),\n isIssuanceDateValid(token),\n doSignaturesMatchPublicKeys(token),\n doPublicKeysMatchIssuer(token),\n isManifestUriValid(token),\n isRedirectUriValid(token),\n ]);\n return values.every(val => val);\n}\nexport async function verifyAuthRequestAndLoadManifest(token) {\n const valid = await verifyAuthRequest(token);\n if (!valid) {\n throw new Error('Token is an invalid auth request');\n }\n return fetchAppManifest(token);\n}\nexport async function verifyAuthResponse(token) {\n const conditions = await Promise.all([\n isExpirationDateValid(token),\n isIssuanceDateValid(token),\n doSignaturesMatchPublicKeys(token),\n doPublicKeysMatchIssuer(token),\n ]);\n return conditions.every(val => val);\n}\n//# sourceMappingURL=verification.js.map","import { InvalidStateError } from '@stacks/common';\nconst SESSION_VERSION = '1.0.0';\nexport class SessionData {\n constructor(options) {\n this.version = SESSION_VERSION;\n this.userData = options.userData;\n this.transitKey = options.transitKey;\n this.etags = options.etags ? options.etags : {};\n }\n static fromJSON(json) {\n if (json.version !== SESSION_VERSION) {\n throw new InvalidStateError(`JSON data version ${json.version} not supported by SessionData`);\n }\n const options = {\n coreNode: json.coreNode,\n userData: json.userData,\n transitKey: json.transitKey,\n etags: json.etags,\n };\n return new SessionData(options);\n }\n toString() {\n return JSON.stringify(this);\n }\n}\n//# sourceMappingURL=sessionData.js.map","import { SessionData } from './sessionData';\nimport { LOCALSTORAGE_SESSION_KEY } from './constants';\nimport { NoSessionDataError } from '@stacks/common';\nexport class SessionDataStore {\n constructor(sessionOptions) {\n if (sessionOptions) {\n const newSessionData = new SessionData(sessionOptions);\n this.setSessionData(newSessionData);\n }\n }\n getSessionData() {\n throw new Error('Abstract class');\n }\n setSessionData(_session) {\n throw new Error('Abstract class');\n }\n deleteSessionData() {\n throw new Error('Abstract class');\n }\n}\nexport class InstanceDataStore extends SessionDataStore {\n constructor(sessionOptions) {\n super(sessionOptions);\n if (!this.sessionData) {\n this.setSessionData(new SessionData({}));\n }\n }\n getSessionData() {\n if (!this.sessionData) {\n throw new NoSessionDataError('No session data was found.');\n }\n return this.sessionData;\n }\n setSessionData(session) {\n this.sessionData = session;\n return true;\n }\n deleteSessionData() {\n this.setSessionData(new SessionData({}));\n return true;\n }\n}\nexport class LocalStorageStore extends SessionDataStore {\n constructor(sessionOptions) {\n super(sessionOptions);\n if (sessionOptions &&\n sessionOptions.storeOptions &&\n sessionOptions.storeOptions.localStorageKey &&\n typeof sessionOptions.storeOptions.localStorageKey === 'string') {\n this.key = sessionOptions.storeOptions.localStorageKey;\n }\n else {\n this.key = LOCALSTORAGE_SESSION_KEY;\n }\n const data = localStorage.getItem(this.key);\n if (!data) {\n const sessionData = new SessionData({});\n this.setSessionData(sessionData);\n }\n }\n getSessionData() {\n const data = localStorage.getItem(this.key);\n if (!data) {\n throw new NoSessionDataError('No session data was found in localStorage');\n }\n const dataJSON = JSON.parse(data);\n return SessionData.fromJSON(dataJSON);\n }\n setSessionData(session) {\n localStorage.setItem(this.key, session.toString());\n return true;\n }\n deleteSessionData() {\n localStorage.removeItem(this.key);\n this.setSessionData(new SessionData({}));\n return true;\n }\n}\n//# sourceMappingURL=sessionStore.js.map","import { bytesToHex, hexToBytes, readUInt16BE, readUInt32BE, readUInt8 } from '@stacks/common';\nfunction createEnumChecker(enumVariable) {\n const enumValues = Object.values(enumVariable).filter(v => typeof v === 'number');\n const enumValueSet = new Set(enumValues);\n return (value) => enumValueSet.has(value);\n}\nconst enumCheckFunctions = new Map();\nexport function isEnum(enumVariable, value) {\n const checker = enumCheckFunctions.get(enumVariable);\n if (checker !== undefined) {\n return checker(value);\n }\n const newChecker = createEnumChecker(enumVariable);\n enumCheckFunctions.set(enumVariable, newChecker);\n return isEnum(enumVariable, value);\n}\nexport class BytesReader {\n constructor(bytes) {\n this.consumed = 0;\n this.source = typeof bytes === 'string' ? hexToBytes(bytes) : bytes;\n }\n readBytes(length) {\n const view = this.source.subarray(this.consumed, this.consumed + length);\n this.consumed += length;\n return view;\n }\n readUInt32BE() {\n return readUInt32BE(this.readBytes(4), 0);\n }\n readUInt8() {\n return readUInt8(this.readBytes(1), 0);\n }\n readUInt16BE() {\n return readUInt16BE(this.readBytes(2), 0);\n }\n readBigUIntLE(length) {\n const bytes = this.readBytes(length).slice().reverse();\n const hex = bytesToHex(bytes);\n return BigInt(`0x${hex}`);\n }\n readBigUIntBE(length) {\n const bytes = this.readBytes(length);\n const hex = bytesToHex(bytes);\n return BigInt(`0x${hex}`);\n }\n get readOffset() {\n return this.consumed;\n }\n set readOffset(val) {\n this.consumed = val;\n }\n get internalBytes() {\n return this.source;\n }\n readUInt8Enum(enumVariable, invalidEnumErrorFormatter) {\n const num = this.readUInt8();\n if (isEnum(enumVariable, num)) {\n return num;\n }\n throw invalidEnumErrorFormatter(num);\n }\n}\n//# sourceMappingURL=BytesReader.js.map","export var ChainId;\n(function (ChainId) {\n ChainId[ChainId[\"Mainnet\"] = 1] = \"Mainnet\";\n ChainId[ChainId[\"Testnet\"] = 2147483648] = \"Testnet\";\n})(ChainId || (ChainId = {}));\nexport var PeerNetworkId;\n(function (PeerNetworkId) {\n PeerNetworkId[PeerNetworkId[\"Mainnet\"] = 385875968] = \"Mainnet\";\n PeerNetworkId[PeerNetworkId[\"Testnet\"] = 4278190080] = \"Testnet\";\n})(PeerNetworkId || (PeerNetworkId = {}));\nexport const DEFAULT_CHAIN_ID = ChainId.Mainnet;\nexport var TransactionVersion;\n(function (TransactionVersion) {\n TransactionVersion[TransactionVersion[\"Mainnet\"] = 0] = \"Mainnet\";\n TransactionVersion[TransactionVersion[\"Testnet\"] = 128] = \"Testnet\";\n})(TransactionVersion || (TransactionVersion = {}));\nexport var AddressVersion;\n(function (AddressVersion) {\n AddressVersion[AddressVersion[\"MainnetSingleSig\"] = 22] = \"MainnetSingleSig\";\n AddressVersion[AddressVersion[\"MainnetMultiSig\"] = 20] = \"MainnetMultiSig\";\n AddressVersion[AddressVersion[\"TestnetSingleSig\"] = 26] = \"TestnetSingleSig\";\n AddressVersion[AddressVersion[\"TestnetMultiSig\"] = 21] = \"TestnetMultiSig\";\n})(AddressVersion || (AddressVersion = {}));\nexport const DEFAULT_TRANSACTION_VERSION = TransactionVersion.Mainnet;\nexport function whenTransactionVersion(transactionVersion) {\n return (map) => map[transactionVersion];\n}\n//# sourceMappingURL=constants.js.map","import { DEVNET_URL, HIRO_MAINNET_URL, HIRO_TESTNET_URL, createFetchFn, createApiKeyMiddleware, } from '@stacks/common';\nimport { AddressVersion, ChainId, PeerNetworkId, TransactionVersion } from './constants';\nexport const STACKS_MAINNET = {\n chainId: ChainId.Mainnet,\n transactionVersion: TransactionVersion.Mainnet,\n peerNetworkId: PeerNetworkId.Mainnet,\n magicBytes: 'X2',\n bootAddress: 'SP000000000000000000002Q6VF78',\n addressVersion: {\n singleSig: AddressVersion.MainnetSingleSig,\n multiSig: AddressVersion.MainnetMultiSig,\n },\n client: { baseUrl: HIRO_MAINNET_URL },\n};\nexport const STACKS_TESTNET = {\n chainId: ChainId.Testnet,\n transactionVersion: TransactionVersion.Testnet,\n peerNetworkId: PeerNetworkId.Testnet,\n magicBytes: 'T2',\n bootAddress: 'ST000000000000000000002AMW42H',\n addressVersion: {\n singleSig: AddressVersion.TestnetSingleSig,\n multiSig: AddressVersion.TestnetMultiSig,\n },\n client: { baseUrl: HIRO_TESTNET_URL },\n};\nexport const STACKS_DEVNET = {\n ...STACKS_TESTNET,\n addressVersion: { ...STACKS_TESTNET.addressVersion },\n magicBytes: 'id',\n client: { baseUrl: DEVNET_URL },\n};\nexport const STACKS_MOCKNET = {\n ...STACKS_DEVNET,\n addressVersion: { ...STACKS_DEVNET.addressVersion },\n client: { ...STACKS_DEVNET.client },\n};\nexport const StacksNetworks = ['mainnet', 'testnet', 'devnet', 'mocknet'];\nexport function networkFromName(name) {\n switch (name) {\n case 'mainnet':\n return STACKS_MAINNET;\n case 'testnet':\n return STACKS_TESTNET;\n case 'devnet':\n return STACKS_DEVNET;\n case 'mocknet':\n return STACKS_MOCKNET;\n default:\n throw new Error(`Unknown network name: ${name}`);\n }\n}\nexport function networkFrom(network) {\n if (typeof network === 'string')\n return networkFromName(network);\n return network;\n}\nexport function defaultUrlFromNetwork(network) {\n if (!network)\n return HIRO_MAINNET_URL;\n network = networkFrom(network);\n return !network || network.transactionVersion === TransactionVersion.Mainnet\n ? HIRO_MAINNET_URL\n : network.magicBytes === 'id'\n ? DEVNET_URL\n : HIRO_TESTNET_URL;\n}\nexport function clientFromNetwork(network) {\n if (network.client.fetch)\n return network.client;\n return {\n ...network.client,\n fetch: createFetchFn(),\n };\n}\nexport function createNetwork(arg1, arg2) {\n const baseNetwork = networkFrom(typeof arg1 === 'object' && 'network' in arg1 ? arg1.network : arg1);\n const newNetwork = {\n ...baseNetwork,\n addressVersion: { ...baseNetwork.addressVersion },\n client: { ...baseNetwork.client },\n };\n if (typeof arg1 === 'object' && 'network' in arg1) {\n if (arg1.client) {\n newNetwork.client.baseUrl = arg1.client.baseUrl ?? newNetwork.client.baseUrl;\n newNetwork.client.fetch = arg1.client.fetch ?? newNetwork.client.fetch;\n }\n if (typeof arg1.apiKey === 'string') {\n const middleware = createApiKeyMiddleware(arg1);\n newNetwork.client.fetch = newNetwork.client.fetch\n ? createFetchFn(newNetwork.client.fetch, middleware)\n : createFetchFn(middleware);\n }\n return newNetwork;\n }\n if (typeof arg2 === 'string') {\n const middleware = createApiKeyMiddleware({ apiKey: arg2 });\n newNetwork.client.fetch = newNetwork.client.fetch\n ? createFetchFn(newNetwork.client.fetch, middleware)\n : createFetchFn(middleware);\n return newNetwork;\n }\n return newNetwork;\n}\n//# sourceMappingURL=network.js.map","export const BLOCKSTACK_DEFAULT_GAIA_HUB_URL = 'https://hub.blockstack.org';\nexport const MAX_STRING_LENGTH_BYTES = 128;\nexport const CLARITY_INT_SIZE = 128;\nexport const CLARITY_INT_BYTE_SIZE = 16;\nexport const COINBASE_BYTES_LENGTH = 32;\nexport const VRF_PROOF_BYTES_LENGTH = 80;\nexport const RECOVERABLE_ECDSA_SIG_LENGTH_BYTES = 65;\nexport const COMPRESSED_PUBKEY_LENGTH_BYTES = 32;\nexport const UNCOMPRESSED_PUBKEY_LENGTH_BYTES = 64;\nexport const MEMO_MAX_LENGTH_BYTES = 34;\nconst MAX_PAYLOAD_LEN = 1 + 16 * 1024 * 1024;\nconst PREAMBLE_ENCODED_SIZE = 165;\nconst MAX_RELAYERS_LEN = 16;\nconst PEER_ADDRESS_ENCODED_SIZE = 16;\nconst HASH160_ENCODED_SIZE = 20;\nconst NEIGHBOR_ADDRESS_ENCODED_SIZE = PEER_ADDRESS_ENCODED_SIZE + 2 + HASH160_ENCODED_SIZE;\nconst RELAY_DATA_ENCODED_SIZE = NEIGHBOR_ADDRESS_ENCODED_SIZE + 4;\nexport const STRING_MAX_LENGTH = MAX_PAYLOAD_LEN + (PREAMBLE_ENCODED_SIZE + MAX_RELAYERS_LEN * RELAY_DATA_ENCODED_SIZE);\nexport var PayloadType;\n(function (PayloadType) {\n PayloadType[PayloadType[\"TokenTransfer\"] = 0] = \"TokenTransfer\";\n PayloadType[PayloadType[\"SmartContract\"] = 1] = \"SmartContract\";\n PayloadType[PayloadType[\"VersionedSmartContract\"] = 6] = \"VersionedSmartContract\";\n PayloadType[PayloadType[\"ContractCall\"] = 2] = \"ContractCall\";\n PayloadType[PayloadType[\"PoisonMicroblock\"] = 3] = \"PoisonMicroblock\";\n PayloadType[PayloadType[\"Coinbase\"] = 4] = \"Coinbase\";\n PayloadType[PayloadType[\"CoinbaseToAltRecipient\"] = 5] = \"CoinbaseToAltRecipient\";\n PayloadType[PayloadType[\"TenureChange\"] = 7] = \"TenureChange\";\n PayloadType[PayloadType[\"NakamotoCoinbase\"] = 8] = \"NakamotoCoinbase\";\n})(PayloadType || (PayloadType = {}));\nexport var ClarityVersion;\n(function (ClarityVersion) {\n ClarityVersion[ClarityVersion[\"Clarity1\"] = 1] = \"Clarity1\";\n ClarityVersion[ClarityVersion[\"Clarity2\"] = 2] = \"Clarity2\";\n ClarityVersion[ClarityVersion[\"Clarity3\"] = 3] = \"Clarity3\";\n})(ClarityVersion || (ClarityVersion = {}));\nexport var AnchorMode;\n(function (AnchorMode) {\n AnchorMode[AnchorMode[\"OnChainOnly\"] = 1] = \"OnChainOnly\";\n AnchorMode[AnchorMode[\"OffChainOnly\"] = 2] = \"OffChainOnly\";\n AnchorMode[AnchorMode[\"Any\"] = 3] = \"Any\";\n})(AnchorMode || (AnchorMode = {}));\nexport const AnchorModeNames = ['onChainOnly', 'offChainOnly', 'any'];\nconst AnchorModeMap = {\n [AnchorModeNames[0]]: AnchorMode.OnChainOnly,\n [AnchorModeNames[1]]: AnchorMode.OffChainOnly,\n [AnchorModeNames[2]]: AnchorMode.Any,\n [AnchorMode.OnChainOnly]: AnchorMode.OnChainOnly,\n [AnchorMode.OffChainOnly]: AnchorMode.OffChainOnly,\n [AnchorMode.Any]: AnchorMode.Any,\n};\nexport function anchorModeFrom(mode) {\n if (mode in AnchorModeMap)\n return AnchorModeMap[mode];\n throw new Error(`Invalid anchor mode \"${mode}\", must be one of: ${AnchorModeNames.join(', ')}`);\n}\nexport var PostConditionMode;\n(function (PostConditionMode) {\n PostConditionMode[PostConditionMode[\"Allow\"] = 1] = \"Allow\";\n PostConditionMode[PostConditionMode[\"Deny\"] = 2] = \"Deny\";\n})(PostConditionMode || (PostConditionMode = {}));\nexport var PostConditionType;\n(function (PostConditionType) {\n PostConditionType[PostConditionType[\"STX\"] = 0] = \"STX\";\n PostConditionType[PostConditionType[\"Fungible\"] = 1] = \"Fungible\";\n PostConditionType[PostConditionType[\"NonFungible\"] = 2] = \"NonFungible\";\n})(PostConditionType || (PostConditionType = {}));\nexport var AuthType;\n(function (AuthType) {\n AuthType[AuthType[\"Standard\"] = 4] = \"Standard\";\n AuthType[AuthType[\"Sponsored\"] = 5] = \"Sponsored\";\n})(AuthType || (AuthType = {}));\nexport var AddressHashMode;\n(function (AddressHashMode) {\n AddressHashMode[AddressHashMode[\"P2PKH\"] = 0] = \"P2PKH\";\n AddressHashMode[AddressHashMode[\"P2SH\"] = 1] = \"P2SH\";\n AddressHashMode[AddressHashMode[\"P2WPKH\"] = 2] = \"P2WPKH\";\n AddressHashMode[AddressHashMode[\"P2WSH\"] = 3] = \"P2WSH\";\n AddressHashMode[AddressHashMode[\"P2SHNonSequential\"] = 5] = \"P2SHNonSequential\";\n AddressHashMode[AddressHashMode[\"P2WSHNonSequential\"] = 7] = \"P2WSHNonSequential\";\n})(AddressHashMode || (AddressHashMode = {}));\nexport { AddressVersion } from '@stacks/network';\nexport var PubKeyEncoding;\n(function (PubKeyEncoding) {\n PubKeyEncoding[PubKeyEncoding[\"Compressed\"] = 0] = \"Compressed\";\n PubKeyEncoding[PubKeyEncoding[\"Uncompressed\"] = 1] = \"Uncompressed\";\n})(PubKeyEncoding || (PubKeyEncoding = {}));\nexport var FungibleConditionCode;\n(function (FungibleConditionCode) {\n FungibleConditionCode[FungibleConditionCode[\"Equal\"] = 1] = \"Equal\";\n FungibleConditionCode[FungibleConditionCode[\"Greater\"] = 2] = \"Greater\";\n FungibleConditionCode[FungibleConditionCode[\"GreaterEqual\"] = 3] = \"GreaterEqual\";\n FungibleConditionCode[FungibleConditionCode[\"Less\"] = 4] = \"Less\";\n FungibleConditionCode[FungibleConditionCode[\"LessEqual\"] = 5] = \"LessEqual\";\n})(FungibleConditionCode || (FungibleConditionCode = {}));\nexport var NonFungibleConditionCode;\n(function (NonFungibleConditionCode) {\n NonFungibleConditionCode[NonFungibleConditionCode[\"Sends\"] = 16] = \"Sends\";\n NonFungibleConditionCode[NonFungibleConditionCode[\"DoesNotSend\"] = 17] = \"DoesNotSend\";\n})(NonFungibleConditionCode || (NonFungibleConditionCode = {}));\nexport var PostConditionPrincipalId;\n(function (PostConditionPrincipalId) {\n PostConditionPrincipalId[PostConditionPrincipalId[\"Origin\"] = 1] = \"Origin\";\n PostConditionPrincipalId[PostConditionPrincipalId[\"Standard\"] = 2] = \"Standard\";\n PostConditionPrincipalId[PostConditionPrincipalId[\"Contract\"] = 3] = \"Contract\";\n})(PostConditionPrincipalId || (PostConditionPrincipalId = {}));\nexport var AssetType;\n(function (AssetType) {\n AssetType[AssetType[\"STX\"] = 0] = \"STX\";\n AssetType[AssetType[\"Fungible\"] = 1] = \"Fungible\";\n AssetType[AssetType[\"NonFungible\"] = 2] = \"NonFungible\";\n})(AssetType || (AssetType = {}));\nexport var TenureChangeCause;\n(function (TenureChangeCause) {\n TenureChangeCause[TenureChangeCause[\"BlockFound\"] = 0] = \"BlockFound\";\n TenureChangeCause[TenureChangeCause[\"Extended\"] = 1] = \"Extended\";\n})(TenureChangeCause || (TenureChangeCause = {}));\nexport var AuthFieldType;\n(function (AuthFieldType) {\n AuthFieldType[AuthFieldType[\"PublicKeyCompressed\"] = 0] = \"PublicKeyCompressed\";\n AuthFieldType[AuthFieldType[\"PublicKeyUncompressed\"] = 1] = \"PublicKeyUncompressed\";\n AuthFieldType[AuthFieldType[\"SignatureCompressed\"] = 2] = \"SignatureCompressed\";\n AuthFieldType[AuthFieldType[\"SignatureUncompressed\"] = 3] = \"SignatureUncompressed\";\n})(AuthFieldType || (AuthFieldType = {}));\nexport var TxRejectedReason;\n(function (TxRejectedReason) {\n TxRejectedReason[\"Serialization\"] = \"Serialization\";\n TxRejectedReason[\"Deserialization\"] = \"Deserialization\";\n TxRejectedReason[\"SignatureValidation\"] = \"SignatureValidation\";\n TxRejectedReason[\"FeeTooLow\"] = \"FeeTooLow\";\n TxRejectedReason[\"BadNonce\"] = \"BadNonce\";\n TxRejectedReason[\"NotEnoughFunds\"] = \"NotEnoughFunds\";\n TxRejectedReason[\"NoSuchContract\"] = \"NoSuchContract\";\n TxRejectedReason[\"NoSuchPublicFunction\"] = \"NoSuchPublicFunction\";\n TxRejectedReason[\"BadFunctionArgument\"] = \"BadFunctionArgument\";\n TxRejectedReason[\"ContractAlreadyExists\"] = \"ContractAlreadyExists\";\n TxRejectedReason[\"PoisonMicroblocksDoNotConflict\"] = \"PoisonMicroblocksDoNotConflict\";\n TxRejectedReason[\"PoisonMicroblockHasUnknownPubKeyHash\"] = \"PoisonMicroblockHasUnknownPubKeyHash\";\n TxRejectedReason[\"PoisonMicroblockIsInvalid\"] = \"PoisonMicroblockIsInvalid\";\n TxRejectedReason[\"BadAddressVersionByte\"] = \"BadAddressVersionByte\";\n TxRejectedReason[\"NoCoinbaseViaMempool\"] = \"NoCoinbaseViaMempool\";\n TxRejectedReason[\"ServerFailureNoSuchChainTip\"] = \"ServerFailureNoSuchChainTip\";\n TxRejectedReason[\"ServerFailureDatabase\"] = \"ServerFailureDatabase\";\n TxRejectedReason[\"ServerFailureOther\"] = \"ServerFailureOther\";\n})(TxRejectedReason || (TxRejectedReason = {}));\n//# sourceMappingURL=constants.js.map","class TransactionError extends Error {\n constructor(message) {\n super(message);\n this.message = message;\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\nexport class SerializationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class DeserializationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class NoEstimateAvailableError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class NotImplementedError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class SigningError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class VerificationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.c32decode = exports.c32normalize = exports.c32encode = exports.c32 = void 0;\nconst utils_1 = require(\"@noble/hashes/utils\");\nexports.c32 = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';\nconst hex = '0123456789abcdef';\n/**\n * Encode a hex string as a c32 string. Note that the hex string is assumed\n * to be big-endian (and the resulting c32 string will be as well).\n * @param {string} inputHex - the input to encode\n * @param {number} minLength - the minimum length of the c32 string\n * @returns {string} the c32check-encoded representation of the data, as a string\n */\nfunction c32encode(inputHex, minLength) {\n // must be hex\n if (!inputHex.match(/^[0-9a-fA-F]*$/)) {\n throw new Error('Not a hex-encoded string');\n }\n if (inputHex.length % 2 !== 0) {\n inputHex = `0${inputHex}`;\n }\n inputHex = inputHex.toLowerCase();\n let res = [];\n let carry = 0;\n for (let i = inputHex.length - 1; i >= 0; i--) {\n if (carry < 4) {\n const currentCode = hex.indexOf(inputHex[i]) >> carry;\n let nextCode = 0;\n if (i !== 0) {\n nextCode = hex.indexOf(inputHex[i - 1]);\n }\n // carry = 0, nextBits is 1, carry = 1, nextBits is 2\n const nextBits = 1 + carry;\n const nextLowBits = nextCode % (1 << nextBits) << (5 - nextBits);\n const curC32Digit = exports.c32[currentCode + nextLowBits];\n carry = nextBits;\n res.unshift(curC32Digit);\n }\n else {\n carry = 0;\n }\n }\n let C32leadingZeros = 0;\n for (let i = 0; i < res.length; i++) {\n if (res[i] !== '0') {\n break;\n }\n else {\n C32leadingZeros++;\n }\n }\n res = res.slice(C32leadingZeros);\n const zeroPrefix = new TextDecoder().decode((0, utils_1.hexToBytes)(inputHex)).match(/^\\u0000*/);\n const numLeadingZeroBytesInHex = zeroPrefix ? zeroPrefix[0].length : 0;\n for (let i = 0; i < numLeadingZeroBytesInHex; i++) {\n res.unshift(exports.c32[0]);\n }\n if (minLength) {\n const count = minLength - res.length;\n for (let i = 0; i < count; i++) {\n res.unshift(exports.c32[0]);\n }\n }\n return res.join('');\n}\nexports.c32encode = c32encode;\n/*\n * Normalize a c32 string\n * @param {string} c32input - the c32-encoded input string\n * @returns {string} the canonical representation of the c32 input string\n */\nfunction c32normalize(c32input) {\n // must be upper-case\n // replace all O's with 0's\n // replace all I's and L's with 1's\n return c32input.toUpperCase().replace(/O/g, '0').replace(/L|I/g, '1');\n}\nexports.c32normalize = c32normalize;\n/*\n * Decode a c32 string back into a hex string. Note that the c32 input\n * string is assumed to be big-endian (and the resulting hex string will\n * be as well).\n * @param {string} c32input - the c32-encoded input to decode\n * @param {number} minLength - the minimum length of the output hex string (in bytes)\n * @returns {string} the hex-encoded representation of the data, as a string\n */\nfunction c32decode(c32input, minLength) {\n c32input = c32normalize(c32input);\n // must result in a c32 string\n if (!c32input.match(`^[${exports.c32}]*$`)) {\n throw new Error('Not a c32-encoded string');\n }\n const zeroPrefix = c32input.match(`^${exports.c32[0]}*`);\n const numLeadingZeroBytes = zeroPrefix ? zeroPrefix[0].length : 0;\n let res = [];\n let carry = 0;\n let carryBits = 0;\n for (let i = c32input.length - 1; i >= 0; i--) {\n if (carryBits === 4) {\n res.unshift(hex[carry]);\n carryBits = 0;\n carry = 0;\n }\n const currentCode = exports.c32.indexOf(c32input[i]) << carryBits;\n const currentValue = currentCode + carry;\n const currentHexDigit = hex[currentValue % 16];\n carryBits += 1;\n carry = currentValue >> 4;\n if (carry > 1 << carryBits) {\n throw new Error('Panic error in decoding.');\n }\n res.unshift(currentHexDigit);\n }\n // one last carry\n res.unshift(hex[carry]);\n if (res.length % 2 === 1) {\n res.unshift('0');\n }\n let hexLeadingZeros = 0;\n for (let i = 0; i < res.length; i++) {\n if (res[i] !== '0') {\n break;\n }\n else {\n hexLeadingZeros++;\n }\n }\n res = res.slice(hexLeadingZeros - (hexLeadingZeros % 2));\n let hexStr = res.join('');\n for (let i = 0; i < numLeadingZeroBytes; i++) {\n hexStr = `00${hexStr}`;\n }\n if (minLength) {\n const count = minLength * 2 - hexStr.length;\n for (let i = 0; i < count; i += 2) {\n hexStr = `00${hexStr}`;\n }\n }\n return hexStr;\n}\nexports.c32decode = c32decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.c32checkDecode = exports.c32checkEncode = void 0;\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst encoding_1 = require(\"./encoding\");\n/**\n * Get the c32check checksum of a hex-encoded string\n * @param {string} dataHex - the hex string\n * @returns {string} the c32 checksum, as a bin-encoded string\n */\nfunction c32checksum(dataHex) {\n const dataHash = (0, sha256_1.sha256)((0, sha256_1.sha256)((0, utils_1.hexToBytes)(dataHex)));\n const checksum = (0, utils_1.bytesToHex)(dataHash.slice(0, 4));\n return checksum;\n}\n/**\n * Encode a hex string as a c32check string. This is a lot like how\n * base58check works in Bitcoin-land, but this algorithm uses the\n * z-base-32 alphabet instead of the base58 alphabet. The algorithm\n * is as follows:\n * * calculate the c32checksum of version + data\n * * c32encode version + data + c32checksum\n * @param {number} version - the version string (between 0 and 31)\n * @param {string} data - the data to encode\n * @returns {string} the c32check representation\n */\nfunction c32checkEncode(version, data) {\n if (version < 0 || version >= 32) {\n throw new Error('Invalid version (must be between 0 and 31)');\n }\n if (!data.match(/^[0-9a-fA-F]*$/)) {\n throw new Error('Invalid data (not a hex string)');\n }\n data = data.toLowerCase();\n if (data.length % 2 !== 0) {\n data = `0${data}`;\n }\n let versionHex = version.toString(16);\n if (versionHex.length === 1) {\n versionHex = `0${versionHex}`;\n }\n const checksumHex = c32checksum(`${versionHex}${data}`);\n const c32str = (0, encoding_1.c32encode)(`${data}${checksumHex}`);\n return `${encoding_1.c32[version]}${c32str}`;\n}\nexports.c32checkEncode = c32checkEncode;\n/*\n * Decode a c32check string back into its version and data payload. This is\n * a lot like how base58check works in Bitcoin-land, but this algorithm uses\n * the z-base-32 alphabet instead of the base58 alphabet. The algorithm\n * is as follows:\n * * extract the version, data, and checksum\n * * verify the checksum matches c32checksum(version + data)\n * * return data\n * @param {string} c32data - the c32check-encoded string\n * @returns {array} [version (number), data (string)]. The returned data\n * will be a hex string. Throws an exception if the checksum does not match.\n */\nfunction c32checkDecode(c32data) {\n c32data = (0, encoding_1.c32normalize)(c32data);\n const dataHex = (0, encoding_1.c32decode)(c32data.slice(1));\n const versionChar = c32data[0];\n const version = encoding_1.c32.indexOf(versionChar);\n const checksum = dataHex.slice(-8);\n let versionHex = version.toString(16);\n if (versionHex.length === 1) {\n versionHex = `0${versionHex}`;\n }\n if (c32checksum(`${versionHex}${dataHex.substring(0, dataHex.length - 8)}`) !== checksum) {\n throw new Error('Invalid c32check string: checksum mismatch');\n }\n return [version, dataHex.substring(0, dataHex.length - 8)];\n}\nexports.c32checkDecode = c32checkDecode;\n","/*\n * From https://github.com/wzbg/base58check\n * @Author: zyc\n * @Date: 2016-09-11 23:36:05\n */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst basex = require(\"base-x\");\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nfunction encode(data, prefix = '00') {\n const dataBytes = typeof data === 'string' ? (0, utils_1.hexToBytes)(data) : data;\n const prefixBytes = typeof prefix === 'string' ? (0, utils_1.hexToBytes)(prefix) : data;\n if (!(dataBytes instanceof Uint8Array) || !(prefixBytes instanceof Uint8Array)) {\n throw new TypeError('Argument must be of type Uint8Array or string');\n }\n const checksum = (0, sha256_1.sha256)((0, sha256_1.sha256)(new Uint8Array([...prefixBytes, ...dataBytes])));\n return basex(ALPHABET).encode([...prefixBytes, ...dataBytes, ...checksum.slice(0, 4)]);\n}\nexports.encode = encode;\nfunction decode(string) {\n const bytes = basex(ALPHABET).decode(string);\n const prefixBytes = bytes.slice(0, 1);\n const dataBytes = bytes.slice(1, -4);\n // todo: for better performance replace spread with `concatBytes` method\n const checksum = (0, sha256_1.sha256)((0, sha256_1.sha256)(new Uint8Array([...prefixBytes, ...dataBytes])));\n bytes.slice(-4).forEach((check, index) => {\n if (check !== checksum[index]) {\n throw new Error('Invalid checksum');\n }\n });\n return { prefix: prefixBytes, data: dataBytes };\n}\nexports.decode = decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.c32ToB58 = exports.b58ToC32 = exports.c32addressDecode = exports.c32address = exports.versions = void 0;\nconst checksum_1 = require(\"./checksum\");\nconst base58check = require(\"./base58check\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nexports.versions = {\n mainnet: {\n p2pkh: 22,\n p2sh: 20, // 'M'\n },\n testnet: {\n p2pkh: 26,\n p2sh: 21, // 'N'\n },\n};\n// address conversion : bitcoin to stacks\nconst ADDR_BITCOIN_TO_STACKS = {};\nADDR_BITCOIN_TO_STACKS[0] = exports.versions.mainnet.p2pkh;\nADDR_BITCOIN_TO_STACKS[5] = exports.versions.mainnet.p2sh;\nADDR_BITCOIN_TO_STACKS[111] = exports.versions.testnet.p2pkh;\nADDR_BITCOIN_TO_STACKS[196] = exports.versions.testnet.p2sh;\n// address conversion : stacks to bitcoin\nconst ADDR_STACKS_TO_BITCOIN = {};\nADDR_STACKS_TO_BITCOIN[exports.versions.mainnet.p2pkh] = 0;\nADDR_STACKS_TO_BITCOIN[exports.versions.mainnet.p2sh] = 5;\nADDR_STACKS_TO_BITCOIN[exports.versions.testnet.p2pkh] = 111;\nADDR_STACKS_TO_BITCOIN[exports.versions.testnet.p2sh] = 196;\n/**\n * Make a c32check address with the given version and hash160\n * The only difference between a c32check string and c32 address\n * is that the letter 'S' is pre-pended.\n * @param {number} version - the address version number\n * @param {string} hash160hex - the hash160 to encode (must be a hash160)\n * @returns {string} the address\n */\nfunction c32address(version, hash160hex) {\n if (!hash160hex.match(/^[0-9a-fA-F]{40}$/)) {\n throw new Error('Invalid argument: not a hash160 hex string');\n }\n const c32string = (0, checksum_1.c32checkEncode)(version, hash160hex);\n return `S${c32string}`;\n}\nexports.c32address = c32address;\n/**\n * Decode a c32 address into its version and hash160\n * @param {string} c32addr - the c32check-encoded address\n * @returns {[number, string]} a tuple with the version and hash160\n */\nfunction c32addressDecode(c32addr) {\n if (c32addr.length <= 5) {\n throw new Error('Invalid c32 address: invalid length');\n }\n if (c32addr[0] != 'S') {\n throw new Error('Invalid c32 address: must start with \"S\"');\n }\n return (0, checksum_1.c32checkDecode)(c32addr.slice(1));\n}\nexports.c32addressDecode = c32addressDecode;\n/*\n * Convert a base58check address to a c32check address.\n * Try to convert the version number if one is not given.\n * @param {string} b58check - the base58check encoded address\n * @param {number} version - the version number, if not inferred from the address\n * @returns {string} the c32 address with the given version number (or the\n * semantically-equivalent c32 version number, if not given)\n */\nfunction b58ToC32(b58check, version = -1) {\n const addrInfo = base58check.decode(b58check);\n const hash160String = (0, utils_1.bytesToHex)(addrInfo.data);\n const addrVersion = parseInt((0, utils_1.bytesToHex)(addrInfo.prefix), 16);\n let stacksVersion;\n if (version < 0) {\n stacksVersion = addrVersion;\n if (ADDR_BITCOIN_TO_STACKS[addrVersion] !== undefined) {\n stacksVersion = ADDR_BITCOIN_TO_STACKS[addrVersion];\n }\n }\n else {\n stacksVersion = version;\n }\n return c32address(stacksVersion, hash160String);\n}\nexports.b58ToC32 = b58ToC32;\n/*\n * Convert a c32check address to a base58check address.\n * @param {string} c32string - the c32check address\n * @param {number} version - the version number, if not inferred from the address\n * @returns {string} the base58 address with the given version number (or the\n * semantically-equivalent bitcoin version number, if not given)\n */\nfunction c32ToB58(c32string, version = -1) {\n const addrInfo = c32addressDecode(c32string);\n const stacksVersion = addrInfo[0];\n const hash160String = addrInfo[1];\n let bitcoinVersion;\n if (version < 0) {\n bitcoinVersion = stacksVersion;\n if (ADDR_STACKS_TO_BITCOIN[stacksVersion] !== undefined) {\n bitcoinVersion = ADDR_STACKS_TO_BITCOIN[stacksVersion];\n }\n }\n else {\n bitcoinVersion = version;\n }\n let prefix = bitcoinVersion.toString(16);\n if (prefix.length === 1) {\n prefix = `0${prefix}`;\n }\n return base58check.encode(hash160String, prefix);\n}\nexports.c32ToB58 = c32ToB58;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.b58ToC32 = exports.c32ToB58 = exports.versions = exports.c32normalize = exports.c32addressDecode = exports.c32address = exports.c32checkDecode = exports.c32checkEncode = exports.c32decode = exports.c32encode = void 0;\nconst encoding_1 = require(\"./encoding\");\nObject.defineProperty(exports, \"c32encode\", { enumerable: true, get: function () { return encoding_1.c32encode; } });\nObject.defineProperty(exports, \"c32decode\", { enumerable: true, get: function () { return encoding_1.c32decode; } });\nObject.defineProperty(exports, \"c32normalize\", { enumerable: true, get: function () { return encoding_1.c32normalize; } });\nconst checksum_1 = require(\"./checksum\");\nObject.defineProperty(exports, \"c32checkEncode\", { enumerable: true, get: function () { return checksum_1.c32checkEncode; } });\nObject.defineProperty(exports, \"c32checkDecode\", { enumerable: true, get: function () { return checksum_1.c32checkDecode; } });\nconst address_1 = require(\"./address\");\nObject.defineProperty(exports, \"c32address\", { enumerable: true, get: function () { return address_1.c32address; } });\nObject.defineProperty(exports, \"c32addressDecode\", { enumerable: true, get: function () { return address_1.c32addressDecode; } });\nObject.defineProperty(exports, \"c32ToB58\", { enumerable: true, get: function () { return address_1.c32ToB58; } });\nObject.defineProperty(exports, \"b58ToC32\", { enumerable: true, get: function () { return address_1.b58ToC32; } });\nObject.defineProperty(exports, \"versions\", { enumerable: true, get: function () { return address_1.versions; } });\n","import { STACKS_MAINNET, TransactionVersion, networkFrom, } from '@stacks/network';\nimport { AddressHashMode, AddressVersion } from './constants';\nexport function addressHashModeToVersion(hashMode, network) {\n network = networkFrom(network ?? STACKS_MAINNET);\n switch (hashMode) {\n case AddressHashMode.P2PKH:\n switch (network.transactionVersion) {\n case TransactionVersion.Mainnet:\n return AddressVersion.MainnetSingleSig;\n case TransactionVersion.Testnet:\n return AddressVersion.TestnetSingleSig;\n default:\n throw new Error(`Unexpected transactionVersion ${network.transactionVersion} for hashMode ${hashMode}`);\n }\n case AddressHashMode.P2SH:\n case AddressHashMode.P2SHNonSequential:\n case AddressHashMode.P2WPKH:\n case AddressHashMode.P2WSH:\n case AddressHashMode.P2WSHNonSequential:\n switch (network.transactionVersion) {\n case TransactionVersion.Mainnet:\n return AddressVersion.MainnetMultiSig;\n case TransactionVersion.Testnet:\n return AddressVersion.TestnetMultiSig;\n default:\n throw new Error(`Unexpected transactionVersion ${network.transactionVersion} for hashMode ${hashMode}`);\n }\n default:\n throw new Error(`Unexpected hashMode ${hashMode}`);\n }\n}\n//# sourceMappingURL=address.js.map","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","export var ClarityType;\n(function (ClarityType) {\n ClarityType[\"Int\"] = \"int\";\n ClarityType[\"UInt\"] = \"uint\";\n ClarityType[\"Buffer\"] = \"buffer\";\n ClarityType[\"BoolTrue\"] = \"true\";\n ClarityType[\"BoolFalse\"] = \"false\";\n ClarityType[\"PrincipalStandard\"] = \"address\";\n ClarityType[\"PrincipalContract\"] = \"contract\";\n ClarityType[\"ResponseOk\"] = \"ok\";\n ClarityType[\"ResponseErr\"] = \"err\";\n ClarityType[\"OptionalNone\"] = \"none\";\n ClarityType[\"OptionalSome\"] = \"some\";\n ClarityType[\"List\"] = \"list\";\n ClarityType[\"Tuple\"] = \"tuple\";\n ClarityType[\"StringASCII\"] = \"ascii\";\n ClarityType[\"StringUTF8\"] = \"utf8\";\n})(ClarityType || (ClarityType = {}));\nexport var ClarityWireType;\n(function (ClarityWireType) {\n ClarityWireType[ClarityWireType[\"int\"] = 0] = \"int\";\n ClarityWireType[ClarityWireType[\"uint\"] = 1] = \"uint\";\n ClarityWireType[ClarityWireType[\"buffer\"] = 2] = \"buffer\";\n ClarityWireType[ClarityWireType[\"true\"] = 3] = \"true\";\n ClarityWireType[ClarityWireType[\"false\"] = 4] = \"false\";\n ClarityWireType[ClarityWireType[\"address\"] = 5] = \"address\";\n ClarityWireType[ClarityWireType[\"contract\"] = 6] = \"contract\";\n ClarityWireType[ClarityWireType[\"ok\"] = 7] = \"ok\";\n ClarityWireType[ClarityWireType[\"err\"] = 8] = \"err\";\n ClarityWireType[ClarityWireType[\"none\"] = 9] = \"none\";\n ClarityWireType[ClarityWireType[\"some\"] = 10] = \"some\";\n ClarityWireType[ClarityWireType[\"list\"] = 11] = \"list\";\n ClarityWireType[ClarityWireType[\"tuple\"] = 12] = \"tuple\";\n ClarityWireType[ClarityWireType[\"ascii\"] = 13] = \"ascii\";\n ClarityWireType[ClarityWireType[\"utf8\"] = 14] = \"utf8\";\n})(ClarityWireType || (ClarityWireType = {}));\nexport function clarityTypeToByte(type) {\n return ClarityWireType[type];\n}\nexport function clarityByteToType(wireType) {\n return ClarityWireType[wireType];\n}\n//# sourceMappingURL=constants.js.map","import { ClarityType } from '../constants';\nexport const trueCV = () => ({ type: ClarityType.BoolTrue });\nexport const falseCV = () => ({ type: ClarityType.BoolFalse });\nexport const boolCV = (bool) => (bool ? trueCV() : falseCV());\n//# sourceMappingURL=booleanCV.js.map","import { bytesToHex, utf8ToBytes } from '@stacks/common';\nimport { ClarityType } from '../constants';\nexport const bufferCV = (buffer) => {\n if (buffer.byteLength > 1048576) {\n throw new Error('Cannot construct clarity buffer that is greater than 1MB');\n }\n return { type: ClarityType.Buffer, value: bytesToHex(buffer) };\n};\nexport const bufferCVFromString = (str) => bufferCV(utf8ToBytes(str));\n//# sourceMappingURL=bufferCV.js.map","import { bytesToTwosBigInt, hexToBytes, intToBigInt, isInstance, } from '@stacks/common';\nimport { ClarityType } from '../constants';\nconst MAX_U128 = BigInt('0xffffffffffffffffffffffffffffffff');\nconst MIN_U128 = BigInt(0);\nconst MAX_I128 = BigInt('0x7fffffffffffffffffffffffffffffff');\nconst MIN_I128 = BigInt('-170141183460469231731687303715884105728');\nexport const intCV = (value) => {\n if (typeof value === 'string' && value.toLowerCase().startsWith('0x')) {\n value = bytesToTwosBigInt(hexToBytes(value));\n }\n if (isInstance(value, Uint8Array))\n value = bytesToTwosBigInt(value);\n const bigInt = intToBigInt(value);\n if (bigInt > MAX_I128) {\n throw new RangeError(`Cannot construct clarity integer from value greater than ${MAX_I128}`);\n }\n else if (bigInt < MIN_I128) {\n throw new RangeError(`Cannot construct clarity integer form value less than ${MIN_I128}`);\n }\n return { type: ClarityType.Int, value: bigInt };\n};\nexport const uintCV = (value) => {\n const bigInt = intToBigInt(value);\n if (bigInt < MIN_U128) {\n throw new RangeError('Cannot construct unsigned clarity integer from negative value');\n }\n else if (bigInt > MAX_U128) {\n throw new RangeError(`Cannot construct unsigned clarity integer greater than ${MAX_U128}`);\n }\n return { type: ClarityType.UInt, value: bigInt };\n};\n//# sourceMappingURL=intCV.js.map","import { ClarityType } from '../constants';\nexport function listCV(values) {\n return { type: ClarityType.List, value: values };\n}\n//# sourceMappingURL=listCV.js.map","import { ClarityType } from '../constants';\nexport function noneCV() {\n return { type: ClarityType.OptionalNone };\n}\nexport function someCV(value) {\n return { type: ClarityType.OptionalSome, value };\n}\nexport function optionalCVOf(value) {\n return value ? someCV(value) : noneCV();\n}\n//# sourceMappingURL=optionalCV.js.map","export var StacksWireType;\n(function (StacksWireType) {\n StacksWireType[StacksWireType[\"Address\"] = 0] = \"Address\";\n StacksWireType[StacksWireType[\"Principal\"] = 1] = \"Principal\";\n StacksWireType[StacksWireType[\"LengthPrefixedString\"] = 2] = \"LengthPrefixedString\";\n StacksWireType[StacksWireType[\"MemoString\"] = 3] = \"MemoString\";\n StacksWireType[StacksWireType[\"Asset\"] = 4] = \"Asset\";\n StacksWireType[StacksWireType[\"PostCondition\"] = 5] = \"PostCondition\";\n StacksWireType[StacksWireType[\"PublicKey\"] = 6] = \"PublicKey\";\n StacksWireType[StacksWireType[\"LengthPrefixedList\"] = 7] = \"LengthPrefixedList\";\n StacksWireType[StacksWireType[\"Payload\"] = 8] = \"Payload\";\n StacksWireType[StacksWireType[\"MessageSignature\"] = 9] = \"MessageSignature\";\n StacksWireType[StacksWireType[\"StructuredDataSignature\"] = 10] = \"StructuredDataSignature\";\n StacksWireType[StacksWireType[\"TransactionAuthField\"] = 11] = \"TransactionAuthField\";\n})(StacksWireType || (StacksWireType = {}));\nexport function whenWireType(wireType) {\n return (wireTypeMap) => wireTypeMap[wireType];\n}\n//# sourceMappingURL=types.js.map","import { hexToBytes, intToBigInt } from '@stacks/common';\nimport { c32addressDecode } from 'c32check';\nimport { ClarityType, principalCV } from '../clarity';\nimport { AddressVersion, COINBASE_BYTES_LENGTH, MAX_STRING_LENGTH_BYTES, MEMO_MAX_LENGTH_BYTES, PayloadType, PostConditionPrincipalId, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, VRF_PROOF_BYTES_LENGTH, } from '../constants';\nimport { exceedsMaxLengthBytes } from '../utils';\nimport { StacksWireType, } from './types';\nexport function createEmptyAddress() {\n return {\n type: StacksWireType.Address,\n version: AddressVersion.MainnetSingleSig,\n hash160: '0'.repeat(40),\n };\n}\nexport function createMemoString(content) {\n if (content && exceedsMaxLengthBytes(content, MEMO_MAX_LENGTH_BYTES)) {\n throw new Error(`Memo exceeds maximum length of ${MEMO_MAX_LENGTH_BYTES} bytes`);\n }\n return { type: StacksWireType.MemoString, content };\n}\nexport function createLPList(values, lengthPrefixBytes) {\n return {\n type: StacksWireType.LengthPrefixedList,\n lengthPrefixBytes: lengthPrefixBytes || 4,\n values,\n };\n}\nexport function createMessageSignature(signature) {\n const length = hexToBytes(signature).byteLength;\n if (length != RECOVERABLE_ECDSA_SIG_LENGTH_BYTES) {\n throw Error('Invalid signature');\n }\n return {\n type: StacksWireType.MessageSignature,\n data: signature,\n };\n}\nexport function createTokenTransferPayload(recipient, amount, memo) {\n if (typeof recipient === 'string') {\n recipient = principalCV(recipient);\n }\n if (typeof memo === 'string') {\n memo = createMemoString(memo);\n }\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.TokenTransfer,\n recipient,\n amount: intToBigInt(amount),\n memo: memo ?? createMemoString(''),\n };\n}\nexport function createContractCallPayload(contractAddress, contractName, functionName, functionArgs) {\n if (typeof contractName === 'string') {\n contractName = createLPString(contractName);\n }\n if (typeof functionName === 'string') {\n functionName = createLPString(functionName);\n }\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.ContractCall,\n contractAddress: typeof contractAddress === 'string' ? createAddress(contractAddress) : contractAddress,\n contractName,\n functionName,\n functionArgs,\n };\n}\nexport function codeBodyString(content) {\n return createLPString(content, 4, 100000);\n}\nexport function createSmartContractPayload(contractName, codeBody, clarityVersion) {\n if (typeof contractName === 'string') {\n contractName = createLPString(contractName);\n }\n if (typeof codeBody === 'string') {\n codeBody = codeBodyString(codeBody);\n }\n if (typeof clarityVersion === 'number') {\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.VersionedSmartContract,\n clarityVersion,\n contractName,\n codeBody,\n };\n }\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.SmartContract,\n contractName,\n codeBody,\n };\n}\nexport function createPoisonPayload() {\n return { type: StacksWireType.Payload, payloadType: PayloadType.PoisonMicroblock };\n}\nexport function createCoinbasePayload(coinbaseBytes, altRecipient) {\n if (coinbaseBytes.byteLength != COINBASE_BYTES_LENGTH) {\n throw Error(`Coinbase buffer size must be ${COINBASE_BYTES_LENGTH} bytes`);\n }\n if (altRecipient != undefined) {\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.CoinbaseToAltRecipient,\n coinbaseBytes,\n recipient: altRecipient,\n };\n }\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.Coinbase,\n coinbaseBytes,\n };\n}\nexport function createNakamotoCoinbasePayload(coinbaseBytes, recipient, vrfProof) {\n if (coinbaseBytes.byteLength != COINBASE_BYTES_LENGTH) {\n throw Error(`Coinbase buffer size must be ${COINBASE_BYTES_LENGTH} bytes`);\n }\n if (vrfProof.byteLength != VRF_PROOF_BYTES_LENGTH) {\n throw Error(`VRF proof buffer size must be ${VRF_PROOF_BYTES_LENGTH} bytes`);\n }\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.NakamotoCoinbase,\n coinbaseBytes,\n recipient: recipient.type === ClarityType.OptionalSome ? recipient.value : undefined,\n vrfProof,\n };\n}\nexport function createTenureChangePayload(tenureHash, previousTenureHash, burnViewHash, previousTenureEnd, previousTenureBlocks, cause, publicKeyHash) {\n return {\n type: StacksWireType.Payload,\n payloadType: PayloadType.TenureChange,\n tenureHash,\n previousTenureHash,\n burnViewHash,\n previousTenureEnd,\n previousTenureBlocks,\n cause,\n publicKeyHash,\n };\n}\nexport function createLPString(content, lengthPrefixBytes, maxLengthBytes) {\n const prefixLength = lengthPrefixBytes || 1;\n const maxLength = maxLengthBytes || MAX_STRING_LENGTH_BYTES;\n if (exceedsMaxLengthBytes(content, maxLength)) {\n throw new Error(`String length exceeds maximum bytes ${maxLength}`);\n }\n return {\n type: StacksWireType.LengthPrefixedString,\n content,\n lengthPrefixBytes: prefixLength,\n maxLengthBytes: maxLength,\n };\n}\nexport function createAsset(addressString, contractName, assetName) {\n return {\n type: StacksWireType.Asset,\n address: createAddress(addressString),\n contractName: createLPString(contractName),\n assetName: createLPString(assetName),\n };\n}\nexport function createAddress(c32AddressString) {\n const addressData = c32addressDecode(c32AddressString);\n return {\n type: StacksWireType.Address,\n version: addressData[0],\n hash160: addressData[1],\n };\n}\nexport function createContractPrincipal(addressString, contractName) {\n const addr = createAddress(addressString);\n const name = createLPString(contractName);\n return {\n type: StacksWireType.Principal,\n prefix: PostConditionPrincipalId.Contract,\n address: addr,\n contractName: name,\n };\n}\nexport function createStandardPrincipal(addressString) {\n const addr = createAddress(addressString);\n return {\n type: StacksWireType.Principal,\n prefix: PostConditionPrincipalId.Standard,\n address: addr,\n };\n}\nexport function createTransactionAuthField(pubKeyEncoding, contents) {\n return {\n pubKeyEncoding,\n type: StacksWireType.TransactionAuthField,\n contents,\n };\n}\n//# sourceMappingURL=create.js.map","import { bytesToHex, bytesToUtf8, concatArray, hexToBytes, hexToInt, intToBigInt, intToBytes, intToHex, isInstance, utf8ToBytes, writeUInt32BE, writeUInt8, } from '@stacks/common';\nimport { BytesReader } from '../BytesReader';\nimport { deserializeCV, noneCV, serializeCVBytes, someCV, } from '../clarity';\nimport { AuthFieldType, COINBASE_BYTES_LENGTH, COMPRESSED_PUBKEY_LENGTH_BYTES, ClarityVersion, FungibleConditionCode, STRING_MAX_LENGTH, MEMO_MAX_LENGTH_BYTES, NonFungibleConditionCode, PayloadType, PostConditionPrincipalId, PostConditionType, PubKeyEncoding, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, TenureChangeCause, UNCOMPRESSED_PUBKEY_LENGTH_BYTES, VRF_PROOF_BYTES_LENGTH, } from '../constants';\nimport { DeserializationError, SerializationError } from '../errors';\nimport { compressPublicKey, createStacksPublicKey, uncompressPublicKey } from '../keys';\nimport { rightPadHexToLength } from '../utils';\nimport { createCoinbasePayload, createContractCallPayload, createLPList, createLPString, createMessageSignature, createNakamotoCoinbasePayload, createPoisonPayload, createSmartContractPayload, createTenureChangePayload, createTokenTransferPayload, createTransactionAuthField, } from './create';\nimport { StacksWireType, } from './types';\nexport function serializeStacksWire(wire) {\n return bytesToHex(serializeStacksWireBytes(wire));\n}\nexport function serializeStacksWireBytes(wire) {\n switch (wire.type) {\n case StacksWireType.Address:\n return serializeAddressBytes(wire);\n case StacksWireType.Principal:\n return serializePrincipalBytes(wire);\n case StacksWireType.LengthPrefixedString:\n return serializeLPStringBytes(wire);\n case StacksWireType.MemoString:\n return serializeMemoStringBytes(wire);\n case StacksWireType.Asset:\n return serializeAssetBytes(wire);\n case StacksWireType.PostCondition:\n return serializePostConditionWireBytes(wire);\n case StacksWireType.PublicKey:\n return serializePublicKeyBytes(wire);\n case StacksWireType.LengthPrefixedList:\n return serializeLPListBytes(wire);\n case StacksWireType.Payload:\n return serializePayloadBytes(wire);\n case StacksWireType.TransactionAuthField:\n return serializeTransactionAuthFieldBytes(wire);\n case StacksWireType.MessageSignature:\n return serializeMessageSignatureBytes(wire);\n }\n}\nexport function deserializeStacksWire(bytesReader, type, listType) {\n switch (type) {\n case StacksWireType.Address:\n return deserializeAddress(bytesReader);\n case StacksWireType.Principal:\n return deserializePrincipal(bytesReader);\n case StacksWireType.LengthPrefixedString:\n return deserializeLPString(bytesReader);\n case StacksWireType.MemoString:\n return deserializeMemoString(bytesReader);\n case StacksWireType.Asset:\n return deserializeAsset(bytesReader);\n case StacksWireType.PostCondition:\n return deserializePostConditionWire(bytesReader);\n case StacksWireType.PublicKey:\n return deserializePublicKey(bytesReader);\n case StacksWireType.Payload:\n return deserializePayload(bytesReader);\n case StacksWireType.LengthPrefixedList:\n if (!listType) {\n throw new DeserializationError('No list type specified');\n }\n return deserializeLPList(bytesReader, listType);\n case StacksWireType.MessageSignature:\n return deserializeMessageSignature(bytesReader);\n default:\n throw new Error('Could not recognize StacksWireType');\n }\n}\nexport function serializeAddress(address) {\n return bytesToHex(serializeAddressBytes(address));\n}\nexport function serializeAddressBytes(address) {\n const bytesArray = [];\n bytesArray.push(hexToBytes(intToHex(address.version, 1)));\n bytesArray.push(hexToBytes(address.hash160));\n return concatArray(bytesArray);\n}\nexport function deserializeAddress(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const version = hexToInt(bytesToHex(bytesReader.readBytes(1)));\n const data = bytesToHex(bytesReader.readBytes(20));\n return { type: StacksWireType.Address, version, hash160: data };\n}\nexport function serializePrincipal(principal) {\n return bytesToHex(serializePrincipalBytes(principal));\n}\nexport function serializePrincipalBytes(principal) {\n const bytesArray = [];\n bytesArray.push(principal.prefix);\n if (principal.prefix === PostConditionPrincipalId.Standard ||\n principal.prefix === PostConditionPrincipalId.Contract) {\n bytesArray.push(serializeAddressBytes(principal.address));\n }\n if (principal.prefix === PostConditionPrincipalId.Contract) {\n bytesArray.push(serializeLPStringBytes(principal.contractName));\n }\n return concatArray(bytesArray);\n}\nexport function deserializePrincipal(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const prefix = bytesReader.readUInt8Enum(PostConditionPrincipalId, n => {\n throw new DeserializationError(`Unexpected Principal payload type: ${n}`);\n });\n if (prefix === PostConditionPrincipalId.Origin) {\n return { type: StacksWireType.Principal, prefix };\n }\n const address = deserializeAddress(bytesReader);\n if (prefix === PostConditionPrincipalId.Standard) {\n return { type: StacksWireType.Principal, prefix, address };\n }\n const contractName = deserializeLPString(bytesReader);\n return {\n type: StacksWireType.Principal,\n prefix,\n address,\n contractName,\n };\n}\nexport function serializeLPString(lps) {\n return bytesToHex(serializeLPStringBytes(lps));\n}\nexport function serializeLPStringBytes(lps) {\n const bytesArray = [];\n const contentBytes = utf8ToBytes(lps.content);\n const length = contentBytes.byteLength;\n bytesArray.push(hexToBytes(intToHex(length, lps.lengthPrefixBytes)));\n bytesArray.push(contentBytes);\n return concatArray(bytesArray);\n}\nexport function deserializeLPString(serialized, prefixBytes, maxLength) {\n prefixBytes = prefixBytes ? prefixBytes : 1;\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const length = hexToInt(bytesToHex(bytesReader.readBytes(prefixBytes)));\n const content = bytesToUtf8(bytesReader.readBytes(length));\n return createLPString(content, prefixBytes, maxLength ?? 128);\n}\nexport function serializeMemoString(memoString) {\n return bytesToHex(serializeMemoStringBytes(memoString));\n}\nexport function serializeMemoStringBytes(memoString) {\n const bytesArray = [];\n const contentBytes = utf8ToBytes(memoString.content);\n const paddedContent = rightPadHexToLength(bytesToHex(contentBytes), MEMO_MAX_LENGTH_BYTES * 2);\n bytesArray.push(hexToBytes(paddedContent));\n return concatArray(bytesArray);\n}\nexport function deserializeMemoString(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n let content = bytesToUtf8(bytesReader.readBytes(MEMO_MAX_LENGTH_BYTES));\n content = content.replace(/\\u0000*$/, '');\n return { type: StacksWireType.MemoString, content };\n}\nexport function serializeAsset(info) {\n return bytesToHex(serializeAssetBytes(info));\n}\nexport function serializeAssetBytes(info) {\n const bytesArray = [];\n bytesArray.push(serializeAddressBytes(info.address));\n bytesArray.push(serializeLPStringBytes(info.contractName));\n bytesArray.push(serializeLPStringBytes(info.assetName));\n return concatArray(bytesArray);\n}\nexport function deserializeAsset(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n return {\n type: StacksWireType.Asset,\n address: deserializeAddress(bytesReader),\n contractName: deserializeLPString(bytesReader),\n assetName: deserializeLPString(bytesReader),\n };\n}\nexport function serializeLPList(lpList) {\n return bytesToHex(serializeLPListBytes(lpList));\n}\nexport function serializeLPListBytes(lpList) {\n const list = lpList.values;\n const bytesArray = [];\n bytesArray.push(hexToBytes(intToHex(list.length, lpList.lengthPrefixBytes)));\n for (const l of list) {\n bytesArray.push(serializeStacksWireBytes(l));\n }\n return concatArray(bytesArray);\n}\nexport function deserializeLPList(serialized, type, lengthPrefixBytes) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const length = hexToInt(bytesToHex(bytesReader.readBytes(lengthPrefixBytes || 4)));\n const l = [];\n for (let index = 0; index < length; index++) {\n switch (type) {\n case StacksWireType.Address:\n l.push(deserializeAddress(bytesReader));\n break;\n case StacksWireType.LengthPrefixedString:\n l.push(deserializeLPString(bytesReader));\n break;\n case StacksWireType.MemoString:\n l.push(deserializeMemoString(bytesReader));\n break;\n case StacksWireType.Asset:\n l.push(deserializeAsset(bytesReader));\n break;\n case StacksWireType.PostCondition:\n l.push(deserializePostConditionWire(bytesReader));\n break;\n case StacksWireType.PublicKey:\n l.push(deserializePublicKey(bytesReader));\n break;\n case StacksWireType.TransactionAuthField:\n l.push(deserializeTransactionAuthField(bytesReader));\n break;\n }\n }\n return createLPList(l, lengthPrefixBytes);\n}\nexport function serializePostConditionWire(postCondition) {\n return bytesToHex(serializePostConditionWireBytes(postCondition));\n}\nexport function serializePostConditionWireBytes(postCondition) {\n const bytesArray = [];\n bytesArray.push(postCondition.conditionType);\n bytesArray.push(serializePrincipalBytes(postCondition.principal));\n if (postCondition.conditionType === PostConditionType.Fungible ||\n postCondition.conditionType === PostConditionType.NonFungible) {\n bytesArray.push(serializeAssetBytes(postCondition.asset));\n }\n if (postCondition.conditionType === PostConditionType.NonFungible) {\n bytesArray.push(serializeCVBytes(postCondition.assetName));\n }\n bytesArray.push(postCondition.conditionCode);\n if (postCondition.conditionType === PostConditionType.STX ||\n postCondition.conditionType === PostConditionType.Fungible) {\n if (postCondition.amount > BigInt('0xffffffffffffffff'))\n throw new SerializationError('The post-condition amount may not be larger than 8 bytes');\n bytesArray.push(intToBytes(postCondition.amount, 8));\n }\n return concatArray(bytesArray);\n}\nexport function deserializePostConditionWire(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const postConditionType = bytesReader.readUInt8Enum(PostConditionType, n => {\n throw new DeserializationError(`Could not read ${n} as PostConditionType`);\n });\n const principal = deserializePrincipal(bytesReader);\n let conditionCode;\n let asset;\n let amount;\n switch (postConditionType) {\n case PostConditionType.STX:\n conditionCode = bytesReader.readUInt8Enum(FungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n amount = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.STX,\n principal,\n conditionCode,\n amount,\n };\n case PostConditionType.Fungible:\n asset = deserializeAsset(bytesReader);\n conditionCode = bytesReader.readUInt8Enum(FungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n amount = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.Fungible,\n principal,\n conditionCode,\n amount,\n asset: asset,\n };\n case PostConditionType.NonFungible:\n asset = deserializeAsset(bytesReader);\n const assetName = deserializeCV(bytesReader);\n conditionCode = bytesReader.readUInt8Enum(NonFungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.NonFungible,\n principal,\n conditionCode,\n asset,\n assetName,\n };\n }\n}\nexport function serializePayload(payload) {\n return bytesToHex(serializePayloadBytes(payload));\n}\nexport function serializePayloadBytes(payload) {\n const bytesArray = [];\n bytesArray.push(payload.payloadType);\n switch (payload.payloadType) {\n case PayloadType.TokenTransfer:\n bytesArray.push(serializeCVBytes(payload.recipient));\n bytesArray.push(intToBytes(payload.amount, 8));\n bytesArray.push(serializeStacksWireBytes(payload.memo));\n break;\n case PayloadType.ContractCall:\n bytesArray.push(serializeStacksWireBytes(payload.contractAddress));\n bytesArray.push(serializeStacksWireBytes(payload.contractName));\n bytesArray.push(serializeStacksWireBytes(payload.functionName));\n const numArgs = new Uint8Array(4);\n writeUInt32BE(numArgs, payload.functionArgs.length, 0);\n bytesArray.push(numArgs);\n payload.functionArgs.forEach(arg => {\n bytesArray.push(serializeCVBytes(arg));\n });\n break;\n case PayloadType.SmartContract:\n bytesArray.push(serializeStacksWireBytes(payload.contractName));\n bytesArray.push(serializeStacksWireBytes(payload.codeBody));\n break;\n case PayloadType.VersionedSmartContract:\n bytesArray.push(payload.clarityVersion);\n bytesArray.push(serializeStacksWireBytes(payload.contractName));\n bytesArray.push(serializeStacksWireBytes(payload.codeBody));\n break;\n case PayloadType.PoisonMicroblock:\n break;\n case PayloadType.Coinbase:\n bytesArray.push(payload.coinbaseBytes);\n break;\n case PayloadType.CoinbaseToAltRecipient:\n bytesArray.push(payload.coinbaseBytes);\n bytesArray.push(serializeCVBytes(payload.recipient));\n break;\n case PayloadType.NakamotoCoinbase:\n bytesArray.push(payload.coinbaseBytes);\n bytesArray.push(serializeCVBytes(payload.recipient ? someCV(payload.recipient) : noneCV()));\n bytesArray.push(payload.vrfProof);\n break;\n case PayloadType.TenureChange:\n bytesArray.push(hexToBytes(payload.tenureHash));\n bytesArray.push(hexToBytes(payload.previousTenureHash));\n bytesArray.push(hexToBytes(payload.burnViewHash));\n bytesArray.push(hexToBytes(payload.previousTenureEnd));\n bytesArray.push(writeUInt32BE(new Uint8Array(4), payload.previousTenureBlocks));\n bytesArray.push(writeUInt8(new Uint8Array(1), payload.cause));\n bytesArray.push(hexToBytes(payload.publicKeyHash));\n break;\n }\n return concatArray(bytesArray);\n}\nexport function deserializePayload(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const payloadType = bytesReader.readUInt8Enum(PayloadType, n => {\n throw new Error(`Cannot recognize PayloadType: ${n}`);\n });\n switch (payloadType) {\n case PayloadType.TokenTransfer:\n const recipient = deserializeCV(bytesReader);\n const amount = intToBigInt(bytesReader.readBytes(8));\n const memo = deserializeMemoString(bytesReader);\n return createTokenTransferPayload(recipient, amount, memo);\n case PayloadType.ContractCall:\n const contractAddress = deserializeAddress(bytesReader);\n const contractCallName = deserializeLPString(bytesReader);\n const functionName = deserializeLPString(bytesReader);\n const functionArgs = [];\n const numberOfArgs = bytesReader.readUInt32BE();\n for (let i = 0; i < numberOfArgs; i++) {\n const clarityValue = deserializeCV(bytesReader);\n functionArgs.push(clarityValue);\n }\n return createContractCallPayload(contractAddress, contractCallName, functionName, functionArgs);\n case PayloadType.SmartContract:\n const smartContractName = deserializeLPString(bytesReader);\n const codeBody = deserializeLPString(bytesReader, 4, 100000);\n return createSmartContractPayload(smartContractName, codeBody);\n case PayloadType.VersionedSmartContract: {\n const clarityVersion = bytesReader.readUInt8Enum(ClarityVersion, n => {\n throw new Error(`Cannot recognize ClarityVersion: ${n}`);\n });\n const smartContractName = deserializeLPString(bytesReader);\n const codeBody = deserializeLPString(bytesReader, 4, STRING_MAX_LENGTH);\n return createSmartContractPayload(smartContractName, codeBody, clarityVersion);\n }\n case PayloadType.PoisonMicroblock:\n return createPoisonPayload();\n case PayloadType.Coinbase: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n return createCoinbasePayload(coinbaseBytes);\n }\n case PayloadType.CoinbaseToAltRecipient: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n const altRecipient = deserializeCV(bytesReader);\n return createCoinbasePayload(coinbaseBytes, altRecipient);\n }\n case PayloadType.NakamotoCoinbase: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n const recipient = deserializeCV(bytesReader);\n const vrfProof = bytesReader.readBytes(VRF_PROOF_BYTES_LENGTH);\n return createNakamotoCoinbasePayload(coinbaseBytes, recipient, vrfProof);\n }\n case PayloadType.TenureChange:\n const tenureHash = bytesToHex(bytesReader.readBytes(20));\n const previousTenureHash = bytesToHex(bytesReader.readBytes(20));\n const burnViewHash = bytesToHex(bytesReader.readBytes(20));\n const previousTenureEnd = bytesToHex(bytesReader.readBytes(32));\n const previousTenureBlocks = bytesReader.readUInt32BE();\n const cause = bytesReader.readUInt8Enum(TenureChangeCause, n => {\n throw new Error(`Cannot recognize TenureChangeCause: ${n}`);\n });\n const publicKeyHash = bytesToHex(bytesReader.readBytes(20));\n return createTenureChangePayload(tenureHash, previousTenureHash, burnViewHash, previousTenureEnd, previousTenureBlocks, cause, publicKeyHash);\n }\n}\nexport function deserializeMessageSignature(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n return createMessageSignature(bytesToHex(bytesReader.readBytes(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES)));\n}\nexport function deserializeTransactionAuthField(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const authFieldType = bytesReader.readUInt8Enum(AuthFieldType, n => {\n throw new DeserializationError(`Could not read ${n} as AuthFieldType`);\n });\n switch (authFieldType) {\n case AuthFieldType.PublicKeyCompressed:\n return createTransactionAuthField(PubKeyEncoding.Compressed, deserializePublicKey(bytesReader));\n case AuthFieldType.PublicKeyUncompressed:\n return createTransactionAuthField(PubKeyEncoding.Uncompressed, createStacksPublicKey(uncompressPublicKey(deserializePublicKey(bytesReader).data)));\n case AuthFieldType.SignatureCompressed:\n return createTransactionAuthField(PubKeyEncoding.Compressed, deserializeMessageSignature(bytesReader));\n case AuthFieldType.SignatureUncompressed:\n return createTransactionAuthField(PubKeyEncoding.Uncompressed, deserializeMessageSignature(bytesReader));\n default:\n throw new Error(`Unknown auth field type: ${JSON.stringify(authFieldType)}`);\n }\n}\nexport function serializeMessageSignature(messageSignature) {\n return bytesToHex(serializeMessageSignatureBytes(messageSignature));\n}\nexport function serializeMessageSignatureBytes(messageSignature) {\n return hexToBytes(messageSignature.data);\n}\nexport function serializeTransactionAuthField(field) {\n return bytesToHex(serializeTransactionAuthFieldBytes(field));\n}\nexport function serializeTransactionAuthFieldBytes(field) {\n const bytesArray = [];\n switch (field.contents.type) {\n case StacksWireType.PublicKey:\n bytesArray.push(field.pubKeyEncoding === PubKeyEncoding.Compressed\n ? AuthFieldType.PublicKeyCompressed\n : AuthFieldType.PublicKeyUncompressed);\n bytesArray.push(hexToBytes(compressPublicKey(field.contents.data)));\n break;\n case StacksWireType.MessageSignature:\n bytesArray.push(field.pubKeyEncoding === PubKeyEncoding.Compressed\n ? AuthFieldType.SignatureCompressed\n : AuthFieldType.SignatureUncompressed);\n bytesArray.push(serializeMessageSignatureBytes(field.contents));\n break;\n }\n return concatArray(bytesArray);\n}\nexport function serializePublicKey(key) {\n return bytesToHex(serializePublicKeyBytes(key));\n}\nexport function serializePublicKeyBytes(key) {\n return key.data.slice();\n}\nexport function deserializePublicKey(serialized) {\n const bytesReader = isInstance(serialized, BytesReader)\n ? serialized\n : new BytesReader(serialized);\n const fieldId = bytesReader.readUInt8();\n const keyLength = fieldId === 4 ? UNCOMPRESSED_PUBKEY_LENGTH_BYTES : COMPRESSED_PUBKEY_LENGTH_BYTES;\n return createStacksPublicKey(concatArray([fieldId, bytesReader.readBytes(keyLength)]));\n}\n//# sourceMappingURL=serialization.js.map","import { c32address } from 'c32check';\nimport { AddressHashMode, PayloadType } from '../constants';\nimport { publicKeyIsCompressed } from '../keys';\nimport { hashP2PKH, hashP2SH, hashP2WPKH, hashP2WSH } from '../utils';\nimport { createAsset, createContractPrincipal, createStandardPrincipal } from './create';\nimport { serializePublicKeyBytes } from './serialization';\nimport { StacksWireType, } from './types';\nexport function addressFromPublicKeys(version, hashMode, numSigs, publicKeys) {\n if (publicKeys.length === 0) {\n throw Error('Invalid number of public keys');\n }\n if (hashMode === AddressHashMode.P2PKH || hashMode === AddressHashMode.P2WPKH) {\n if (publicKeys.length !== 1 || numSigs !== 1) {\n throw Error('Invalid number of public keys or signatures');\n }\n }\n if (hashMode === AddressHashMode.P2WPKH ||\n hashMode === AddressHashMode.P2WSH ||\n hashMode === AddressHashMode.P2WSHNonSequential) {\n if (!publicKeys.map(p => p.data).every(publicKeyIsCompressed)) {\n throw Error('Public keys must be compressed for segwit');\n }\n }\n switch (hashMode) {\n case AddressHashMode.P2PKH:\n return addressFromVersionHash(version, hashP2PKH(publicKeys[0].data));\n case AddressHashMode.P2WPKH:\n return addressFromVersionHash(version, hashP2WPKH(publicKeys[0].data));\n case AddressHashMode.P2SH:\n case AddressHashMode.P2SHNonSequential:\n return addressFromVersionHash(version, hashP2SH(numSigs, publicKeys.map(serializePublicKeyBytes)));\n case AddressHashMode.P2WSH:\n case AddressHashMode.P2WSHNonSequential:\n return addressFromVersionHash(version, hashP2WSH(numSigs, publicKeys.map(serializePublicKeyBytes)));\n }\n}\nexport function addressFromVersionHash(version, hash) {\n return { type: StacksWireType.Address, version, hash160: hash };\n}\nexport function addressToString(address) {\n return c32address(address.version, address.hash160);\n}\nexport function isTokenTransferPayload(p) {\n return p.payloadType === PayloadType.TokenTransfer;\n}\nexport function isContractCallPayload(p) {\n return p.payloadType === PayloadType.ContractCall;\n}\nexport function isSmartContractPayload(p) {\n return p.payloadType === PayloadType.SmartContract;\n}\nexport function isPoisonPayload(p) {\n return p.payloadType === PayloadType.PoisonMicroblock;\n}\nexport function isCoinbasePayload(p) {\n return p.payloadType === PayloadType.Coinbase;\n}\nexport function parseAssetString(id) {\n const [assetAddress, assetContractName, assetTokenName] = id.split(/\\.|::/);\n const asset = createAsset(assetAddress, assetContractName, assetTokenName);\n return asset;\n}\nexport function parsePrincipalString(principalString) {\n if (principalString.includes('.')) {\n const [address, contractName] = principalString.split('.');\n return createContractPrincipal(address, contractName);\n }\n else {\n return createStandardPrincipal(principalString);\n }\n}\n//# sourceMappingURL=helpers.js.map","import { utf8ToBytes } from '@stacks/common';\nimport { addressToString, createAddress, createLPString, } from '../../wire';\nimport { ClarityType } from '../constants';\nexport function principalCV(principal) {\n if (principal.includes('.')) {\n const [address, contractName] = principal.split('.');\n return contractPrincipalCV(address, contractName);\n }\n else {\n return standardPrincipalCV(principal);\n }\n}\nexport function standardPrincipalCV(addressString) {\n const addr = createAddress(addressString);\n return { type: ClarityType.PrincipalStandard, value: addressToString(addr) };\n}\nexport function standardPrincipalCVFromAddress(address) {\n return { type: ClarityType.PrincipalStandard, value: addressToString(address) };\n}\nexport function contractPrincipalCV(addressString, contractName) {\n const addr = createAddress(addressString);\n const lengthPrefixedContractName = createLPString(contractName);\n return contractPrincipalCVFromAddress(addr, lengthPrefixedContractName);\n}\nexport function contractPrincipalCVFromAddress(address, contractName) {\n if (utf8ToBytes(contractName.content).byteLength >= 128) {\n throw new Error('Contract name must be less than 128 bytes');\n }\n return {\n type: ClarityType.PrincipalContract,\n value: `${addressToString(address)}.${contractName.content}`,\n };\n}\nexport function contractPrincipalCVFromStandard(sp, contractName) {\n return {\n type: ClarityType.PrincipalContract,\n value: `${sp.value}.${contractName}`,\n };\n}\n//# sourceMappingURL=principalCV.js.map","import { ClarityType } from '../constants';\nexport function responseErrorCV(value) {\n return { type: ClarityType.ResponseErr, value };\n}\nexport function responseOkCV(value) {\n return { type: ClarityType.ResponseOk, value };\n}\n//# sourceMappingURL=responseCV.js.map","import { ClarityType } from '../constants';\nexport const stringAsciiCV = (data) => {\n return { type: ClarityType.StringASCII, value: data };\n};\nexport const stringUtf8CV = (data) => {\n return { type: ClarityType.StringUTF8, value: data };\n};\nexport const stringCV = (data, encoding) => {\n switch (encoding) {\n case 'ascii':\n return stringAsciiCV(data);\n case 'utf8':\n return stringUtf8CV(data);\n }\n};\n//# sourceMappingURL=stringCV.js.map","import { ClarityType } from '../constants';\nimport { isClarityName } from '../../utils';\nexport function tupleCV(data) {\n for (const key in data) {\n if (!isClarityName(key)) {\n throw new Error(`\"${key}\" is not a valid Clarity name`);\n }\n }\n return { type: ClarityType.Tuple, value: data };\n}\n//# sourceMappingURL=tupleCV.js.map","import { bytesToAscii, bytesToTwosBigInt, bytesToUtf8, hexToBytes } from '@stacks/common';\nimport { ClarityWireType, bufferCV, contractPrincipalCVFromAddress, falseCV, intCV, listCV, noneCV, responseErrorCV, responseOkCV, someCV, standardPrincipalCVFromAddress, stringAsciiCV, stringUtf8CV, trueCV, tupleCV, uintCV, } from '.';\nimport { BytesReader } from '../BytesReader';\nimport { DeserializationError } from '../errors';\nimport { deserializeAddress, deserializeLPString } from '../wire';\nexport function deserializeCV(serializedClarityValue) {\n let bytesReader;\n if (typeof serializedClarityValue === 'string') {\n const hasHexPrefix = serializedClarityValue.slice(0, 2).toLowerCase() === '0x';\n bytesReader = new BytesReader(hexToBytes(hasHexPrefix ? serializedClarityValue.slice(2) : serializedClarityValue));\n }\n else if (serializedClarityValue instanceof Uint8Array) {\n bytesReader = new BytesReader(serializedClarityValue);\n }\n else {\n bytesReader = serializedClarityValue;\n }\n const type = bytesReader.readUInt8Enum(ClarityWireType, n => {\n throw new DeserializationError(`Cannot recognize Clarity Type: ${n}`);\n });\n switch (type) {\n case ClarityWireType.int:\n return intCV(bytesToTwosBigInt(bytesReader.readBytes(16)));\n case ClarityWireType.uint:\n return uintCV(bytesReader.readBytes(16));\n case ClarityWireType.buffer:\n const bufferLength = bytesReader.readUInt32BE();\n return bufferCV(bytesReader.readBytes(bufferLength));\n case ClarityWireType.true:\n return trueCV();\n case ClarityWireType.false:\n return falseCV();\n case ClarityWireType.address:\n const sAddress = deserializeAddress(bytesReader);\n return standardPrincipalCVFromAddress(sAddress);\n case ClarityWireType.contract:\n const cAddress = deserializeAddress(bytesReader);\n const contractName = deserializeLPString(bytesReader);\n return contractPrincipalCVFromAddress(cAddress, contractName);\n case ClarityWireType.ok:\n return responseOkCV(deserializeCV(bytesReader));\n case ClarityWireType.err:\n return responseErrorCV(deserializeCV(bytesReader));\n case ClarityWireType.none:\n return noneCV();\n case ClarityWireType.some:\n return someCV(deserializeCV(bytesReader));\n case ClarityWireType.list:\n const listLength = bytesReader.readUInt32BE();\n const listContents = [];\n for (let i = 0; i < listLength; i++) {\n listContents.push(deserializeCV(bytesReader));\n }\n return listCV(listContents);\n case ClarityWireType.tuple:\n const tupleLength = bytesReader.readUInt32BE();\n const tupleContents = {};\n for (let i = 0; i < tupleLength; i++) {\n const clarityName = deserializeLPString(bytesReader).content;\n if (clarityName === undefined) {\n throw new DeserializationError('\"content\" is undefined');\n }\n tupleContents[clarityName] = deserializeCV(bytesReader);\n }\n return tupleCV(tupleContents);\n case ClarityWireType.ascii:\n const asciiStrLen = bytesReader.readUInt32BE();\n const asciiStr = bytesToAscii(bytesReader.readBytes(asciiStrLen));\n return stringAsciiCV(asciiStr);\n case ClarityWireType.utf8:\n const utf8StrLen = bytesReader.readUInt32BE();\n const utf8Str = bytesToUtf8(bytesReader.readBytes(utf8StrLen));\n return stringUtf8CV(utf8Str);\n default:\n throw new DeserializationError('Unable to deserialize Clarity Value from Uint8Array. Could not find valid Clarity Type.');\n }\n}\n//# sourceMappingURL=deserialize.js.map","import { asciiToBytes, bigIntToBytes, bytesToHex, concatArray, concatBytes, hexToBytes, toTwos, utf8ToBytes, writeUInt32BE, } from '@stacks/common';\nimport { CLARITY_INT_BYTE_SIZE, CLARITY_INT_SIZE } from '../constants';\nimport { SerializationError } from '../errors';\nimport { parseContractId } from '../utils';\nimport { createAddress, createLPString, serializeAddressBytes, serializeLPStringBytes, } from '../wire';\nimport { ClarityType, clarityTypeToByte } from './constants';\nfunction bytesWithTypeID(typeId, bytes) {\n return concatArray([clarityTypeToByte(typeId), bytes]);\n}\nfunction serializeBoolCV(value) {\n return new Uint8Array([clarityTypeToByte(value.type)]);\n}\nfunction serializeOptionalCV(cv) {\n if (cv.type === ClarityType.OptionalNone) {\n return new Uint8Array([clarityTypeToByte(cv.type)]);\n }\n else {\n return bytesWithTypeID(cv.type, serializeCVBytes(cv.value));\n }\n}\nfunction serializeBufferCV(cv) {\n const length = new Uint8Array(4);\n writeUInt32BE(length, Math.ceil(cv.value.length / 2), 0);\n return bytesWithTypeID(cv.type, concatBytes(length, hexToBytes(cv.value)));\n}\nfunction serializeIntCV(cv) {\n const bytes = bigIntToBytes(toTwos(BigInt(cv.value), BigInt(CLARITY_INT_SIZE)), CLARITY_INT_BYTE_SIZE);\n return bytesWithTypeID(cv.type, bytes);\n}\nfunction serializeUIntCV(cv) {\n const bytes = bigIntToBytes(BigInt(cv.value), CLARITY_INT_BYTE_SIZE);\n return bytesWithTypeID(cv.type, bytes);\n}\nfunction serializeStandardPrincipalCV(cv) {\n return bytesWithTypeID(cv.type, serializeAddressBytes(createAddress(cv.value)));\n}\nfunction serializeContractPrincipalCV(cv) {\n const [address, name] = parseContractId(cv.value);\n return bytesWithTypeID(cv.type, concatBytes(serializeAddressBytes(createAddress(address)), serializeLPStringBytes(createLPString(name))));\n}\nfunction serializeResponseCV(cv) {\n return bytesWithTypeID(cv.type, serializeCVBytes(cv.value));\n}\nfunction serializeListCV(cv) {\n const bytesArray = [];\n const length = new Uint8Array(4);\n writeUInt32BE(length, cv.value.length, 0);\n bytesArray.push(length);\n for (const value of cv.value) {\n const serializedValue = serializeCVBytes(value);\n bytesArray.push(serializedValue);\n }\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeTupleCV(cv) {\n const bytesArray = [];\n const length = new Uint8Array(4);\n writeUInt32BE(length, Object.keys(cv.value).length, 0);\n bytesArray.push(length);\n const lexicographicOrder = Object.keys(cv.value).sort((a, b) => a.localeCompare(b));\n for (const key of lexicographicOrder) {\n const nameWithLength = createLPString(key);\n bytesArray.push(serializeLPStringBytes(nameWithLength));\n const serializedValue = serializeCVBytes(cv.value[key]);\n bytesArray.push(serializedValue);\n }\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeStringCV(cv, encoding) {\n const bytesArray = [];\n const str = encoding == 'ascii' ? asciiToBytes(cv.value) : utf8ToBytes(cv.value);\n const len = new Uint8Array(4);\n writeUInt32BE(len, str.length, 0);\n bytesArray.push(len);\n bytesArray.push(str);\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeStringAsciiCV(cv) {\n return serializeStringCV(cv, 'ascii');\n}\nfunction serializeStringUtf8CV(cv) {\n return serializeStringCV(cv, 'utf8');\n}\nexport function serializeCV(value) {\n return bytesToHex(serializeCVBytes(value));\n}\nexport function serializeCVBytes(value) {\n switch (value.type) {\n case ClarityType.BoolTrue:\n case ClarityType.BoolFalse:\n return serializeBoolCV(value);\n case ClarityType.OptionalNone:\n case ClarityType.OptionalSome:\n return serializeOptionalCV(value);\n case ClarityType.Buffer:\n return serializeBufferCV(value);\n case ClarityType.UInt:\n return serializeUIntCV(value);\n case ClarityType.Int:\n return serializeIntCV(value);\n case ClarityType.PrincipalStandard:\n return serializeStandardPrincipalCV(value);\n case ClarityType.PrincipalContract:\n return serializeContractPrincipalCV(value);\n case ClarityType.ResponseOk:\n case ClarityType.ResponseErr:\n return serializeResponseCV(value);\n case ClarityType.List:\n return serializeListCV(value);\n case ClarityType.Tuple:\n return serializeTupleCV(value);\n case ClarityType.StringASCII:\n return serializeStringAsciiCV(value);\n case ClarityType.StringUTF8:\n return serializeStringUtf8CV(value);\n default:\n throw new SerializationError('Unable to serialize. Invalid Clarity Value.');\n }\n}\n//# sourceMappingURL=serialize.js.map","import { ripemd160 } from '@noble/hashes/ripemd160';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512_256 } from '@noble/hashes/sha512';\nimport { utils } from '@noble/secp256k1';\nimport { bytesToHex, concatArray, concatBytes, utf8ToBytes } from '@stacks/common';\nimport { c32addressDecode } from 'c32check';\nimport lodashCloneDeep from 'lodash.clonedeep';\nimport { deserializeCV, serializeCV } from './clarity';\nexport { verify as verifySignature } from '@noble/secp256k1';\nexport const randomBytes = (bytesLength) => utils.randomBytes(bytesLength);\nexport const leftPadHex = (hexString) => hexString.length % 2 ? `0${hexString}` : hexString;\nexport const leftPadHexToLength = (hexString, length) => hexString.padStart(length, '0');\nexport const rightPadHexToLength = (hexString, length) => hexString.padEnd(length, '0');\nexport const exceedsMaxLengthBytes = (string, maxLengthBytes) => string ? utf8ToBytes(string).length > maxLengthBytes : false;\nexport function cloneDeep(obj) {\n return lodashCloneDeep(obj);\n}\nexport function omit(obj, prop) {\n const clone = cloneDeep(obj);\n delete clone[prop];\n return clone;\n}\nexport const hash160 = (input) => {\n return ripemd160(sha256(input));\n};\nexport const txidFromData = (data) => {\n return bytesToHex(sha512_256(data));\n};\nexport const txidFromBytes = txidFromData;\nexport const hashP2PKH = (input) => {\n return bytesToHex(hash160(input));\n};\nexport const hashP2WPKH = (input) => {\n const keyHash = hash160(input);\n const redeemScript = concatBytes(new Uint8Array([0]), new Uint8Array([keyHash.length]), keyHash);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport const hashP2SH = (numSigs, pubKeys) => {\n if (numSigs > 15 || pubKeys.length > 15) {\n throw Error('P2SH multisig address can only contain up to 15 public keys');\n }\n const bytesArray = [];\n bytesArray.push(80 + numSigs);\n pubKeys.forEach(pubKey => {\n bytesArray.push(pubKey.length);\n bytesArray.push(pubKey);\n });\n bytesArray.push(80 + pubKeys.length);\n bytesArray.push(174);\n const redeemScript = concatArray(bytesArray);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport const hashP2WSH = (numSigs, pubKeys) => {\n if (numSigs > 15 || pubKeys.length > 15) {\n throw Error('P2WSH multisig address can only contain up to 15 public keys');\n }\n const scriptArray = [];\n scriptArray.push(80 + numSigs);\n pubKeys.forEach(pubKey => {\n scriptArray.push(pubKey.length);\n scriptArray.push(pubKey);\n });\n scriptArray.push(80 + pubKeys.length);\n scriptArray.push(174);\n const script = concatArray(scriptArray);\n const digest = sha256(script);\n const bytesArray = [];\n bytesArray.push(0);\n bytesArray.push(digest.length);\n bytesArray.push(digest);\n const redeemScript = concatArray(bytesArray);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport function isClarityName(name) {\n const regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n return regex.test(name) && name.length < 128;\n}\nexport function cvToHex(cv) {\n const serialized = serializeCV(cv);\n return `0x${serialized}`;\n}\nexport function hexToCV(hex) {\n return deserializeCV(hex);\n}\nexport const parseReadOnlyResponse = (response) => {\n if (response.okay)\n return hexToCV(response.result);\n throw new Error(response.cause);\n};\nexport const validateStacksAddress = (address) => {\n try {\n c32addressDecode(address);\n return true;\n }\n catch (e) {\n return false;\n }\n};\nexport function parseContractId(contractId) {\n const [address, name] = contractId.split('.');\n if (!address || !name)\n throw new Error(`Invalid contract identifier: ${contractId}`);\n return [address, name];\n}\n//# sourceMappingURL=utils.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { getPublicKey as nobleGetPublicKey, Point, Signature, signSync, utils, } from '@noble/secp256k1';\nimport { bytesToHex, hexToBigInt, hexToBytes, intToHex, parseRecoverableSignatureVrs, PRIVATE_KEY_BYTES_COMPRESSED, privateKeyToBytes, signatureRsvToVrs, signatureVrsToRsv, } from '@stacks/common';\nimport { networkFrom, STACKS_MAINNET } from '@stacks/network';\nimport { c32address } from 'c32check';\nimport { addressHashModeToVersion } from './address';\nimport { AddressHashMode, PubKeyEncoding } from './constants';\nimport { hash160, hashP2PKH } from './utils';\nimport { addressFromVersionHash, addressToString, StacksWireType } from './wire';\nutils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac.create(sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\nexport function getAddressFromPrivateKey(privateKey, network = 'mainnet') {\n network = networkFrom(network);\n const publicKey = privateKeyToPublic(privateKey);\n return getAddressFromPublicKey(publicKey, network);\n}\nexport function getAddressFromPublicKey(publicKey, network = 'mainnet') {\n network = networkFrom(network);\n publicKey = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;\n const addrVer = addressHashModeToVersion(AddressHashMode.P2PKH, network);\n const addr = addressFromVersionHash(addrVer, hashP2PKH(publicKey));\n const addrString = addressToString(addr);\n return addrString;\n}\nexport function createStacksPublicKey(publicKey) {\n publicKey = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;\n return {\n type: StacksWireType.PublicKey,\n data: publicKey,\n };\n}\nexport function publicKeyFromSignatureVrs(messageHash, messageSignature, pubKeyEncoding = PubKeyEncoding.Compressed) {\n const parsedSignature = parseRecoverableSignatureVrs(messageSignature);\n const signature = new Signature(hexToBigInt(parsedSignature.r), hexToBigInt(parsedSignature.s));\n const point = Point.fromSignature(messageHash, signature, parsedSignature.recoveryId);\n const compressed = pubKeyEncoding === PubKeyEncoding.Compressed;\n return point.toHex(compressed);\n}\nexport function publicKeyFromSignatureRsv(messageHash, messageSignature, pubKeyEncoding = PubKeyEncoding.Compressed) {\n return publicKeyFromSignatureVrs(messageHash, signatureRsvToVrs(messageSignature), pubKeyEncoding);\n}\nexport function privateKeyToHex(publicKey) {\n return typeof publicKey === 'string' ? publicKey : bytesToHex(publicKey);\n}\nexport const publicKeyToHex = privateKeyToHex;\nexport const isPrivateKeyCompressed = privateKeyIsCompressed;\nexport function privateKeyIsCompressed(privateKey) {\n const length = typeof privateKey === 'string' ? privateKey.length / 2 : privateKey.byteLength;\n return length === PRIVATE_KEY_BYTES_COMPRESSED;\n}\nexport const isPublicKeyCompressed = publicKeyIsCompressed;\nexport function publicKeyIsCompressed(publicKey) {\n return !publicKeyToHex(publicKey).startsWith('04');\n}\nexport function privateKeyToPublic(privateKey) {\n privateKey = privateKeyToBytes(privateKey);\n const isCompressed = privateKeyIsCompressed(privateKey);\n return bytesToHex(nobleGetPublicKey(privateKey.slice(0, 32), isCompressed));\n}\nexport function compressPublicKey(publicKey) {\n return Point.fromHex(publicKeyToHex(publicKey)).toHex(true);\n}\nexport function uncompressPublicKey(publicKey) {\n return Point.fromHex(publicKeyToHex(publicKey)).toHex(false);\n}\nexport const makeRandomPrivKey = randomPrivateKey;\nexport function randomPrivateKey() {\n return compressPrivateKey(utils.randomPrivateKey());\n}\nexport function signWithKey(privateKey, messageHash) {\n privateKey = privateKeyToBytes(privateKey);\n const [rawSignature, recoveryId] = signSync(messageHash, privateKey.slice(0, 32), {\n canonical: true,\n recovered: true,\n });\n if (recoveryId == null) {\n throw new Error('No signature recoveryId received');\n }\n const recoveryIdHex = intToHex(recoveryId, 1);\n return recoveryIdHex + Signature.fromHex(rawSignature).toCompactHex();\n}\nexport function signMessageHashRsv({ messageHash, privateKey, }) {\n return signatureVrsToRsv(signWithKey(privateKey, messageHash));\n}\nexport function compressPrivateKey(privateKey) {\n privateKey = privateKeyToHex(privateKey);\n return privateKey.length == PRIVATE_KEY_BYTES_COMPRESSED * 2\n ? privateKey\n : `${privateKey}01`;\n}\nexport function privateKeyToAddress(privateKey, network) {\n const publicKey = privateKeyToPublic(privateKey);\n return publicKeyToAddressSingleSig(publicKey, network);\n}\nexport function publicKeyToAddress(...args) {\n if (typeof args[0] === 'number')\n return _publicKeyToAddress(...args);\n return publicKeyToAddressSingleSig(...args);\n}\nfunction _publicKeyToAddress(version, publicKey) {\n publicKey = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;\n return c32address(version, bytesToHex(hash160(publicKey)));\n}\nexport function publicKeyToAddressSingleSig(publicKey, network) {\n network = network ? networkFrom(network) : STACKS_MAINNET;\n publicKey = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;\n return c32address(network.addressVersion.singleSig, bytesToHex(hash160(publicKey)));\n}\n//# sourceMappingURL=keys.js.map","import { bytesToHex, concatArray, hexToBytes, intToBigInt, intToBytes, writeUInt16BE, } from '@stacks/common';\nimport { AddressHashMode, AuthType, PubKeyEncoding, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, } from './constants';\nimport { DeserializationError, SigningError, VerificationError } from './errors';\nimport { createStacksPublicKey, privateKeyToPublic, publicKeyFromSignatureVrs, publicKeyIsCompressed, signWithKey, } from './keys';\nimport { cloneDeep, leftPadHex, txidFromData } from './utils';\nimport { addressFromPublicKeys, createEmptyAddress, createLPList, deserializeLPList, deserializeMessageSignature, serializeLPListBytes, serializeMessageSignatureBytes, StacksWireType, } from './wire';\nexport function emptyMessageSignature() {\n return {\n type: StacksWireType.MessageSignature,\n data: bytesToHex(new Uint8Array(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES)),\n };\n}\nexport function createSpendingCondition(options) {\n if ('publicKey' in options) {\n return createSingleSigSpendingCondition(AddressHashMode.P2PKH, options.publicKey, options.nonce, options.fee);\n }\n return createMultiSigSpendingCondition(AddressHashMode.P2SH, options.numSignatures, options.publicKeys, options.nonce, options.fee);\n}\nexport function createSingleSigSpendingCondition(hashMode, pubKey, nonce, fee) {\n const signer = addressFromPublicKeys(0, hashMode, 1, [createStacksPublicKey(pubKey)]).hash160;\n const keyEncoding = publicKeyIsCompressed(pubKey)\n ? PubKeyEncoding.Compressed\n : PubKeyEncoding.Uncompressed;\n return {\n hashMode,\n signer,\n nonce: intToBigInt(nonce),\n fee: intToBigInt(fee),\n keyEncoding,\n signature: emptyMessageSignature(),\n };\n}\nexport function createMultiSigSpendingCondition(hashMode, numSigs, pubKeys, nonce, fee) {\n const stacksPublicKeys = pubKeys.map(createStacksPublicKey);\n const signer = addressFromPublicKeys(0, hashMode, numSigs, stacksPublicKeys).hash160;\n return {\n hashMode,\n signer,\n nonce: intToBigInt(nonce),\n fee: intToBigInt(fee),\n fields: [],\n signaturesRequired: numSigs,\n };\n}\nexport function isSingleSig(condition) {\n return 'signature' in condition;\n}\nexport function isSequentialMultiSig(hashMode) {\n return hashMode === AddressHashMode.P2SH || hashMode === AddressHashMode.P2WSH;\n}\nexport function isNonSequentialMultiSig(hashMode) {\n return (hashMode === AddressHashMode.P2SHNonSequential ||\n hashMode === AddressHashMode.P2WSHNonSequential);\n}\nfunction clearCondition(condition) {\n const cloned = cloneDeep(condition);\n cloned.nonce = 0;\n cloned.fee = 0;\n if (isSingleSig(cloned)) {\n cloned.signature = emptyMessageSignature();\n }\n else {\n cloned.fields = [];\n }\n return {\n ...cloned,\n nonce: BigInt(0),\n fee: BigInt(0),\n };\n}\nexport function serializeSingleSigSpendingCondition(condition) {\n return bytesToHex(serializeSingleSigSpendingConditionBytes(condition));\n}\nexport function serializeSingleSigSpendingConditionBytes(condition) {\n const bytesArray = [\n condition.hashMode,\n hexToBytes(condition.signer),\n intToBytes(condition.nonce, 8),\n intToBytes(condition.fee, 8),\n condition.keyEncoding,\n serializeMessageSignatureBytes(condition.signature),\n ];\n return concatArray(bytesArray);\n}\nexport function serializeMultiSigSpendingCondition(condition) {\n return bytesToHex(serializeMultiSigSpendingConditionBytes(condition));\n}\nexport function serializeMultiSigSpendingConditionBytes(condition) {\n const bytesArray = [\n condition.hashMode,\n hexToBytes(condition.signer),\n intToBytes(condition.nonce, 8),\n intToBytes(condition.fee, 8),\n ];\n const fields = createLPList(condition.fields);\n bytesArray.push(serializeLPListBytes(fields));\n const numSigs = new Uint8Array(2);\n writeUInt16BE(numSigs, condition.signaturesRequired, 0);\n bytesArray.push(numSigs);\n return concatArray(bytesArray);\n}\nexport function deserializeSingleSigSpendingCondition(hashMode, bytesReader) {\n const signer = bytesToHex(bytesReader.readBytes(20));\n const nonce = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n const fee = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n const keyEncoding = bytesReader.readUInt8Enum(PubKeyEncoding, n => {\n throw new DeserializationError(`Could not parse ${n} as PubKeyEncoding`);\n });\n if (hashMode === AddressHashMode.P2WPKH && keyEncoding != PubKeyEncoding.Compressed) {\n throw new DeserializationError('Failed to parse singlesig spending condition: incomaptible hash mode and key encoding');\n }\n const signature = deserializeMessageSignature(bytesReader);\n return {\n hashMode,\n signer,\n nonce,\n fee,\n keyEncoding,\n signature,\n };\n}\nexport function deserializeMultiSigSpendingCondition(hashMode, bytesReader) {\n const signer = bytesToHex(bytesReader.readBytes(20));\n const nonce = BigInt('0x' + bytesToHex(bytesReader.readBytes(8)));\n const fee = BigInt('0x' + bytesToHex(bytesReader.readBytes(8)));\n const fields = deserializeLPList(bytesReader, StacksWireType.TransactionAuthField)\n .values;\n let haveUncompressed = false;\n let numSigs = 0;\n for (const field of fields) {\n switch (field.contents.type) {\n case StacksWireType.PublicKey:\n if (!publicKeyIsCompressed(field.contents.data))\n haveUncompressed = true;\n break;\n case StacksWireType.MessageSignature:\n if (field.pubKeyEncoding === PubKeyEncoding.Uncompressed)\n haveUncompressed = true;\n numSigs += 1;\n if (numSigs === 65536)\n throw new VerificationError('Failed to parse multisig spending condition: too many signatures');\n break;\n }\n }\n const signaturesRequired = bytesReader.readUInt16BE();\n if (haveUncompressed &&\n (hashMode === AddressHashMode.P2WSH || hashMode === AddressHashMode.P2WSHNonSequential)) {\n throw new VerificationError('Uncompressed keys are not allowed in this hash mode');\n }\n return {\n hashMode,\n signer,\n nonce,\n fee,\n fields,\n signaturesRequired,\n };\n}\nexport function serializeSpendingCondition(condition) {\n return bytesToHex(serializeSpendingConditionBytes(condition));\n}\nexport function serializeSpendingConditionBytes(condition) {\n if (isSingleSig(condition))\n return serializeSingleSigSpendingConditionBytes(condition);\n return serializeMultiSigSpendingConditionBytes(condition);\n}\nexport function deserializeSpendingCondition(bytesReader) {\n const hashMode = bytesReader.readUInt8Enum(AddressHashMode, n => {\n throw new DeserializationError(`Could not parse ${n} as AddressHashMode`);\n });\n if (hashMode === AddressHashMode.P2PKH || hashMode === AddressHashMode.P2WPKH) {\n return deserializeSingleSigSpendingCondition(hashMode, bytesReader);\n }\n else {\n return deserializeMultiSigSpendingCondition(hashMode, bytesReader);\n }\n}\nexport function sigHashPreSign(curSigHash, authType, fee, nonce) {\n const hashLength = 32 + 1 + 8 + 8;\n const sigHash = curSigHash +\n bytesToHex(new Uint8Array([authType])) +\n bytesToHex(intToBytes(fee, 8)) +\n bytesToHex(intToBytes(nonce, 8));\n if (hexToBytes(sigHash).byteLength !== hashLength) {\n throw Error('Invalid signature hash length');\n }\n return txidFromData(hexToBytes(sigHash));\n}\nfunction sigHashPostSign(curSigHash, pubKey, signature) {\n const hashLength = 32 + 1 + RECOVERABLE_ECDSA_SIG_LENGTH_BYTES;\n const pubKeyEncoding = publicKeyIsCompressed(pubKey.data)\n ? PubKeyEncoding.Compressed\n : PubKeyEncoding.Uncompressed;\n const sigHash = curSigHash + leftPadHex(pubKeyEncoding.toString(16)) + signature;\n const sigHashBytes = hexToBytes(sigHash);\n if (sigHashBytes.byteLength > hashLength) {\n throw Error('Invalid signature hash length');\n }\n return txidFromData(sigHashBytes);\n}\nexport function nextSignature(curSigHash, authType, fee, nonce, privateKey) {\n const sigHashPre = sigHashPreSign(curSigHash, authType, fee, nonce);\n const signature = signWithKey(privateKey, sigHashPre);\n const publicKey = createStacksPublicKey(privateKeyToPublic(privateKey));\n const nextSigHash = sigHashPostSign(sigHashPre, publicKey, signature);\n return {\n nextSig: signature,\n nextSigHash,\n };\n}\nexport function nextVerification(initialSigHash, authType, fee, nonce, pubKeyEncoding, signature) {\n const sigHashPre = sigHashPreSign(initialSigHash, authType, fee, nonce);\n const publicKey = createStacksPublicKey(publicKeyFromSignatureVrs(sigHashPre, signature, pubKeyEncoding));\n const nextSigHash = sigHashPostSign(sigHashPre, publicKey, signature);\n return {\n pubKey: publicKey,\n nextSigHash,\n };\n}\nfunction newInitialSigHash() {\n const spendingCondition = createSingleSigSpendingCondition(AddressHashMode.P2PKH, '', 0, 0);\n spendingCondition.signer = createEmptyAddress().hash160;\n spendingCondition.keyEncoding = PubKeyEncoding.Compressed;\n spendingCondition.signature = emptyMessageSignature();\n return spendingCondition;\n}\nfunction verify(condition, initialSigHash, authType) {\n if (isSingleSig(condition)) {\n return verifySingleSig(condition, initialSigHash, authType);\n }\n else {\n return verifyMultiSig(condition, initialSigHash, authType);\n }\n}\nfunction verifySingleSig(condition, initialSigHash, authType) {\n const { pubKey, nextSigHash } = nextVerification(initialSigHash, authType, condition.fee, condition.nonce, condition.keyEncoding, condition.signature.data);\n const addrBytes = addressFromPublicKeys(0, condition.hashMode, 1, [pubKey]).hash160;\n if (addrBytes !== condition.signer)\n throw new VerificationError(`Signer hash does not equal hash of public key(s): ${addrBytes} != ${condition.signer}`);\n return nextSigHash;\n}\nfunction verifyMultiSig(condition, initialSigHash, authType) {\n const publicKeys = [];\n let curSigHash = initialSigHash;\n let haveUncompressed = false;\n let numSigs = 0;\n for (const field of condition.fields) {\n switch (field.contents.type) {\n case StacksWireType.PublicKey:\n if (!publicKeyIsCompressed(field.contents.data))\n haveUncompressed = true;\n publicKeys.push(field.contents);\n break;\n case StacksWireType.MessageSignature:\n if (field.pubKeyEncoding === PubKeyEncoding.Uncompressed)\n haveUncompressed = true;\n const { pubKey, nextSigHash } = nextVerification(curSigHash, authType, condition.fee, condition.nonce, field.pubKeyEncoding, field.contents.data);\n if (isSequentialMultiSig(condition.hashMode)) {\n curSigHash = nextSigHash;\n }\n publicKeys.push(pubKey);\n numSigs += 1;\n if (numSigs === 65536)\n throw new VerificationError('Too many signatures');\n break;\n }\n }\n if ((isSequentialMultiSig(condition.hashMode) && numSigs !== condition.signaturesRequired) ||\n (isNonSequentialMultiSig(condition.hashMode) && numSigs < condition.signaturesRequired))\n throw new VerificationError('Incorrect number of signatures');\n if (haveUncompressed &&\n (condition.hashMode === AddressHashMode.P2WSH ||\n condition.hashMode === AddressHashMode.P2WSHNonSequential))\n throw new VerificationError('Uncompressed keys are not allowed in this hash mode');\n const addrBytes = addressFromPublicKeys(0, condition.hashMode, condition.signaturesRequired, publicKeys).hash160;\n if (addrBytes !== condition.signer)\n throw new VerificationError(`Signer hash does not equal hash of public key(s): ${addrBytes} != ${condition.signer}`);\n return curSigHash;\n}\nexport function createStandardAuth(spendingCondition) {\n return {\n authType: AuthType.Standard,\n spendingCondition,\n };\n}\nexport function createSponsoredAuth(spendingCondition, sponsorSpendingCondition) {\n return {\n authType: AuthType.Sponsored,\n spendingCondition,\n sponsorSpendingCondition: sponsorSpendingCondition\n ? sponsorSpendingCondition\n : createSingleSigSpendingCondition(AddressHashMode.P2PKH, '0'.repeat(66), 0, 0),\n };\n}\nexport function intoInitialSighashAuth(auth) {\n if (auth.spendingCondition) {\n switch (auth.authType) {\n case AuthType.Standard:\n return createStandardAuth(clearCondition(auth.spendingCondition));\n case AuthType.Sponsored:\n return createSponsoredAuth(clearCondition(auth.spendingCondition), newInitialSigHash());\n default:\n throw new SigningError('Unexpected authorization type for signing');\n }\n }\n throw new Error('Authorization missing SpendingCondition');\n}\nexport function verifyOrigin(auth, initialSigHash) {\n switch (auth.authType) {\n case AuthType.Standard:\n return verify(auth.spendingCondition, initialSigHash, AuthType.Standard);\n case AuthType.Sponsored:\n return verify(auth.spendingCondition, initialSigHash, AuthType.Standard);\n default:\n throw new SigningError('Invalid origin auth type');\n }\n}\nexport function setFee(auth, amount) {\n switch (auth.authType) {\n case AuthType.Standard:\n const spendingCondition = {\n ...auth.spendingCondition,\n fee: intToBigInt(amount),\n };\n return { ...auth, spendingCondition };\n case AuthType.Sponsored:\n const sponsorSpendingCondition = {\n ...auth.sponsorSpendingCondition,\n fee: intToBigInt(amount),\n };\n return { ...auth, sponsorSpendingCondition };\n }\n}\nexport function getFee(auth) {\n switch (auth.authType) {\n case AuthType.Standard:\n return auth.spendingCondition.fee;\n case AuthType.Sponsored:\n return auth.sponsorSpendingCondition.fee;\n }\n}\nexport function setNonce(auth, nonce) {\n const spendingCondition = {\n ...auth.spendingCondition,\n nonce: intToBigInt(nonce),\n };\n return {\n ...auth,\n spendingCondition,\n };\n}\nexport function setSponsorNonce(auth, nonce) {\n const sponsorSpendingCondition = {\n ...auth.sponsorSpendingCondition,\n nonce: intToBigInt(nonce),\n };\n return {\n ...auth,\n sponsorSpendingCondition,\n };\n}\nexport function setSponsor(auth, sponsorSpendingCondition) {\n const sc = {\n ...sponsorSpendingCondition,\n nonce: intToBigInt(sponsorSpendingCondition.nonce),\n fee: intToBigInt(sponsorSpendingCondition.fee),\n };\n return {\n ...auth,\n sponsorSpendingCondition: sc,\n };\n}\nexport function serializeAuthorization(auth) {\n return bytesToHex(serializeAuthorizationBytes(auth));\n}\nexport function serializeAuthorizationBytes(auth) {\n const bytesArray = [];\n bytesArray.push(auth.authType);\n switch (auth.authType) {\n case AuthType.Standard:\n bytesArray.push(serializeSpendingConditionBytes(auth.spendingCondition));\n break;\n case AuthType.Sponsored:\n bytesArray.push(serializeSpendingConditionBytes(auth.spendingCondition));\n bytesArray.push(serializeSpendingConditionBytes(auth.sponsorSpendingCondition));\n break;\n }\n return concatArray(bytesArray);\n}\nexport function deserializeAuthorization(bytesReader) {\n const authType = bytesReader.readUInt8Enum(AuthType, n => {\n throw new DeserializationError(`Could not parse ${n} as AuthType`);\n });\n let spendingCondition;\n switch (authType) {\n case AuthType.Standard:\n spendingCondition = deserializeSpendingCondition(bytesReader);\n return createStandardAuth(spendingCondition);\n case AuthType.Sponsored:\n spendingCondition = deserializeSpendingCondition(bytesReader);\n const sponsorSpendingCondition = deserializeSpendingCondition(bytesReader);\n return createSponsoredAuth(spendingCondition, sponsorSpendingCondition);\n }\n}\n//# sourceMappingURL=authorization.js.map","import { bytesToHex, concatArray, intToBigInt, isInstance, writeUInt32BE, } from '@stacks/common';\nimport { STACKS_MAINNET, STACKS_TESTNET, TransactionVersion, networkFrom, whenTransactionVersion, } from '@stacks/network';\nimport { serializePayloadBytes } from '.';\nimport { BytesReader } from './BytesReader';\nimport { deserializeAuthorization, intoInitialSighashAuth, isSingleSig, nextSignature, serializeAuthorizationBytes, setFee, setNonce, setSponsor, setSponsorNonce, verifyOrigin, } from './authorization';\nimport { AddressHashMode, AnchorMode, AuthType, PostConditionMode, PubKeyEncoding, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, } from './constants';\nimport { SerializationError, SigningError } from './errors';\nimport { createStacksPublicKey, privateKeyIsCompressed, publicKeyIsCompressed } from './keys';\nimport { cloneDeep, txidFromData } from './utils';\nimport { StacksWireType, createLPList, createMessageSignature, createTransactionAuthField, deserializeLPList, deserializePayload, serializeLPListBytes, } from './wire';\nexport class StacksTransactionWire {\n constructor({ auth, payload, postConditions = createLPList([]), postConditionMode = PostConditionMode.Deny, transactionVersion, chainId, network = 'mainnet', }) {\n network = networkFrom(network);\n this.transactionVersion = transactionVersion ?? network.transactionVersion;\n this.chainId = chainId ?? network.chainId;\n this.auth = auth;\n if ('amount' in payload) {\n this.payload = {\n ...payload,\n amount: intToBigInt(payload.amount),\n };\n }\n else {\n this.payload = payload;\n }\n this.postConditionMode = postConditionMode;\n this.postConditions = postConditions;\n this.anchorMode = AnchorMode.Any;\n }\n signBegin() {\n const tx = cloneDeep(this);\n tx.auth = intoInitialSighashAuth(tx.auth);\n return tx.txid();\n }\n verifyBegin() {\n const tx = cloneDeep(this);\n tx.auth = intoInitialSighashAuth(tx.auth);\n return tx.txid();\n }\n verifyOrigin() {\n return verifyOrigin(this.auth, this.verifyBegin());\n }\n signNextOrigin(sigHash, privateKey) {\n if (this.auth.spendingCondition === undefined) {\n throw new Error('\"auth.spendingCondition\" is undefined');\n }\n if (this.auth.authType === undefined) {\n throw new Error('\"auth.authType\" is undefined');\n }\n return this.signAndAppend(this.auth.spendingCondition, sigHash, AuthType.Standard, privateKey);\n }\n signNextSponsor(sigHash, privateKey) {\n if (this.auth.authType === AuthType.Sponsored) {\n return this.signAndAppend(this.auth.sponsorSpendingCondition, sigHash, AuthType.Sponsored, privateKey);\n }\n else {\n throw new Error('\"auth.sponsorSpendingCondition\" is undefined');\n }\n }\n appendPubkey(publicKey) {\n const wire = typeof publicKey === 'object' && 'type' in publicKey\n ? publicKey\n : createStacksPublicKey(publicKey);\n const cond = this.auth.spendingCondition;\n if (cond && !isSingleSig(cond)) {\n const compressed = publicKeyIsCompressed(wire.data);\n cond.fields.push(createTransactionAuthField(compressed ? PubKeyEncoding.Compressed : PubKeyEncoding.Uncompressed, wire));\n }\n else {\n throw new Error(`Can't append public key to a singlesig condition`);\n }\n }\n signAndAppend(condition, curSigHash, authType, privateKey) {\n const { nextSig, nextSigHash } = nextSignature(curSigHash, authType, condition.fee, condition.nonce, privateKey);\n if (isSingleSig(condition)) {\n condition.signature = createMessageSignature(nextSig);\n }\n else {\n const compressed = privateKeyIsCompressed(privateKey);\n condition.fields.push(createTransactionAuthField(compressed ? PubKeyEncoding.Compressed : PubKeyEncoding.Uncompressed, createMessageSignature(nextSig)));\n }\n return nextSigHash;\n }\n txid() {\n const serialized = this.serializeBytes();\n return txidFromData(serialized);\n }\n setSponsor(sponsorSpendingCondition) {\n if (this.auth.authType != AuthType.Sponsored) {\n throw new SigningError('Cannot sponsor sign a non-sponsored transaction');\n }\n this.auth = setSponsor(this.auth, sponsorSpendingCondition);\n }\n setFee(amount) {\n this.auth = setFee(this.auth, amount);\n }\n setNonce(nonce) {\n this.auth = setNonce(this.auth, nonce);\n }\n setSponsorNonce(nonce) {\n if (this.auth.authType != AuthType.Sponsored) {\n throw new SigningError('Cannot sponsor sign a non-sponsored transaction');\n }\n this.auth = setSponsorNonce(this.auth, nonce);\n }\n serialize() {\n return bytesToHex(this.serializeBytes());\n }\n serializeBytes() {\n if (this.transactionVersion === undefined) {\n throw new SerializationError('\"transactionVersion\" is undefined');\n }\n if (this.chainId === undefined) {\n throw new SerializationError('\"chainId\" is undefined');\n }\n if (this.auth === undefined) {\n throw new SerializationError('\"auth\" is undefined');\n }\n if (this.payload === undefined) {\n throw new SerializationError('\"payload\" is undefined');\n }\n const bytesArray = [];\n bytesArray.push(this.transactionVersion);\n const chainIdBytes = new Uint8Array(4);\n writeUInt32BE(chainIdBytes, this.chainId, 0);\n bytesArray.push(chainIdBytes);\n bytesArray.push(serializeAuthorizationBytes(this.auth));\n bytesArray.push(this.anchorMode);\n bytesArray.push(this.postConditionMode);\n bytesArray.push(serializeLPListBytes(this.postConditions));\n bytesArray.push(serializePayloadBytes(this.payload));\n return concatArray(bytesArray);\n }\n}\nexport function deserializeTransaction(tx) {\n const bytesReader = isInstance(tx, BytesReader) ? tx : new BytesReader(tx);\n const transactionVersion = bytesReader.readUInt8Enum(TransactionVersion, n => {\n throw new Error(`Could not parse ${n} as TransactionVersion`);\n });\n const chainId = bytesReader.readUInt32BE();\n const auth = deserializeAuthorization(bytesReader);\n const anchorMode = bytesReader.readUInt8Enum(AnchorMode, n => {\n throw new Error(`Could not parse ${n} as AnchorMode`);\n });\n const postConditionMode = bytesReader.readUInt8Enum(PostConditionMode, n => {\n throw new Error(`Could not parse ${n} as PostConditionMode`);\n });\n const postConditions = deserializeLPList(bytesReader, StacksWireType.PostCondition);\n const payload = deserializePayload(bytesReader);\n const transaction = new StacksTransactionWire({\n transactionVersion,\n chainId,\n auth,\n payload,\n postConditions,\n postConditionMode,\n });\n transaction.anchorMode = anchorMode;\n return transaction;\n}\nexport function deriveNetworkFromTx(transaction) {\n return whenTransactionVersion(transaction.transactionVersion)({\n [TransactionVersion.Mainnet]: STACKS_MAINNET,\n [TransactionVersion.Testnet]: STACKS_TESTNET,\n });\n}\nexport function estimateTransactionByteLength(transaction) {\n const hashMode = transaction.auth.spendingCondition.hashMode;\n const multiSigHashModes = [AddressHashMode.P2SH, AddressHashMode.P2WSH];\n if (multiSigHashModes.includes(hashMode)) {\n const multiSigSpendingCondition = transaction.auth\n .spendingCondition;\n const existingSignatures = multiSigSpendingCondition.fields.filter(field => field.contents.type === StacksWireType.MessageSignature).length;\n const totalSignatureLength = (multiSigSpendingCondition.signaturesRequired - existingSignatures) *\n (RECOVERABLE_ECDSA_SIG_LENGTH_BYTES + 1);\n return transaction.serializeBytes().byteLength + totalSignatureLength;\n }\n else {\n return transaction.serializeBytes().byteLength;\n }\n}\nexport function serializeTransaction(transaction) {\n return transaction.serialize();\n}\nexport function serializeTransactionBytes(transaction) {\n return transaction.serializeBytes();\n}\nexport function transactionToHex(transaction) {\n return transaction.serialize();\n}\n//# sourceMappingURL=transaction.js.map","import { PostConditionMode, PostConditionPrincipalId, PostConditionType, } from './constants';\nimport { StacksWireType, addressToString, parseAssetString, parsePrincipalString, serializePostConditionWire, } from './wire';\nvar PostConditionCodeWireType;\n(function (PostConditionCodeWireType) {\n PostConditionCodeWireType[PostConditionCodeWireType[\"eq\"] = 1] = \"eq\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"gt\"] = 2] = \"gt\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"lt\"] = 4] = \"lt\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"gte\"] = 3] = \"gte\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"lte\"] = 5] = \"lte\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"sent\"] = 16] = \"sent\";\n PostConditionCodeWireType[PostConditionCodeWireType[\"not-sent\"] = 17] = \"not-sent\";\n})(PostConditionCodeWireType || (PostConditionCodeWireType = {}));\nexport function postConditionToWire(postcondition) {\n switch (postcondition.type) {\n case 'stx-postcondition':\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.STX,\n principal: postcondition.address === 'origin'\n ? { type: StacksWireType.Principal, prefix: PostConditionPrincipalId.Origin }\n : parsePrincipalString(postcondition.address),\n conditionCode: conditionTypeToByte(postcondition.condition),\n amount: BigInt(postcondition.amount),\n };\n case 'ft-postcondition':\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.Fungible,\n principal: postcondition.address === 'origin'\n ? { type: StacksWireType.Principal, prefix: PostConditionPrincipalId.Origin }\n : parsePrincipalString(postcondition.address),\n conditionCode: conditionTypeToByte(postcondition.condition),\n amount: BigInt(postcondition.amount),\n asset: parseAssetString(postcondition.asset),\n };\n case 'nft-postcondition':\n return {\n type: StacksWireType.PostCondition,\n conditionType: PostConditionType.NonFungible,\n principal: postcondition.address === 'origin'\n ? { type: StacksWireType.Principal, prefix: PostConditionPrincipalId.Origin }\n : parsePrincipalString(postcondition.address),\n conditionCode: conditionTypeToByte(postcondition.condition),\n asset: parseAssetString(postcondition.asset),\n assetName: postcondition.assetId,\n };\n default:\n throw new Error('Invalid post condition type');\n }\n}\nexport function wireToPostCondition(wire) {\n switch (wire.conditionType) {\n case PostConditionType.STX:\n return {\n type: 'stx-postcondition',\n address: principalWireToString(wire.principal),\n condition: conditionByteToType(wire.conditionCode),\n amount: wire.amount.toString(),\n };\n case PostConditionType.Fungible:\n return {\n type: 'ft-postcondition',\n address: principalWireToString(wire.principal),\n condition: conditionByteToType(wire.conditionCode),\n amount: wire.amount.toString(),\n asset: assetWireToString(wire.asset),\n };\n case PostConditionType.NonFungible:\n return {\n type: 'nft-postcondition',\n address: principalWireToString(wire.principal),\n condition: conditionByteToType(wire.conditionCode),\n asset: assetWireToString(wire.asset),\n assetId: wire.assetName,\n };\n default: {\n const _exhaustiveCheck = wire;\n throw new Error(`Invalid post condition type: ${_exhaustiveCheck}`);\n }\n }\n}\nexport function conditionTypeToByte(condition) {\n return PostConditionCodeWireType[condition];\n}\nexport function conditionByteToType(wireType) {\n return PostConditionCodeWireType[wireType];\n}\nexport function postConditionToHex(postcondition) {\n const wire = postConditionToWire(postcondition);\n return serializePostConditionWire(wire);\n}\nexport function postConditionModeFrom(mode) {\n if (typeof mode === 'number')\n return mode;\n if (mode === 'allow')\n return PostConditionMode.Allow;\n if (mode === 'deny')\n return PostConditionMode.Deny;\n throw new Error(`Invalid post condition mode: ${mode}`);\n}\nfunction assetWireToString(asset) {\n const address = addressToString(asset.address);\n const contractId = `${address}.${asset.contractName.content}`;\n return `${contractId}::${asset.assetName.content}`;\n}\nfunction principalWireToString(principal) {\n switch (principal.prefix) {\n case PostConditionPrincipalId.Origin:\n return 'origin';\n case PostConditionPrincipalId.Standard:\n return addressToString(principal.address);\n case PostConditionPrincipalId.Contract:\n const address = addressToString(principal.address);\n return `${address}.${principal.contractName.content}`;\n default:\n const _exhaustiveCheck = principal;\n throw new Error(`Invalid principal type: ${_exhaustiveCheck}`);\n }\n}\n//# sourceMappingURL=postcondition.js.map","import { c32address, c32addressDecode } from 'c32check';\nimport { privateKeyToAddress, publicKeyToAddressSingleSig } from '../keys';\nconst C32 = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';\nexport function parse(address) {\n const [addr, contractName] = address.split('.');\n const parsed = c32addressDecode(addr);\n return {\n version: parsed[0],\n versionChar: C32[parsed[0]],\n hash160: parsed[1],\n contractName: contractName,\n };\n}\nexport function stringify(address) {\n const version = 'version' in address ? address.version : C32.indexOf(address.versionChar.toUpperCase());\n const addr = c32address(version, address.hash160);\n if (address.contractName)\n return `${addr}.${address.contractName}`;\n return addr;\n}\nexport const fromPrivateKey = privateKeyToAddress;\nexport const fromPublicKey = publicKeyToAddressSingleSig;\n//# sourceMappingURL=address.js.map","import { asciiToBytes, hexToBytes, utf8ToBytes } from '@stacks/common';\nimport { boolCV, bufferCV, contractPrincipalCV, deserializeCV, intCV, listCV, noneCV, responseErrorCV, responseOkCV, serializeCV, someCV, standardPrincipalCV, stringAsciiCV, stringUtf8CV, tupleCV, uintCV, } from './clarity';\nexport { prettyPrint, stringify } from './clarity/prettyPrint';\nexport { parse } from './clarity/parser';\nexport const bool = boolCV;\nexport const int = intCV;\nexport const uint = uintCV;\nexport function principal(address) {\n const [addr, name] = address.split('.');\n return name ? contractPrincipalCV(addr, name) : standardPrincipalCV(addr);\n}\nexport const address = principal;\nexport const contractPrincipal = contractPrincipalCV;\nexport const standardPrincipal = standardPrincipalCV;\nexport const list = listCV;\nexport const stringAscii = stringAsciiCV;\nexport const stringUtf8 = stringUtf8CV;\nexport const buffer = bufferCV;\nexport const bufferFromHex = (hex) => bufferCV(hexToBytes(hex));\nexport const bufferFromAscii = (ascii) => bufferCV(asciiToBytes(ascii));\nexport const bufferFromUtf8 = (utf8) => bufferCV(utf8ToBytes(utf8));\nexport const none = noneCV;\nexport const some = someCV;\nexport const ok = responseOkCV;\nexport const error = responseErrorCV;\nexport const tuple = tupleCV;\nexport const serialize = serializeCV;\nexport const deserialize = deserializeCV;\n//# sourceMappingURL=cl.js.map","import { decodeToken, SECP256K1Client, TokenSigner, TokenVerifier } from 'jsontokens';\nimport { nextYear, makeUUID4 } from '@stacks/common';\nimport { getAddressFromPublicKey } from '@stacks/transactions';\nexport function signProfileToken(profile, privateKey, subject, issuer, signingAlgorithm = 'ES256K', issuedAt = new Date(), expiresAt = nextYear()) {\n if (signingAlgorithm !== 'ES256K') {\n throw new Error('Signing algorithm not supported');\n }\n const publicKey = SECP256K1Client.derivePublicKey(privateKey);\n if (!subject) {\n subject = { publicKey };\n }\n if (!issuer) {\n issuer = { publicKey };\n }\n const tokenSigner = new TokenSigner(signingAlgorithm, privateKey);\n const payload = {\n jti: makeUUID4(),\n iat: issuedAt.toISOString(),\n exp: expiresAt.toISOString(),\n subject,\n issuer,\n claim: profile,\n };\n return tokenSigner.sign(payload);\n}\nexport function wrapProfileToken(token) {\n return {\n token,\n decodedToken: decodeToken(token),\n };\n}\nexport function verifyProfileToken(token, publicKeyOrAddress) {\n const decodedToken = decodeToken(token);\n const payload = decodedToken.payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n if (payload.hasOwnProperty('subject') && payload.subject) {\n if (!payload.subject.hasOwnProperty('publicKey')) {\n throw new Error(\"Token doesn't have a subject public key\");\n }\n }\n else {\n throw new Error(\"Token doesn't have a subject\");\n }\n if (payload.hasOwnProperty('issuer') && payload.issuer) {\n if (!payload.issuer.hasOwnProperty('publicKey')) {\n throw new Error(\"Token doesn't have an issuer public key\");\n }\n }\n else {\n throw new Error(\"Token doesn't have an issuer\");\n }\n if (!payload.hasOwnProperty('claim')) {\n throw new Error(\"Token doesn't have a claim\");\n }\n const issuerPublicKey = payload.issuer.publicKey;\n const address = getAddressFromPublicKey(issuerPublicKey);\n if (publicKeyOrAddress === issuerPublicKey) {\n }\n else if (publicKeyOrAddress === address) {\n }\n else {\n throw new Error('Token issuer public key does not match the verifying value');\n }\n const tokenVerifier = new TokenVerifier(decodedToken.header.alg, issuerPublicKey);\n if (!tokenVerifier) {\n throw new Error('Invalid token verifier');\n }\n const tokenVerified = tokenVerifier.verify(token);\n if (!tokenVerified) {\n throw new Error('Token verification failed');\n }\n return decodedToken;\n}\nexport function extractProfile(token, publicKeyOrAddress = null) {\n let decodedToken;\n if (publicKeyOrAddress) {\n decodedToken = verifyProfileToken(token, publicKeyOrAddress);\n }\n else {\n decodedToken = decodeToken(token);\n }\n let profile = {};\n if (decodedToken.hasOwnProperty('payload')) {\n const payload = decodedToken.payload;\n if (typeof payload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n if (payload.hasOwnProperty('claim')) {\n profile = payload.claim;\n }\n }\n return profile;\n}\n//# sourceMappingURL=profileTokens.js.map","const GLOBAL_DETECTION_CACHE_KEY = '_blockstackDidCheckEchoReply';\nconst ECHO_REPLY_PARAM = 'echoReply';\nconst AUTH_CONTINUATION_PARAM = 'authContinuation';\nfunction getQueryStringParams(query) {\n if (!query) {\n return {};\n }\n const trimmed = /^[?#]/.test(query) ? query.slice(1) : query;\n return trimmed.split('&').reduce((params, param) => {\n const [key, value] = param.split('=');\n params[key] = value ? decodeURIComponent(value.replace(/\\+/g, ' ')) : '';\n return params;\n }, {});\n}\nexport function protocolEchoReplyDetection() {\n let globalScope;\n if (typeof self !== 'undefined') {\n globalScope = self;\n }\n else if (typeof window !== 'undefined') {\n globalScope = window;\n }\n else {\n return false;\n }\n if (!globalScope.location || !globalScope.localStorage) {\n return false;\n }\n const existingDetection = globalScope[GLOBAL_DETECTION_CACHE_KEY];\n if (typeof existingDetection === 'boolean') {\n return existingDetection;\n }\n const searchParams = getQueryStringParams(globalScope.location.search);\n const echoReplyParam = searchParams[ECHO_REPLY_PARAM];\n if (echoReplyParam) {\n globalScope[GLOBAL_DETECTION_CACHE_KEY] = true;\n const echoReplyKey = `echo-reply-${echoReplyParam}`;\n globalScope.localStorage.setItem(echoReplyKey, 'success');\n globalScope.setTimeout(() => {\n const authContinuationParam = searchParams[AUTH_CONTINUATION_PARAM];\n globalScope.location.href = authContinuationParam;\n }, 10);\n return true;\n }\n return false;\n}\n//# sourceMappingURL=protocolEchoDetection.js.map","import { AppConfig } from './appConfig';\nimport { InstanceDataStore, LocalStorageStore } from './sessionStore';\nimport { decodeToken } from 'jsontokens';\nimport { verifyAuthResponse } from './verification';\nimport * as authMessages from './messages';\nimport { utils } from '@noble/secp256k1';\nimport { decryptContent, encryptContent } from '@stacks/encryption';\nimport { getAddressFromDID } from './dids';\nimport { createFetchFn, GAIA_URL, getGlobalObject, HIRO_MAINNET_URL, InvalidStateError, isLaterVersion, Logger, LoginFailedError, MissingParameterError, nextHour, } from '@stacks/common';\nimport { extractProfile } from '@stacks/profile';\nimport { DEFAULT_PROFILE } from './constants';\nimport { protocolEchoReplyDetection } from './protocolEchoDetection';\nexport class UserSession {\n constructor(options) {\n let runningInBrowser = true;\n if (typeof window === 'undefined' && typeof self === 'undefined') {\n runningInBrowser = false;\n }\n if (options && options.appConfig) {\n this.appConfig = options.appConfig;\n }\n else if (runningInBrowser) {\n this.appConfig = new AppConfig();\n }\n else {\n throw new MissingParameterError('You need to specify options.appConfig');\n }\n if (options && options.sessionStore) {\n this.store = options.sessionStore;\n }\n else if (runningInBrowser) {\n if (options) {\n this.store = new LocalStorageStore(options.sessionOptions);\n }\n else {\n this.store = new LocalStorageStore();\n }\n }\n else if (options) {\n this.store = new InstanceDataStore(options.sessionOptions);\n }\n else {\n this.store = new InstanceDataStore();\n }\n }\n makeAuthRequestToken(transitKey, redirectURI, manifestURI, scopes, appDomain, expiresAt = nextHour().getTime(), extraParams = {}) {\n const appConfig = this.appConfig;\n if (!appConfig) {\n throw new InvalidStateError('Missing AppConfig');\n }\n transitKey = transitKey || this.generateAndStoreTransitKey();\n redirectURI = redirectURI || appConfig.redirectURI();\n manifestURI = manifestURI || appConfig.manifestURI();\n scopes = scopes || appConfig.scopes;\n appDomain = appDomain || appConfig.appDomain;\n return authMessages.makeAuthRequestToken(transitKey, redirectURI, manifestURI, scopes, appDomain, expiresAt, extraParams);\n }\n generateAndStoreTransitKey() {\n const sessionData = this.store.getSessionData();\n const transitKey = authMessages.generateTransitKey();\n sessionData.transitKey = transitKey;\n this.store.setSessionData(sessionData);\n return transitKey;\n }\n getAuthResponseToken() {\n const search = getGlobalObject('location', {\n throwIfUnavailable: true,\n usageDesc: 'getAuthResponseToken',\n })?.search;\n const params = new URLSearchParams(search);\n return params.get('authResponse') ?? '';\n }\n isSignInPending() {\n try {\n const isProtocolEcho = protocolEchoReplyDetection();\n if (isProtocolEcho) {\n Logger.info('protocolEchoReply detected from isSignInPending call, the page is about to redirect.');\n return true;\n }\n }\n catch (error) {\n Logger.error(`Error checking for protocol echo reply isSignInPending: ${error}`);\n }\n return !!this.getAuthResponseToken();\n }\n isUserSignedIn() {\n return !!this.store.getSessionData().userData;\n }\n async handlePendingSignIn(authResponseToken = this.getAuthResponseToken(), fetchFn = createFetchFn()) {\n const sessionData = this.store.getSessionData();\n if (sessionData.userData) {\n throw new LoginFailedError('Existing user session found.');\n }\n const transitKey = this.store.getSessionData().transitKey;\n let coreNode = this.appConfig && this.appConfig.coreNode;\n if (!coreNode) {\n coreNode = HIRO_MAINNET_URL;\n }\n const tokenPayload = decodeToken(authResponseToken).payload;\n if (typeof tokenPayload === 'string') {\n throw new Error('Unexpected token payload type of string');\n }\n const isValid = await verifyAuthResponse(authResponseToken);\n if (!isValid) {\n throw new LoginFailedError('Invalid authentication response.');\n }\n let appPrivateKey = tokenPayload.private_key;\n let coreSessionToken = tokenPayload.core_token;\n if (isLaterVersion(tokenPayload.version, '1.1.0')) {\n if (transitKey !== undefined && transitKey != null) {\n if (tokenPayload.private_key !== undefined && tokenPayload.private_key !== null) {\n try {\n appPrivateKey = (await authMessages.decryptPrivateKey(transitKey, tokenPayload.private_key));\n }\n catch (e) {\n Logger.warn('Failed decryption of appPrivateKey, will try to use as given');\n if (!utils.isValidPrivateKey(tokenPayload.private_key)) {\n throw new LoginFailedError('Failed decrypting appPrivateKey. Usually means' +\n ' that the transit key has changed during login.');\n }\n }\n }\n if (coreSessionToken !== undefined && coreSessionToken !== null) {\n try {\n coreSessionToken = (await authMessages.decryptPrivateKey(transitKey, coreSessionToken));\n }\n catch (e) {\n Logger.info('Failed decryption of coreSessionToken, will try to use as given');\n }\n }\n }\n else {\n throw new LoginFailedError('Authenticating with protocol > 1.1.0 requires transit' + ' key, and none found.');\n }\n }\n let hubUrl = GAIA_URL;\n let gaiaAssociationToken;\n if (isLaterVersion(tokenPayload.version, '1.2.0') &&\n tokenPayload.hubUrl !== null &&\n tokenPayload.hubUrl !== undefined) {\n hubUrl = tokenPayload.hubUrl;\n }\n if (isLaterVersion(tokenPayload.version, '1.3.0') &&\n tokenPayload.associationToken !== null &&\n tokenPayload.associationToken !== undefined) {\n gaiaAssociationToken = tokenPayload.associationToken;\n }\n const userData = {\n profile: tokenPayload.profile,\n email: tokenPayload.email,\n decentralizedID: tokenPayload.iss,\n identityAddress: getAddressFromDID(tokenPayload.iss),\n appPrivateKey,\n coreSessionToken,\n authResponseToken,\n hubUrl,\n appPrivateKeyFromWalletSalt: tokenPayload.appPrivateKeyFromWalletSalt,\n coreNode: tokenPayload.blockstackAPIUrl,\n gaiaAssociationToken,\n };\n const profileURL = tokenPayload.profile_url;\n if (!userData.profile && profileURL) {\n const response = await fetchFn(profileURL);\n if (!response.ok) {\n userData.profile = Object.assign({}, DEFAULT_PROFILE);\n }\n else {\n const responseText = await response.text();\n const wrappedProfile = JSON.parse(responseText);\n userData.profile = extractProfile(wrappedProfile[0].token);\n }\n }\n else {\n userData.profile = tokenPayload.profile;\n }\n sessionData.userData = userData;\n this.store.setSessionData(sessionData);\n return userData;\n }\n loadUserData() {\n const userData = this.store.getSessionData().userData;\n if (!userData) {\n throw new InvalidStateError('No user data found. Did the user sign in?');\n }\n return userData;\n }\n encryptContent(content, options) {\n const opts = Object.assign({}, options);\n if (!opts.privateKey) {\n opts.privateKey = this.loadUserData().appPrivateKey;\n }\n return encryptContent(content, opts);\n }\n decryptContent(content, options) {\n const opts = Object.assign({}, options);\n if (!opts.privateKey) {\n opts.privateKey = this.loadUserData().appPrivateKey;\n }\n return decryptContent(content, opts);\n }\n signUserOut(redirectURL) {\n this.store.deleteSessionData();\n if (redirectURL) {\n if (typeof location !== 'undefined' && location.href) {\n location.href = redirectURL;\n }\n }\n }\n}\nUserSession.prototype.makeAuthRequest = UserSession.prototype.makeAuthRequestToken;\n//# sourceMappingURL=userSession.js.map","(function(self) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(typeof self !== 'undefined' ? self : this);\n","import 'cross-fetch/polyfill';\nconst defaultFetchOpts = {\n referrerPolicy: 'origin',\n headers: {\n 'x-hiro-product': 'stacksjs',\n },\n};\nexport const getFetchOptions = () => {\n return defaultFetchOpts;\n};\nexport const setFetchOptions = (ops) => {\n return Object.assign(defaultFetchOpts, ops);\n};\nexport async function fetchWrapper(input, init) {\n const fetchOpts = {};\n Object.assign(fetchOpts, defaultFetchOpts, init);\n const fetchResult = await fetch(input, fetchOpts);\n return fetchResult;\n}\nexport function hostMatches(host, pattern) {\n if (typeof pattern === 'string')\n return pattern === host;\n return pattern.exec(host);\n}\nexport function createApiKeyMiddleware({ apiKey, host = /(.*)api(.*)(\\.stacks\\.co|\\.hiro\\.so)$/i, httpHeader = 'x-api-key', }) {\n return {\n pre: context => {\n const reqUrl = new URL(context.url);\n if (!hostMatches(reqUrl.host, host))\n return;\n const headers = context.init.headers instanceof Headers\n ? context.init.headers\n : (context.init.headers = new Headers(context.init.headers));\n headers.set(httpHeader, apiKey);\n },\n };\n}\nfunction argsForCreateFetchFn(args) {\n let fetchLib = fetchWrapper;\n let middlewares = [];\n if (args.length > 0 && typeof args[0] === 'function') {\n fetchLib = args.shift();\n }\n if (args.length > 0) {\n middlewares = args;\n }\n return { fetchLib, middlewares };\n}\nexport function createFetchFn(...args) {\n const { fetchLib, middlewares } = argsForCreateFetchFn(args);\n const fetchFn = async (url, init) => {\n let fetchParams = { url, init: init ?? {} };\n for (const middleware of middlewares) {\n if (typeof middleware.pre === 'function') {\n const result = await Promise.resolve(middleware.pre({\n fetch: fetchLib,\n ...fetchParams,\n }));\n fetchParams = result ?? fetchParams;\n }\n }\n let response = await fetchLib(fetchParams.url, fetchParams.init);\n for (const middleware of middlewares) {\n if (typeof middleware.post === 'function') {\n const result = await Promise.resolve(middleware.post({\n fetch: fetchLib,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response?.clone() ?? response,\n }));\n response = result ?? response;\n }\n }\n return response;\n };\n return fetchFn;\n}\n//# sourceMappingURL=fetch.js.map","import { Logger } from './logger';\nexport const BLOCKSTACK_HANDLER = 'blockstack';\nexport function nextYear() {\n return new Date(new Date().setFullYear(new Date().getFullYear() + 1));\n}\nexport function nextMonth() {\n return new Date(new Date().setMonth(new Date().getMonth() + 1));\n}\nexport function nextHour() {\n return new Date(new Date().setHours(new Date().getHours() + 1));\n}\nexport function megabytesToBytes(megabytes) {\n if (!Number.isFinite(megabytes)) {\n return 0;\n }\n return Math.floor(megabytes * 1024 * 1024);\n}\nexport function getAesCbcOutputLength(inputByteLength) {\n const cipherTextLength = (Math.floor(inputByteLength / 16) + 1) * 16;\n return cipherTextLength;\n}\nexport function getBase64OutputLength(inputByteLength) {\n const encodedLength = Math.ceil(inputByteLength / 3) * 4;\n return encodedLength;\n}\nexport function updateQueryStringParameter(uri, key, value) {\n const re = new RegExp(`([?&])${key}=.*?(&|$)`, 'i');\n const separator = uri.indexOf('?') !== -1 ? '&' : '?';\n if (uri.match(re)) {\n return uri.replace(re, `$1${key}=${value}$2`);\n }\n else {\n return `${uri}${separator}${key}=${value}`;\n }\n}\nexport function isLaterVersion(v1, v2) {\n if (v1 === undefined || v1 === '') {\n v1 = '0.0.0';\n }\n if (v2 === undefined || v1 === '') {\n v2 = '0.0.0';\n }\n const v1tuple = v1.split('.').map(x => parseInt(x, 10));\n const v2tuple = v2.split('.').map(x => parseInt(x, 10));\n for (let index = 0; index < v2.length; index++) {\n if (index >= v1.length) {\n v2tuple.push(0);\n }\n if (v1tuple[index] < v2tuple[index]) {\n return false;\n }\n }\n return true;\n}\nexport function makeUUID4() {\n let d = new Date().getTime();\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\nexport function isSameOriginAbsoluteUrl(uri1, uri2) {\n try {\n const parsedUri1 = new URL(uri1);\n const parsedUri2 = new URL(uri2);\n const port1 = parseInt(parsedUri1.port || '0', 10) | 0 || (parsedUri1.protocol === 'https:' ? 443 : 80);\n const port2 = parseInt(parsedUri2.port || '0', 10) | 0 || (parsedUri2.protocol === 'https:' ? 443 : 80);\n const match = {\n scheme: parsedUri1.protocol === parsedUri2.protocol,\n hostname: parsedUri1.hostname === parsedUri2.hostname,\n port: port1 === port2,\n absolute: (uri1.includes('http://') || uri1.includes('https://')) &&\n (uri2.includes('http://') || uri2.includes('https://')),\n };\n return match.scheme && match.hostname && match.port && match.absolute;\n }\n catch (error) {\n console.log(error);\n console.log('Parsing error in same URL origin check');\n return false;\n }\n}\nexport function getGlobalScope() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unexpected runtime environment - no supported global scope (`window`, `self`, `global`) available');\n}\nfunction getAPIUsageErrorMessage(scopeObject, apiName, usageDesc) {\n if (usageDesc) {\n return `Use of '${usageDesc}' requires \\`${apiName}\\` which is unavailable on the '${scopeObject}' object within the currently executing environment.`;\n }\n else {\n return `\\`${apiName}\\` is unavailable on the '${scopeObject}' object within the currently executing environment.`;\n }\n}\nexport function getGlobalObject(name, { throwIfUnavailable, usageDesc, returnEmptyObject } = {}) {\n let globalScope = undefined;\n try {\n globalScope = getGlobalScope();\n if (globalScope) {\n const obj = globalScope[name];\n if (obj) {\n return obj;\n }\n }\n }\n catch (error) {\n Logger.error(`Error getting object '${name}' from global scope '${globalScope}': ${error}`);\n }\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n if (returnEmptyObject) {\n return {};\n }\n return undefined;\n}\nexport function getGlobalObjects(names, { throwIfUnavailable, usageDesc, returnEmptyObject } = {}) {\n let globalScope;\n try {\n globalScope = getGlobalScope();\n }\n catch (error) {\n Logger.error(`Error getting global scope: ${error}`);\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, names[0].toString(), usageDesc);\n Logger.error(errMsg);\n throw errMsg;\n }\n else if (returnEmptyObject) {\n globalScope = {};\n }\n }\n const result = {};\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n try {\n if (globalScope) {\n const obj = globalScope[name];\n if (obj) {\n result[name] = obj;\n }\n else if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n else if (returnEmptyObject) {\n result[name] = {};\n }\n }\n }\n catch (error) {\n if (throwIfUnavailable) {\n const errMsg = getAPIUsageErrorMessage(globalScope, name.toString(), usageDesc);\n Logger.error(errMsg);\n throw new Error(errMsg);\n }\n }\n }\n return result;\n}\nexport function intToBytes(value, signed, byteLength) {\n return bigIntToBytes(intToBigInt(value, signed), byteLength);\n}\nexport function intToBigInt(value, signed) {\n let parsedValue = value;\n if (typeof parsedValue === 'number') {\n if (!Number.isInteger(parsedValue)) {\n throw new RangeError(`Invalid value. Values of type 'number' must be an integer.`);\n }\n if (parsedValue > Number.MAX_SAFE_INTEGER) {\n throw new RangeError(`Invalid value. Values of type 'number' must be less than or equal to ${Number.MAX_SAFE_INTEGER}. For larger values, try using a BigInt instead.`);\n }\n return BigInt(parsedValue);\n }\n if (typeof parsedValue === 'string') {\n if (parsedValue.toLowerCase().startsWith('0x')) {\n let hex = parsedValue.slice(2);\n hex = hex.padStart(hex.length + (hex.length % 2), '0');\n parsedValue = hexToBytes(hex);\n }\n else {\n try {\n return BigInt(parsedValue);\n }\n catch (error) {\n if (error instanceof SyntaxError) {\n throw new RangeError(`Invalid value. String integer '${parsedValue}' is not finite.`);\n }\n }\n }\n }\n if (typeof parsedValue === 'bigint') {\n return parsedValue;\n }\n if (parsedValue instanceof Uint8Array) {\n if (signed) {\n const bn = fromTwos(BigInt(`0x${bytesToHex(parsedValue)}`), BigInt(parsedValue.byteLength * 8));\n return BigInt(bn.toString());\n }\n else {\n return BigInt(`0x${bytesToHex(parsedValue)}`);\n }\n }\n if (parsedValue != null &&\n typeof parsedValue === 'object' &&\n parsedValue.constructor.name === 'BN') {\n return BigInt(parsedValue.toString());\n }\n throw new TypeError(`Invalid value type. Must be a number, bigint, integer-string, hex-string, or Uint8Array.`);\n}\nexport function with0x(value) {\n return value.startsWith('0x') ? value : `0x${value}`;\n}\nexport function hexToBigInt(hex) {\n if (typeof hex !== 'string')\n throw new TypeError(`hexToBigInt: expected string, got ${typeof hex}`);\n return BigInt(`0x${hex}`);\n}\nexport function intToHex(integer, lengthBytes = 8) {\n const value = typeof integer === 'bigint' ? integer : intToBigInt(integer, false);\n return value.toString(16).padStart(lengthBytes * 2, '0');\n}\nexport function hexToInt(hex) {\n return parseInt(hex, 16);\n}\nexport function bigIntToBytes(value, length = 16) {\n const hex = intToHex(value, length);\n return hexToBytes(hex);\n}\nexport function toTwos(value, width) {\n if (value < -(BigInt(1) << (width - BigInt(1))) ||\n (BigInt(1) << (width - BigInt(1))) - BigInt(1) < value) {\n throw `Unable to represent integer in width: ${width}`;\n }\n if (value >= BigInt(0)) {\n return BigInt(value);\n }\n return value + (BigInt(1) << width);\n}\nfunction nthBit(value, n) {\n return value & (BigInt(1) << n);\n}\nexport function fromTwos(value, width) {\n if (nthBit(value, width - BigInt(1))) {\n return value - (BigInt(1) << width);\n }\n return value;\n}\nconst hexes = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\nexport function bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (const u of uint8a) {\n hex += hexes[u];\n }\n return hex;\n}\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError(`hexToBytes: expected string, got ${typeof hex}`);\n }\n hex = hex.startsWith('0x') || hex.startsWith('0X') ? hex.slice(2) : hex;\n const paddedHex = hex.length % 2 ? `0${hex}` : hex;\n const array = new Uint8Array(paddedHex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = paddedHex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nexport function utf8ToBytes(str) {\n return new TextEncoder().encode(str);\n}\nexport function bytesToUtf8(arr) {\n return new TextDecoder().decode(arr);\n}\nexport function asciiToBytes(str) {\n const byteArray = [];\n for (let i = 0; i < str.length; i++) {\n byteArray.push(str.charCodeAt(i) & 0xff);\n }\n return new Uint8Array(byteArray);\n}\nexport function bytesToAscii(arr) {\n return String.fromCharCode.apply(null, arr);\n}\nfunction isNotOctet(octet) {\n return !Number.isInteger(octet) || octet < 0 || octet > 255;\n}\nexport function octetsToBytes(numbers) {\n if (numbers.some(isNotOctet))\n throw new Error('Some values are invalid bytes.');\n return new Uint8Array(numbers);\n}\nexport function concatBytes(...arrays) {\n if (!arrays.every(a => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function concatArray(elements) {\n return concatBytes(...elements.map(e => {\n if (typeof e === 'number')\n return octetsToBytes([e]);\n if (e instanceof Array)\n return octetsToBytes(e);\n return e;\n }));\n}\nexport function isInstance(object, type) {\n return object instanceof type || object?.constructor?.name?.toLowerCase() === type.name;\n}\n//# sourceMappingURL=utils.js.map","export var ChainID;\n(function (ChainID) {\n ChainID[ChainID[\"Testnet\"] = 2147483648] = \"Testnet\";\n ChainID[ChainID[\"Mainnet\"] = 1] = \"Mainnet\";\n})(ChainID || (ChainID = {}));\nexport var TransactionVersion;\n(function (TransactionVersion) {\n TransactionVersion[TransactionVersion[\"Mainnet\"] = 0] = \"Mainnet\";\n TransactionVersion[TransactionVersion[\"Testnet\"] = 128] = \"Testnet\";\n})(TransactionVersion || (TransactionVersion = {}));\nexport var PeerNetworkID;\n(function (PeerNetworkID) {\n PeerNetworkID[PeerNetworkID[\"Mainnet\"] = 385875968] = \"Mainnet\";\n PeerNetworkID[PeerNetworkID[\"Testnet\"] = 4278190080] = \"Testnet\";\n})(PeerNetworkID || (PeerNetworkID = {}));\nexport const PRIVATE_KEY_COMPRESSED_LENGTH = 33;\nexport const PRIVATE_KEY_UNCOMPRESSED_LENGTH = 32;\nexport const BLOCKSTACK_DEFAULT_GAIA_HUB_URL = 'https://hub.blockstack.org';\n//# sourceMappingURL=constants.js.map","import { hexToInt } from './utils';\nconst COORDINATE_BYTES = 32;\nexport function parseRecoverableSignatureVrs(signature) {\n if (signature.length < COORDINATE_BYTES * 2 * 2 + 1) {\n throw new Error('Invalid signature');\n }\n const recoveryIdHex = signature.slice(0, 2);\n const r = signature.slice(2, 2 + COORDINATE_BYTES * 2);\n const s = signature.slice(2 + COORDINATE_BYTES * 2);\n return {\n recoveryId: hexToInt(recoveryIdHex),\n r,\n s,\n };\n}\nexport function signatureVrsToRsv(signature) {\n return signature.slice(2) + signature.slice(0, 2);\n}\nexport function signatureRsvToVrs(signature) {\n return signature.slice(-2) + signature.slice(0, -2);\n}\n//# sourceMappingURL=signatures.js.map","import { hexToBytes } from './utils';\nexport function privateKeyToBytes(privateKey) {\n const privateKeyBuffer = typeof privateKey === 'string' ? hexToBytes(privateKey) : privateKey;\n if (privateKeyBuffer.length != 32 && privateKeyBuffer.length != 33) {\n throw new Error(`Improperly formatted private-key. Private-key byte length should be 32 or 33. Length provided: ${privateKeyBuffer.length}`);\n }\n if (privateKeyBuffer.length == 33 && privateKeyBuffer[32] !== 1) {\n throw new Error('Improperly formatted private-key. 33 bytes indicate compressed key, but the last byte must be == 01');\n }\n return privateKeyBuffer;\n}\n//# sourceMappingURL=keys.js.map","export function equals(a, b) {\n if (a.byteLength !== b.byteLength)\n return false;\n for (let i = 0; i < a.byteLength; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n}\nexport function alloc(length, value) {\n const a = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n a[i] = value;\n }\n return a;\n}\nexport function readUInt16BE(source, offset) {\n return ((source[offset + 0] << 8) | source[offset + 1]) >>> 0;\n}\nexport function writeUInt16BE(destination, value, offset = 0) {\n destination[offset + 0] = value >>> 8;\n destination[offset + 1] = value >>> 0;\n return destination;\n}\nexport function readUInt8(source, offset) {\n return source[offset];\n}\nexport function writeUInt8(destination, value, offset = 0) {\n destination[offset] = value;\n return destination;\n}\nexport function readUInt16LE(source, offset) {\n return ((source[offset + 0] << 0) >>> 0) | ((source[offset + 1] << 8) >>> 0);\n}\nexport function writeUInt16LE(destination, value, offset = 0) {\n destination[offset + 0] = value & 255;\n value >>>= 8;\n destination[offset + 1] = value & 255;\n return destination;\n}\nexport function readUInt32BE(source, offset) {\n return (source[offset] * 2 ** 24 +\n source[offset + 1] * 2 ** 16 +\n source[offset + 2] * 2 ** 8 +\n source[offset + 3]);\n}\nexport function writeUInt32BE(destination, value, offset = 0) {\n destination[offset + 3] = value;\n value >>>= 8;\n destination[offset + 2] = value;\n value >>>= 8;\n destination[offset + 1] = value;\n value >>>= 8;\n destination[offset] = value;\n return destination;\n}\nexport function readUInt32LE(source, offset) {\n return (((source[offset + 0] << 0) >>> 0) |\n ((source[offset + 1] << 8) >>> 0) |\n ((source[offset + 2] << 16) >>> 0) |\n ((source[offset + 3] << 24) >>> 0));\n}\nexport function writeUInt32LE(destination, value, offset = 0) {\n destination[offset + 0] = value & 255;\n value >>>= 8;\n destination[offset + 1] = value & 255;\n value >>>= 8;\n destination[offset + 2] = value & 255;\n value >>>= 8;\n destination[offset + 3] = value & 255;\n return destination;\n}\n//# sourceMappingURL=buffer.js.map","import { TransactionVersion, ChainID } from '@stacks/common';\nimport { createFetchFn } from './fetch';\nexport const HIRO_MAINNET_DEFAULT = 'https://api.mainnet.hiro.so';\nexport const HIRO_TESTNET_DEFAULT = 'https://api.testnet.hiro.so';\nexport const HIRO_MOCKNET_DEFAULT = 'http://localhost:3999';\nexport const StacksNetworks = ['mainnet', 'testnet', 'devnet', 'mocknet'];\nexport class StacksNetwork {\n constructor(networkConfig) {\n this.version = TransactionVersion.Mainnet;\n this.chainId = ChainID.Mainnet;\n this.bnsLookupUrl = 'https://api.mainnet.hiro.so';\n this.broadcastEndpoint = '/v2/transactions';\n this.transferFeeEstimateEndpoint = '/v2/fees/transfer';\n this.transactionFeeEstimateEndpoint = '/v2/fees/transaction';\n this.accountEndpoint = '/v2/accounts';\n this.contractAbiEndpoint = '/v2/contracts/interface';\n this.readOnlyFunctionCallEndpoint = '/v2/contracts/call-read';\n this.isMainnet = () => this.version === TransactionVersion.Mainnet;\n this.getBroadcastApiUrl = () => `${this.coreApiUrl}${this.broadcastEndpoint}`;\n this.getTransferFeeEstimateApiUrl = () => `${this.coreApiUrl}${this.transferFeeEstimateEndpoint}`;\n this.getTransactionFeeEstimateApiUrl = () => `${this.coreApiUrl}${this.transactionFeeEstimateEndpoint}`;\n this.getAccountApiUrl = (address) => `${this.coreApiUrl}${this.accountEndpoint}/${address}?proof=0`;\n this.getAccountExtendedBalancesApiUrl = (address) => `${this.coreApiUrl}/extended/v1/address/${address}/balances`;\n this.getAbiApiUrl = (address, contract) => `${this.coreApiUrl}${this.contractAbiEndpoint}/${address}/${contract}`;\n this.getReadOnlyFunctionCallApiUrl = (contractAddress, contractName, functionName) => `${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint}/${contractAddress}/${contractName}/${encodeURIComponent(functionName)}`;\n this.getInfoUrl = () => `${this.coreApiUrl}/v2/info`;\n this.getBlockTimeInfoUrl = () => `${this.coreApiUrl}/extended/v1/info/network_block_times`;\n this.getPoxInfoUrl = () => `${this.coreApiUrl}/v2/pox`;\n this.getRewardsUrl = (address, options) => {\n let url = `${this.coreApiUrl}/extended/v1/burnchain/rewards/${address}`;\n if (options) {\n url = `${url}?limit=${options.limit}&offset=${options.offset}`;\n }\n return url;\n };\n this.getRewardsTotalUrl = (address) => `${this.coreApiUrl}/extended/v1/burnchain/rewards/${address}/total`;\n this.getRewardHoldersUrl = (address, options) => {\n let url = `${this.coreApiUrl}/extended/v1/burnchain/reward_slot_holders/${address}`;\n if (options) {\n url = `${url}?limit=${options.limit}&offset=${options.offset}`;\n }\n return url;\n };\n this.getStackerInfoUrl = (contractAddress, contractName) => `${this.coreApiUrl}${this.readOnlyFunctionCallEndpoint}\n ${contractAddress}/${contractName}/get-stacker-info`;\n this.getDataVarUrl = (contractAddress, contractName, dataVarName) => `${this.coreApiUrl}/v2/data_var/${contractAddress}/${contractName}/${dataVarName}?proof=0`;\n this.getMapEntryUrl = (contractAddress, contractName, mapName) => `${this.coreApiUrl}/v2/map_entry/${contractAddress}/${contractName}/${mapName}?proof=0`;\n this.coreApiUrl = networkConfig.url;\n this.fetchFn = networkConfig.fetchFn ?? createFetchFn();\n }\n getNameInfo(fullyQualifiedName) {\n const nameLookupURL = `${this.bnsLookupUrl}/v1/names/${fullyQualifiedName}`;\n return this.fetchFn(nameLookupURL)\n .then(resp => {\n if (resp.status === 404) {\n throw new Error('Name not found');\n }\n else if (resp.status !== 200) {\n throw new Error(`Bad response status: ${resp.status}`);\n }\n else {\n return resp.json();\n }\n })\n .then(nameInfo => {\n if (nameInfo.address) {\n return Object.assign({}, nameInfo, { address: nameInfo.address });\n }\n else {\n return nameInfo;\n }\n });\n }\n}\nStacksNetwork.fromName = (networkName) => {\n switch (networkName) {\n case 'mainnet':\n return new StacksMainnet();\n case 'testnet':\n return new StacksTestnet();\n case 'devnet':\n return new StacksDevnet();\n case 'mocknet':\n return new StacksMocknet();\n default:\n throw new Error(`Invalid network name provided. Must be one of the following: ${StacksNetworks.join(', ')}`);\n }\n};\nStacksNetwork.fromNameOrNetwork = (network) => {\n if (typeof network !== 'string' && 'version' in network) {\n return network;\n }\n return StacksNetwork.fromName(network);\n};\nexport class StacksMainnet extends StacksNetwork {\n constructor(opts) {\n super({\n url: opts?.url ?? HIRO_MAINNET_DEFAULT,\n fetchFn: opts?.fetchFn,\n });\n this.version = TransactionVersion.Mainnet;\n this.chainId = ChainID.Mainnet;\n }\n}\nexport class StacksTestnet extends StacksNetwork {\n constructor(opts) {\n super({\n url: opts?.url ?? HIRO_TESTNET_DEFAULT,\n fetchFn: opts?.fetchFn,\n });\n this.version = TransactionVersion.Testnet;\n this.chainId = ChainID.Testnet;\n }\n}\nexport class StacksMocknet extends StacksNetwork {\n constructor(opts) {\n super({\n url: opts?.url ?? HIRO_MOCKNET_DEFAULT,\n fetchFn: opts?.fetchFn,\n });\n this.version = TransactionVersion.Testnet;\n this.chainId = ChainID.Testnet;\n }\n}\nexport const StacksDevnet = StacksMocknet;\n//# sourceMappingURL=network.js.map","export var ChainID;\n(function (ChainID) {\n ChainID[ChainID[\"Testnet\"] = 2147483648] = \"Testnet\";\n ChainID[ChainID[\"Mainnet\"] = 1] = \"Mainnet\";\n})(ChainID || (ChainID = {}));\nexport const DEFAULT_CHAIN_ID = ChainID.Mainnet;\nexport const MAX_STRING_LENGTH_BYTES = 128;\nexport const CLARITY_INT_SIZE = 128;\nexport const CLARITY_INT_BYTE_SIZE = 16;\nexport const COINBASE_BYTES_LENGTH = 32;\nexport const VRF_PROOF_BYTES_LENGTH = 80;\nexport const RECOVERABLE_ECDSA_SIG_LENGTH_BYTES = 65;\nexport const COMPRESSED_PUBKEY_LENGTH_BYTES = 32;\nexport const UNCOMPRESSED_PUBKEY_LENGTH_BYTES = 64;\nexport const MEMO_MAX_LENGTH_BYTES = 34;\nexport const DEFAULT_CORE_NODE_API_URL = 'https://api.mainnet.hiro.so';\nexport var StacksMessageType;\n(function (StacksMessageType) {\n StacksMessageType[StacksMessageType[\"Address\"] = 0] = \"Address\";\n StacksMessageType[StacksMessageType[\"Principal\"] = 1] = \"Principal\";\n StacksMessageType[StacksMessageType[\"LengthPrefixedString\"] = 2] = \"LengthPrefixedString\";\n StacksMessageType[StacksMessageType[\"MemoString\"] = 3] = \"MemoString\";\n StacksMessageType[StacksMessageType[\"AssetInfo\"] = 4] = \"AssetInfo\";\n StacksMessageType[StacksMessageType[\"PostCondition\"] = 5] = \"PostCondition\";\n StacksMessageType[StacksMessageType[\"PublicKey\"] = 6] = \"PublicKey\";\n StacksMessageType[StacksMessageType[\"LengthPrefixedList\"] = 7] = \"LengthPrefixedList\";\n StacksMessageType[StacksMessageType[\"Payload\"] = 8] = \"Payload\";\n StacksMessageType[StacksMessageType[\"MessageSignature\"] = 9] = \"MessageSignature\";\n StacksMessageType[StacksMessageType[\"StructuredDataSignature\"] = 10] = \"StructuredDataSignature\";\n StacksMessageType[StacksMessageType[\"TransactionAuthField\"] = 11] = \"TransactionAuthField\";\n})(StacksMessageType || (StacksMessageType = {}));\nexport function whenMessageType(messageType) {\n return (messageTypeMap) => messageTypeMap[messageType];\n}\nexport var PayloadType;\n(function (PayloadType) {\n PayloadType[PayloadType[\"TokenTransfer\"] = 0] = \"TokenTransfer\";\n PayloadType[PayloadType[\"SmartContract\"] = 1] = \"SmartContract\";\n PayloadType[PayloadType[\"VersionedSmartContract\"] = 6] = \"VersionedSmartContract\";\n PayloadType[PayloadType[\"ContractCall\"] = 2] = \"ContractCall\";\n PayloadType[PayloadType[\"PoisonMicroblock\"] = 3] = \"PoisonMicroblock\";\n PayloadType[PayloadType[\"Coinbase\"] = 4] = \"Coinbase\";\n PayloadType[PayloadType[\"CoinbaseToAltRecipient\"] = 5] = \"CoinbaseToAltRecipient\";\n PayloadType[PayloadType[\"TenureChange\"] = 7] = \"TenureChange\";\n PayloadType[PayloadType[\"NakamotoCoinbase\"] = 8] = \"NakamotoCoinbase\";\n})(PayloadType || (PayloadType = {}));\nexport var ClarityVersion;\n(function (ClarityVersion) {\n ClarityVersion[ClarityVersion[\"Clarity1\"] = 1] = \"Clarity1\";\n ClarityVersion[ClarityVersion[\"Clarity2\"] = 2] = \"Clarity2\";\n ClarityVersion[ClarityVersion[\"Clarity3\"] = 3] = \"Clarity3\";\n})(ClarityVersion || (ClarityVersion = {}));\nexport var AnchorMode;\n(function (AnchorMode) {\n AnchorMode[AnchorMode[\"OnChainOnly\"] = 1] = \"OnChainOnly\";\n AnchorMode[AnchorMode[\"OffChainOnly\"] = 2] = \"OffChainOnly\";\n AnchorMode[AnchorMode[\"Any\"] = 3] = \"Any\";\n})(AnchorMode || (AnchorMode = {}));\nexport const AnchorModeNames = ['onChainOnly', 'offChainOnly', 'any'];\nconst AnchorModeMap = {\n [AnchorModeNames[0]]: AnchorMode.OnChainOnly,\n [AnchorModeNames[1]]: AnchorMode.OffChainOnly,\n [AnchorModeNames[2]]: AnchorMode.Any,\n [AnchorMode.OnChainOnly]: AnchorMode.OnChainOnly,\n [AnchorMode.OffChainOnly]: AnchorMode.OffChainOnly,\n [AnchorMode.Any]: AnchorMode.Any,\n};\nexport function anchorModeFromNameOrValue(mode) {\n if (mode in AnchorModeMap)\n return AnchorModeMap[mode];\n throw new Error(`Invalid anchor mode \"${mode}\", must be one of: ${AnchorModeNames.join(', ')}`);\n}\nexport var TransactionVersion;\n(function (TransactionVersion) {\n TransactionVersion[TransactionVersion[\"Mainnet\"] = 0] = \"Mainnet\";\n TransactionVersion[TransactionVersion[\"Testnet\"] = 128] = \"Testnet\";\n})(TransactionVersion || (TransactionVersion = {}));\nexport const DEFAULT_TRANSACTION_VERSION = TransactionVersion.Mainnet;\nexport var PostConditionMode;\n(function (PostConditionMode) {\n PostConditionMode[PostConditionMode[\"Allow\"] = 1] = \"Allow\";\n PostConditionMode[PostConditionMode[\"Deny\"] = 2] = \"Deny\";\n})(PostConditionMode || (PostConditionMode = {}));\nexport var PostConditionType;\n(function (PostConditionType) {\n PostConditionType[PostConditionType[\"STX\"] = 0] = \"STX\";\n PostConditionType[PostConditionType[\"Fungible\"] = 1] = \"Fungible\";\n PostConditionType[PostConditionType[\"NonFungible\"] = 2] = \"NonFungible\";\n})(PostConditionType || (PostConditionType = {}));\nexport var AuthType;\n(function (AuthType) {\n AuthType[AuthType[\"Standard\"] = 4] = \"Standard\";\n AuthType[AuthType[\"Sponsored\"] = 5] = \"Sponsored\";\n})(AuthType || (AuthType = {}));\nexport var AddressHashMode;\n(function (AddressHashMode) {\n AddressHashMode[AddressHashMode[\"SerializeP2PKH\"] = 0] = \"SerializeP2PKH\";\n AddressHashMode[AddressHashMode[\"SerializeP2SH\"] = 1] = \"SerializeP2SH\";\n AddressHashMode[AddressHashMode[\"SerializeP2WPKH\"] = 2] = \"SerializeP2WPKH\";\n AddressHashMode[AddressHashMode[\"SerializeP2WSH\"] = 3] = \"SerializeP2WSH\";\n AddressHashMode[AddressHashMode[\"SerializeP2SHNonSequential\"] = 5] = \"SerializeP2SHNonSequential\";\n AddressHashMode[AddressHashMode[\"SerializeP2WSHNonSequential\"] = 7] = \"SerializeP2WSHNonSequential\";\n})(AddressHashMode || (AddressHashMode = {}));\nexport var AddressVersion;\n(function (AddressVersion) {\n AddressVersion[AddressVersion[\"MainnetSingleSig\"] = 22] = \"MainnetSingleSig\";\n AddressVersion[AddressVersion[\"MainnetMultiSig\"] = 20] = \"MainnetMultiSig\";\n AddressVersion[AddressVersion[\"TestnetSingleSig\"] = 26] = \"TestnetSingleSig\";\n AddressVersion[AddressVersion[\"TestnetMultiSig\"] = 21] = \"TestnetMultiSig\";\n})(AddressVersion || (AddressVersion = {}));\nexport var PubKeyEncoding;\n(function (PubKeyEncoding) {\n PubKeyEncoding[PubKeyEncoding[\"Compressed\"] = 0] = \"Compressed\";\n PubKeyEncoding[PubKeyEncoding[\"Uncompressed\"] = 1] = \"Uncompressed\";\n})(PubKeyEncoding || (PubKeyEncoding = {}));\nexport var FungibleConditionCode;\n(function (FungibleConditionCode) {\n FungibleConditionCode[FungibleConditionCode[\"Equal\"] = 1] = \"Equal\";\n FungibleConditionCode[FungibleConditionCode[\"Greater\"] = 2] = \"Greater\";\n FungibleConditionCode[FungibleConditionCode[\"GreaterEqual\"] = 3] = \"GreaterEqual\";\n FungibleConditionCode[FungibleConditionCode[\"Less\"] = 4] = \"Less\";\n FungibleConditionCode[FungibleConditionCode[\"LessEqual\"] = 5] = \"LessEqual\";\n})(FungibleConditionCode || (FungibleConditionCode = {}));\nexport var NonFungibleConditionCode;\n(function (NonFungibleConditionCode) {\n NonFungibleConditionCode[NonFungibleConditionCode[\"Sends\"] = 16] = \"Sends\";\n NonFungibleConditionCode[NonFungibleConditionCode[\"DoesNotSend\"] = 17] = \"DoesNotSend\";\n})(NonFungibleConditionCode || (NonFungibleConditionCode = {}));\nexport var PostConditionPrincipalID;\n(function (PostConditionPrincipalID) {\n PostConditionPrincipalID[PostConditionPrincipalID[\"Origin\"] = 1] = \"Origin\";\n PostConditionPrincipalID[PostConditionPrincipalID[\"Standard\"] = 2] = \"Standard\";\n PostConditionPrincipalID[PostConditionPrincipalID[\"Contract\"] = 3] = \"Contract\";\n})(PostConditionPrincipalID || (PostConditionPrincipalID = {}));\nexport var AssetType;\n(function (AssetType) {\n AssetType[AssetType[\"STX\"] = 0] = \"STX\";\n AssetType[AssetType[\"Fungible\"] = 1] = \"Fungible\";\n AssetType[AssetType[\"NonFungible\"] = 2] = \"NonFungible\";\n})(AssetType || (AssetType = {}));\nexport var TxRejectedReason;\n(function (TxRejectedReason) {\n TxRejectedReason[\"Serialization\"] = \"Serialization\";\n TxRejectedReason[\"Deserialization\"] = \"Deserialization\";\n TxRejectedReason[\"SignatureValidation\"] = \"SignatureValidation\";\n TxRejectedReason[\"FeeTooLow\"] = \"FeeTooLow\";\n TxRejectedReason[\"BadNonce\"] = \"BadNonce\";\n TxRejectedReason[\"NotEnoughFunds\"] = \"NotEnoughFunds\";\n TxRejectedReason[\"NoSuchContract\"] = \"NoSuchContract\";\n TxRejectedReason[\"NoSuchPublicFunction\"] = \"NoSuchPublicFunction\";\n TxRejectedReason[\"BadFunctionArgument\"] = \"BadFunctionArgument\";\n TxRejectedReason[\"ContractAlreadyExists\"] = \"ContractAlreadyExists\";\n TxRejectedReason[\"PoisonMicroblocksDoNotConflict\"] = \"PoisonMicroblocksDoNotConflict\";\n TxRejectedReason[\"PoisonMicroblockHasUnknownPubKeyHash\"] = \"PoisonMicroblockHasUnknownPubKeyHash\";\n TxRejectedReason[\"PoisonMicroblockIsInvalid\"] = \"PoisonMicroblockIsInvalid\";\n TxRejectedReason[\"BadAddressVersionByte\"] = \"BadAddressVersionByte\";\n TxRejectedReason[\"NoCoinbaseViaMempool\"] = \"NoCoinbaseViaMempool\";\n TxRejectedReason[\"ServerFailureNoSuchChainTip\"] = \"ServerFailureNoSuchChainTip\";\n TxRejectedReason[\"TooMuchChaining\"] = \"TooMuchChaining\";\n TxRejectedReason[\"ConflictingNonceInMempool\"] = \"ConflictingNonceInMempool\";\n TxRejectedReason[\"BadTransactionVersion\"] = \"BadTransactionVersion\";\n TxRejectedReason[\"TransferRecipientCannotEqualSender\"] = \"TransferRecipientCannotEqualSender\";\n TxRejectedReason[\"TransferAmountMustBePositive\"] = \"TransferAmountMustBePositive\";\n TxRejectedReason[\"ServerFailureDatabase\"] = \"ServerFailureDatabase\";\n TxRejectedReason[\"EstimatorError\"] = \"EstimatorError\";\n TxRejectedReason[\"TemporarilyBlacklisted\"] = \"TemporarilyBlacklisted\";\n TxRejectedReason[\"ServerFailureOther\"] = \"ServerFailureOther\";\n})(TxRejectedReason || (TxRejectedReason = {}));\n//# sourceMappingURL=constants.js.map","import { AddressHashMode, AddressVersion, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, StacksMessageType, TransactionVersion, } from './constants';\nimport { c32address } from 'c32check';\nimport { hexToBytes } from '@stacks/common';\nexport function createMessageSignature(signature) {\n const length = hexToBytes(signature).byteLength;\n if (length != RECOVERABLE_ECDSA_SIG_LENGTH_BYTES) {\n throw Error('Invalid signature');\n }\n return {\n type: StacksMessageType.MessageSignature,\n data: signature,\n };\n}\nexport function addressHashModeToVersion(hashMode, txVersion) {\n switch (hashMode) {\n case AddressHashMode.SerializeP2PKH:\n switch (txVersion) {\n case TransactionVersion.Mainnet:\n return AddressVersion.MainnetSingleSig;\n case TransactionVersion.Testnet:\n return AddressVersion.TestnetSingleSig;\n default:\n throw new Error(`Unexpected txVersion ${JSON.stringify(txVersion)} for hashMode ${hashMode}`);\n }\n case AddressHashMode.SerializeP2SH:\n case AddressHashMode.SerializeP2SHNonSequential:\n case AddressHashMode.SerializeP2WPKH:\n case AddressHashMode.SerializeP2WSH:\n case AddressHashMode.SerializeP2WSHNonSequential:\n switch (txVersion) {\n case TransactionVersion.Mainnet:\n return AddressVersion.MainnetMultiSig;\n case TransactionVersion.Testnet:\n return AddressVersion.TestnetMultiSig;\n default:\n throw new Error(`Unexpected txVersion ${JSON.stringify(txVersion)} for hashMode ${hashMode}`);\n }\n default:\n throw new Error(`Unexpected hashMode ${JSON.stringify(hashMode)}`);\n }\n}\nexport function addressFromVersionHash(version, hash) {\n return { type: StacksMessageType.Address, version, hash160: hash };\n}\nexport function addressToString(address) {\n return c32address(address.version, address.hash160);\n}\n//# sourceMappingURL=common.js.map","import { MAX_STRING_LENGTH_BYTES, PostConditionPrincipalID, StacksMessageType, } from './constants';\nimport { c32addressDecode } from 'c32check';\nimport { exceedsMaxLengthBytes } from './utils';\nexport function parseAssetInfoString(id) {\n const [assetAddress, assetContractName, assetTokenName] = id.split(/\\.|::/);\n const assetInfo = createAssetInfo(assetAddress, assetContractName, assetTokenName);\n return assetInfo;\n}\nexport function createLPString(content, lengthPrefixBytes, maxLengthBytes) {\n const prefixLength = lengthPrefixBytes || 1;\n const maxLength = maxLengthBytes || MAX_STRING_LENGTH_BYTES;\n if (exceedsMaxLengthBytes(content, maxLength)) {\n throw new Error(`String length exceeds maximum bytes ${maxLength}`);\n }\n return {\n type: StacksMessageType.LengthPrefixedString,\n content,\n lengthPrefixBytes: prefixLength,\n maxLengthBytes: maxLength,\n };\n}\nexport function createAssetInfo(addressString, contractName, assetName) {\n return {\n type: StacksMessageType.AssetInfo,\n address: createAddress(addressString),\n contractName: createLPString(contractName),\n assetName: createLPString(assetName),\n };\n}\nexport function createAddress(c32AddressString) {\n const addressData = c32addressDecode(c32AddressString);\n return {\n type: StacksMessageType.Address,\n version: addressData[0],\n hash160: addressData[1],\n };\n}\nexport function parsePrincipalString(principalString) {\n if (principalString.includes('.')) {\n const [address, contractName] = principalString.split('.');\n return createContractPrincipal(address, contractName);\n }\n else {\n return createStandardPrincipal(principalString);\n }\n}\nexport function createContractPrincipal(addressString, contractName) {\n const addr = createAddress(addressString);\n const name = createLPString(contractName);\n return {\n type: StacksMessageType.Principal,\n prefix: PostConditionPrincipalID.Contract,\n address: addr,\n contractName: name,\n };\n}\nexport function createStandardPrincipal(addressString) {\n const addr = createAddress(addressString);\n return {\n type: StacksMessageType.Principal,\n prefix: PostConditionPrincipalID.Standard,\n address: addr,\n };\n}\n//# sourceMappingURL=postcondition-types.js.map","export var ClarityType;\n(function (ClarityType) {\n ClarityType[ClarityType[\"Int\"] = 0] = \"Int\";\n ClarityType[ClarityType[\"UInt\"] = 1] = \"UInt\";\n ClarityType[ClarityType[\"Buffer\"] = 2] = \"Buffer\";\n ClarityType[ClarityType[\"BoolTrue\"] = 3] = \"BoolTrue\";\n ClarityType[ClarityType[\"BoolFalse\"] = 4] = \"BoolFalse\";\n ClarityType[ClarityType[\"PrincipalStandard\"] = 5] = \"PrincipalStandard\";\n ClarityType[ClarityType[\"PrincipalContract\"] = 6] = \"PrincipalContract\";\n ClarityType[ClarityType[\"ResponseOk\"] = 7] = \"ResponseOk\";\n ClarityType[ClarityType[\"ResponseErr\"] = 8] = \"ResponseErr\";\n ClarityType[ClarityType[\"OptionalNone\"] = 9] = \"OptionalNone\";\n ClarityType[ClarityType[\"OptionalSome\"] = 10] = \"OptionalSome\";\n ClarityType[ClarityType[\"List\"] = 11] = \"List\";\n ClarityType[ClarityType[\"Tuple\"] = 12] = \"Tuple\";\n ClarityType[ClarityType[\"StringASCII\"] = 13] = \"StringASCII\";\n ClarityType[ClarityType[\"StringUTF8\"] = 14] = \"StringUTF8\";\n})(ClarityType || (ClarityType = {}));\n//# sourceMappingURL=constants.js.map","import { utf8ToBytes } from '@stacks/common';\nimport { addressToString } from '../../common';\nimport { createAddress, createLPString } from '../../postcondition-types';\nimport { ClarityType } from '../constants';\nfunction principalToString(principal) {\n if (principal.type === ClarityType.PrincipalStandard) {\n return addressToString(principal.address);\n }\n else if (principal.type === ClarityType.PrincipalContract) {\n const address = addressToString(principal.address);\n return `${address}.${principal.contractName.content}`;\n }\n else {\n throw new Error(`Unexpected principal data: ${JSON.stringify(principal)}`);\n }\n}\nfunction principalCV(principal) {\n if (principal.includes('.')) {\n const [address, contractName] = principal.split('.');\n return contractPrincipalCV(address, contractName);\n }\n else {\n return standardPrincipalCV(principal);\n }\n}\nfunction standardPrincipalCV(addressString) {\n const addr = createAddress(addressString);\n return { type: ClarityType.PrincipalStandard, address: addr };\n}\nfunction standardPrincipalCVFromAddress(address) {\n return { type: ClarityType.PrincipalStandard, address };\n}\nfunction contractPrincipalCV(addressString, contractName) {\n const addr = createAddress(addressString);\n const lengthPrefixedContractName = createLPString(contractName);\n return contractPrincipalCVFromAddress(addr, lengthPrefixedContractName);\n}\nfunction contractPrincipalCVFromAddress(address, contractName) {\n if (utf8ToBytes(contractName.content).byteLength >= 128) {\n throw new Error('Contract name must be less than 128 bytes');\n }\n return { type: ClarityType.PrincipalContract, address, contractName };\n}\nfunction contractPrincipalCVFromStandard(sp, contractName) {\n const lengthPrefixedContractName = createLPString(contractName);\n return {\n type: ClarityType.PrincipalContract,\n address: sp.address,\n contractName: lengthPrefixedContractName,\n };\n}\nexport { principalCV, principalToString, standardPrincipalCV, standardPrincipalCVFromAddress, contractPrincipalCV, contractPrincipalCVFromAddress, contractPrincipalCVFromStandard, };\n//# sourceMappingURL=principalCV.js.map","import { principalToString } from './types/principalCV';\nimport { ClarityType } from './constants';\nimport { asciiToBytes, bytesToAscii, bytesToHex, utf8ToBytes } from '@stacks/common';\nexport function cvToString(val, encoding = 'hex') {\n switch (val.type) {\n case ClarityType.BoolTrue:\n return 'true';\n case ClarityType.BoolFalse:\n return 'false';\n case ClarityType.Int:\n return val.value.toString();\n case ClarityType.UInt:\n return `u${val.value.toString()}`;\n case ClarityType.Buffer:\n if (encoding === 'tryAscii') {\n const str = bytesToAscii(val.buffer);\n if (/[ -~]/.test(str)) {\n return JSON.stringify(str);\n }\n }\n return `0x${bytesToHex(val.buffer)}`;\n case ClarityType.OptionalNone:\n return 'none';\n case ClarityType.OptionalSome:\n return `(some ${cvToString(val.value, encoding)})`;\n case ClarityType.ResponseErr:\n return `(err ${cvToString(val.value, encoding)})`;\n case ClarityType.ResponseOk:\n return `(ok ${cvToString(val.value, encoding)})`;\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return principalToString(val);\n case ClarityType.List:\n return `(list ${val.list.map(v => cvToString(v, encoding)).join(' ')})`;\n case ClarityType.Tuple:\n return `(tuple ${Object.keys(val.data)\n .map(key => `(${key} ${cvToString(val.data[key], encoding)})`)\n .join(' ')})`;\n case ClarityType.StringASCII:\n return `\"${val.data}\"`;\n case ClarityType.StringUTF8:\n return `u\"${val.data}\"`;\n }\n}\nexport function cvToValue(val, strictJsonCompat = false) {\n switch (val.type) {\n case ClarityType.BoolTrue:\n return true;\n case ClarityType.BoolFalse:\n return false;\n case ClarityType.Int:\n case ClarityType.UInt:\n if (strictJsonCompat) {\n return val.value.toString();\n }\n return val.value;\n case ClarityType.Buffer:\n return `0x${bytesToHex(val.buffer)}`;\n case ClarityType.OptionalNone:\n return null;\n case ClarityType.OptionalSome:\n return cvToJSON(val.value);\n case ClarityType.ResponseErr:\n return cvToJSON(val.value);\n case ClarityType.ResponseOk:\n return cvToJSON(val.value);\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return principalToString(val);\n case ClarityType.List:\n return val.list.map(v => cvToJSON(v));\n case ClarityType.Tuple:\n const result = {};\n Object.keys(val.data).forEach(key => {\n result[key] = cvToJSON(val.data[key]);\n });\n return result;\n case ClarityType.StringASCII:\n return val.data;\n case ClarityType.StringUTF8:\n return val.data;\n }\n}\nexport function cvToJSON(val) {\n switch (val.type) {\n case ClarityType.ResponseErr:\n return { type: getCVTypeString(val), value: cvToValue(val, true), success: false };\n case ClarityType.ResponseOk:\n return { type: getCVTypeString(val), value: cvToValue(val, true), success: true };\n default:\n return { type: getCVTypeString(val), value: cvToValue(val, true) };\n }\n}\nexport function getCVTypeString(val) {\n switch (val.type) {\n case ClarityType.BoolTrue:\n case ClarityType.BoolFalse:\n return 'bool';\n case ClarityType.Int:\n return 'int';\n case ClarityType.UInt:\n return 'uint';\n case ClarityType.Buffer:\n return `(buff ${val.buffer.length})`;\n case ClarityType.OptionalNone:\n return '(optional none)';\n case ClarityType.OptionalSome:\n return `(optional ${getCVTypeString(val.value)})`;\n case ClarityType.ResponseErr:\n return `(response UnknownType ${getCVTypeString(val.value)})`;\n case ClarityType.ResponseOk:\n return `(response ${getCVTypeString(val.value)} UnknownType)`;\n case ClarityType.PrincipalStandard:\n case ClarityType.PrincipalContract:\n return 'principal';\n case ClarityType.List:\n return `(list ${val.list.length} ${val.list.length ? getCVTypeString(val.list[0]) : 'UnknownType'})`;\n case ClarityType.Tuple:\n return `(tuple ${Object.keys(val.data)\n .map(key => `(${key} ${getCVTypeString(val.data[key])})`)\n .join(' ')})`;\n case ClarityType.StringASCII:\n return `(string-ascii ${asciiToBytes(val.data).length})`;\n case ClarityType.StringUTF8:\n return `(string-utf8 ${utf8ToBytes(val.data).length})`;\n }\n}\nexport function isClarityType(input, withType) {\n return input.type === withType;\n}\n//# sourceMappingURL=clarityValue.js.map","import { ClarityType } from '../constants';\nconst trueCV = () => ({ type: ClarityType.BoolTrue });\nconst falseCV = () => ({ type: ClarityType.BoolFalse });\nconst boolCV = (bool) => (bool ? trueCV() : falseCV());\nexport { boolCV, trueCV, falseCV };\n//# sourceMappingURL=booleanCV.js.map","import { intToBigInt } from '@stacks/common';\nimport { ClarityType } from '../constants';\nconst MAX_U128 = BigInt('0xffffffffffffffffffffffffffffffff');\nconst MIN_U128 = BigInt(0);\nconst MAX_I128 = BigInt('0x7fffffffffffffffffffffffffffffff');\nconst MIN_I128 = BigInt('-170141183460469231731687303715884105728');\nconst intCV = (value) => {\n const bigInt = intToBigInt(value, true);\n if (bigInt > MAX_I128) {\n throw new RangeError(`Cannot construct clarity integer from value greater than ${MAX_I128}`);\n }\n else if (bigInt < MIN_I128) {\n throw new RangeError(`Cannot construct clarity integer form value less than ${MIN_I128}`);\n }\n return { type: ClarityType.Int, value: bigInt };\n};\nconst uintCV = (value) => {\n const bigInt = intToBigInt(value, false);\n if (bigInt < MIN_U128) {\n throw new RangeError('Cannot construct unsigned clarity integer from negative value');\n }\n else if (bigInt > MAX_U128) {\n throw new RangeError(`Cannot construct unsigned clarity integer greater than ${MAX_U128}`);\n }\n return { type: ClarityType.UInt, value: bigInt };\n};\nexport { intCV, uintCV };\n//# sourceMappingURL=intCV.js.map","import { utf8ToBytes } from '@stacks/common';\nimport { ClarityType } from '../constants';\nconst bufferCV = (buffer) => {\n if (buffer.byteLength > 1048576) {\n throw new Error('Cannot construct clarity buffer that is greater than 1MB');\n }\n return { type: ClarityType.Buffer, buffer };\n};\nconst bufferCVFromString = (str) => bufferCV(utf8ToBytes(str));\nexport { bufferCV, bufferCVFromString };\n//# sourceMappingURL=bufferCV.js.map","import { ClarityType } from '../constants';\nfunction noneCV() {\n return { type: ClarityType.OptionalNone };\n}\nfunction someCV(value) {\n return { type: ClarityType.OptionalSome, value };\n}\nfunction optionalCVOf(value) {\n if (value) {\n return someCV(value);\n }\n else {\n return noneCV();\n }\n}\nexport { noneCV, someCV, optionalCVOf };\n//# sourceMappingURL=optionalCV.js.map","import { ClarityType } from '../constants';\nfunction responseErrorCV(value) {\n return { type: ClarityType.ResponseErr, value };\n}\nfunction responseOkCV(value) {\n return { type: ClarityType.ResponseOk, value };\n}\nexport { responseErrorCV, responseOkCV };\n//# sourceMappingURL=responseCV.js.map","import { ClarityType } from '../constants';\nfunction listCV(values) {\n return { type: ClarityType.List, list: values };\n}\nexport { listCV };\n//# sourceMappingURL=listCV.js.map","import { ClarityType } from '../constants';\nimport { isClarityName } from '../../utils';\nfunction tupleCV(data) {\n for (const key in data) {\n if (!isClarityName(key)) {\n throw new Error(`\"${key}\" is not a valid Clarity name`);\n }\n }\n return { type: ClarityType.Tuple, data };\n}\nexport { tupleCV };\n//# sourceMappingURL=tupleCV.js.map","import { ClarityType } from '../constants';\nconst stringAsciiCV = (data) => {\n return { type: ClarityType.StringASCII, data };\n};\nconst stringUtf8CV = (data) => {\n return { type: ClarityType.StringUTF8, data };\n};\nconst stringCV = (data, encoding) => {\n switch (encoding) {\n case 'ascii':\n return stringAsciiCV(data);\n case 'utf8':\n return stringUtf8CV(data);\n }\n};\nexport { stringAsciiCV, stringUtf8CV, stringCV };\n//# sourceMappingURL=stringCV.js.map","import { hmac } from '@noble/hashes/hmac';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { getPublicKey as nobleGetPublicKey, Point, Signature, signSync, utils, } from '@noble/secp256k1';\nimport { bytesToHex, concatArray, hexToBigInt, hexToBytes, intToHex, parseRecoverableSignatureVrs, privateKeyToBytes, PRIVATE_KEY_COMPRESSED_LENGTH, signatureRsvToVrs, signatureVrsToRsv, } from '@stacks/common';\nimport { c32address } from 'c32check';\nimport { addressFromVersionHash, addressHashModeToVersion, addressToString, createMessageSignature, } from './common';\nimport { AddressHashMode, COMPRESSED_PUBKEY_LENGTH_BYTES, PubKeyEncoding, StacksMessageType, TransactionVersion, UNCOMPRESSED_PUBKEY_LENGTH_BYTES, } from './constants';\nimport { hash160, hashP2PKH } from './utils';\nutils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac.create(sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\nexport function getAddressFromPrivateKey(privateKey, transactionVersion = TransactionVersion.Mainnet) {\n const pubKey = pubKeyfromPrivKey(privateKey);\n return getAddressFromPublicKey(pubKey.data, transactionVersion);\n}\nexport function getAddressFromPublicKey(publicKey, transactionVersion = TransactionVersion.Mainnet) {\n publicKey = typeof publicKey === 'string' ? publicKey : bytesToHex(publicKey);\n const addrVer = addressHashModeToVersion(AddressHashMode.SerializeP2PKH, transactionVersion);\n const addr = addressFromVersionHash(addrVer, hashP2PKH(hexToBytes(publicKey)));\n const addrString = addressToString(addr);\n return addrString;\n}\nexport function createStacksPublicKey(key) {\n return {\n type: StacksMessageType.PublicKey,\n data: hexToBytes(key),\n };\n}\nexport function publicKeyFromSignatureVrs(messageHash, messageSignature, pubKeyEncoding = PubKeyEncoding.Compressed) {\n const parsedSignature = parseRecoverableSignatureVrs(messageSignature.data);\n const signature = new Signature(hexToBigInt(parsedSignature.r), hexToBigInt(parsedSignature.s));\n const point = Point.fromSignature(messageHash, signature, parsedSignature.recoveryId);\n const compressed = pubKeyEncoding === PubKeyEncoding.Compressed;\n return point.toHex(compressed);\n}\nexport function publicKeyFromSignatureRsv(messageHash, messageSignature, pubKeyEncoding = PubKeyEncoding.Compressed) {\n return publicKeyFromSignatureVrs(messageHash, { ...messageSignature, data: signatureRsvToVrs(messageSignature.data) }, pubKeyEncoding);\n}\nexport function publicKeyFromBytes(data) {\n return { type: StacksMessageType.PublicKey, data };\n}\nexport function isCompressed(key) {\n return !bytesToHex(key.data).startsWith('04');\n}\nexport function publicKeyToString(key) {\n return bytesToHex(key.data);\n}\nexport function serializePublicKey(key) {\n return key.data.slice();\n}\nexport function pubKeyfromPrivKey(privateKey) {\n const privKey = createStacksPrivateKey(privateKey);\n const publicKey = nobleGetPublicKey(privKey.data.slice(0, 32), privKey.compressed);\n return createStacksPublicKey(bytesToHex(publicKey));\n}\nexport function compressPublicKey(publicKey) {\n const hex = typeof publicKey === 'string' ? publicKey : bytesToHex(publicKey);\n const compressed = Point.fromHex(hex).toHex(true);\n return createStacksPublicKey(compressed);\n}\nexport function uncompressPublicKey(publicKey) {\n const hex = typeof publicKey === 'string' ? publicKey : bytesToHex(publicKey);\n const compressed = Point.fromHex(hex).toHex(false);\n return createStacksPublicKey(compressed);\n}\nexport function deserializePublicKey(bytesReader) {\n const fieldId = bytesReader.readUInt8();\n const keyLength = fieldId === 4 ? UNCOMPRESSED_PUBKEY_LENGTH_BYTES : COMPRESSED_PUBKEY_LENGTH_BYTES;\n return publicKeyFromBytes(concatArray([fieldId, bytesReader.readBytes(keyLength)]));\n}\nexport function createStacksPrivateKey(key) {\n const data = privateKeyToBytes(key);\n const compressed = data.length == PRIVATE_KEY_COMPRESSED_LENGTH;\n return { data, compressed };\n}\nexport function makeRandomPrivKey() {\n return createStacksPrivateKey(utils.randomPrivateKey());\n}\nexport function signWithKey(privateKey, messageHash) {\n const [rawSignature, recoveryId] = signSync(messageHash, privateKey.data.slice(0, 32), {\n canonical: true,\n recovered: true,\n });\n if (recoveryId == null) {\n throw new Error('No signature recoveryId received');\n }\n const recoveryIdHex = intToHex(recoveryId, 1);\n const recoverableSignatureString = recoveryIdHex + Signature.fromHex(rawSignature).toCompactHex();\n return createMessageSignature(recoverableSignatureString);\n}\nexport function signMessageHashRsv({ messageHash, privateKey, }) {\n const messageSignature = signWithKey(privateKey, messageHash);\n return { ...messageSignature, data: signatureVrsToRsv(messageSignature.data) };\n}\nexport function getPublicKey(privateKey) {\n return pubKeyfromPrivKey(privateKey.data);\n}\nexport function privateKeyToString(privateKey) {\n return bytesToHex(privateKey.data);\n}\nexport function publicKeyToAddress(version, publicKey) {\n return c32address(version, bytesToHex(hash160(publicKey.data)));\n}\n//# sourceMappingURL=keys.js.map","import { bytesToHex, concatArray, hexToBytes, intToBigInt, intToBytes, writeUInt32BE, writeUInt8, } from '@stacks/common';\nimport { ClarityType, deserializeCV, noneCV, serializeCV, someCV, } from './clarity/';\nimport { principalCV } from './clarity/types/principalCV';\nimport { ClarityVersion, COINBASE_BYTES_LENGTH, PayloadType, StacksMessageType, VRF_PROOF_BYTES_LENGTH, } from './constants';\nimport { createAddress, createLPString } from './postcondition-types';\nimport { codeBodyString, createMemoString, deserializeAddress, deserializeLPString, deserializeMemoString, serializeStacksMessage, } from './types';\nexport function isTokenTransferPayload(p) {\n return p.payloadType === PayloadType.TokenTransfer;\n}\nexport function isContractCallPayload(p) {\n return p.payloadType === PayloadType.ContractCall;\n}\nexport function isSmartContractPayload(p) {\n return p.payloadType === PayloadType.SmartContract;\n}\nexport function isPoisonPayload(p) {\n return p.payloadType === PayloadType.PoisonMicroblock;\n}\nexport function isCoinbasePayload(p) {\n return p.payloadType === PayloadType.Coinbase;\n}\nexport function createTokenTransferPayload(recipient, amount, memo) {\n if (typeof recipient === 'string') {\n recipient = principalCV(recipient);\n }\n if (typeof memo === 'string') {\n memo = createMemoString(memo);\n }\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.TokenTransfer,\n recipient,\n amount: intToBigInt(amount, false),\n memo: memo ?? createMemoString(''),\n };\n}\nexport function createContractCallPayload(contractAddress, contractName, functionName, functionArgs) {\n if (typeof contractAddress === 'string') {\n contractAddress = createAddress(contractAddress);\n }\n if (typeof contractName === 'string') {\n contractName = createLPString(contractName);\n }\n if (typeof functionName === 'string') {\n functionName = createLPString(functionName);\n }\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.ContractCall,\n contractAddress,\n contractName,\n functionName,\n functionArgs,\n };\n}\nexport function createSmartContractPayload(contractName, codeBody, clarityVersion) {\n if (typeof contractName === 'string') {\n contractName = createLPString(contractName);\n }\n if (typeof codeBody === 'string') {\n codeBody = codeBodyString(codeBody);\n }\n if (typeof clarityVersion === 'number') {\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.VersionedSmartContract,\n clarityVersion,\n contractName,\n codeBody,\n };\n }\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.SmartContract,\n contractName,\n codeBody,\n };\n}\nexport function createPoisonPayload() {\n return { type: StacksMessageType.Payload, payloadType: PayloadType.PoisonMicroblock };\n}\nexport function createCoinbasePayload(coinbaseBytes, altRecipient) {\n if (coinbaseBytes.byteLength != COINBASE_BYTES_LENGTH) {\n throw Error(`Coinbase buffer size must be ${COINBASE_BYTES_LENGTH} bytes`);\n }\n if (altRecipient != undefined) {\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.CoinbaseToAltRecipient,\n coinbaseBytes,\n recipient: altRecipient,\n };\n }\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.Coinbase,\n coinbaseBytes,\n };\n}\nexport function createNakamotoCoinbasePayload(coinbaseBytes, recipient, vrfProof) {\n if (coinbaseBytes.byteLength != COINBASE_BYTES_LENGTH) {\n throw Error(`Coinbase buffer size must be ${COINBASE_BYTES_LENGTH} bytes`);\n }\n if (vrfProof.byteLength != VRF_PROOF_BYTES_LENGTH) {\n throw Error(`VRF proof buffer size must be ${VRF_PROOF_BYTES_LENGTH} bytes`);\n }\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.NakamotoCoinbase,\n coinbaseBytes,\n recipient: recipient.type === ClarityType.OptionalSome ? recipient.value : undefined,\n vrfProof,\n };\n}\nexport var TenureChangeCause;\n(function (TenureChangeCause) {\n TenureChangeCause[TenureChangeCause[\"BlockFound\"] = 0] = \"BlockFound\";\n TenureChangeCause[TenureChangeCause[\"Extended\"] = 1] = \"Extended\";\n})(TenureChangeCause || (TenureChangeCause = {}));\nexport function createTenureChangePayload(tenureHash, previousTenureHash, burnViewHash, previousTenureEnd, previousTenureBlocks, cause, publicKeyHash) {\n return {\n type: StacksMessageType.Payload,\n payloadType: PayloadType.TenureChange,\n tenureHash,\n previousTenureHash,\n burnViewHash,\n previousTenureEnd,\n previousTenureBlocks,\n cause,\n publicKeyHash,\n };\n}\nexport function serializePayload(payload) {\n const bytesArray = [];\n bytesArray.push(payload.payloadType);\n switch (payload.payloadType) {\n case PayloadType.TokenTransfer:\n bytesArray.push(serializeCV(payload.recipient));\n bytesArray.push(intToBytes(payload.amount, false, 8));\n bytesArray.push(serializeStacksMessage(payload.memo));\n break;\n case PayloadType.ContractCall:\n bytesArray.push(serializeStacksMessage(payload.contractAddress));\n bytesArray.push(serializeStacksMessage(payload.contractName));\n bytesArray.push(serializeStacksMessage(payload.functionName));\n const numArgs = new Uint8Array(4);\n writeUInt32BE(numArgs, payload.functionArgs.length, 0);\n bytesArray.push(numArgs);\n payload.functionArgs.forEach(arg => {\n bytesArray.push(serializeCV(arg));\n });\n break;\n case PayloadType.SmartContract:\n bytesArray.push(serializeStacksMessage(payload.contractName));\n bytesArray.push(serializeStacksMessage(payload.codeBody));\n break;\n case PayloadType.VersionedSmartContract:\n bytesArray.push(payload.clarityVersion);\n bytesArray.push(serializeStacksMessage(payload.contractName));\n bytesArray.push(serializeStacksMessage(payload.codeBody));\n break;\n case PayloadType.PoisonMicroblock:\n break;\n case PayloadType.Coinbase:\n bytesArray.push(payload.coinbaseBytes);\n break;\n case PayloadType.CoinbaseToAltRecipient:\n bytesArray.push(payload.coinbaseBytes);\n bytesArray.push(serializeCV(payload.recipient));\n break;\n case PayloadType.NakamotoCoinbase:\n bytesArray.push(payload.coinbaseBytes);\n bytesArray.push(serializeCV(payload.recipient ? someCV(payload.recipient) : noneCV()));\n bytesArray.push(payload.vrfProof);\n break;\n case PayloadType.TenureChange:\n bytesArray.push(hexToBytes(payload.tenureHash));\n bytesArray.push(hexToBytes(payload.previousTenureHash));\n bytesArray.push(hexToBytes(payload.burnViewHash));\n bytesArray.push(hexToBytes(payload.previousTenureEnd));\n bytesArray.push(writeUInt32BE(new Uint8Array(4), payload.previousTenureBlocks));\n bytesArray.push(writeUInt8(new Uint8Array(1), payload.cause));\n bytesArray.push(hexToBytes(payload.publicKeyHash));\n break;\n }\n return concatArray(bytesArray);\n}\nexport function deserializePayload(bytesReader) {\n const payloadType = bytesReader.readUInt8Enum(PayloadType, n => {\n throw new Error(`Cannot recognize PayloadType: ${n}`);\n });\n switch (payloadType) {\n case PayloadType.TokenTransfer:\n const recipient = deserializeCV(bytesReader);\n const amount = intToBigInt(bytesReader.readBytes(8), false);\n const memo = deserializeMemoString(bytesReader);\n return createTokenTransferPayload(recipient, amount, memo);\n case PayloadType.ContractCall:\n const contractAddress = deserializeAddress(bytesReader);\n const contractCallName = deserializeLPString(bytesReader);\n const functionName = deserializeLPString(bytesReader);\n const functionArgs = [];\n const numberOfArgs = bytesReader.readUInt32BE();\n for (let i = 0; i < numberOfArgs; i++) {\n const clarityValue = deserializeCV(bytesReader);\n functionArgs.push(clarityValue);\n }\n return createContractCallPayload(contractAddress, contractCallName, functionName, functionArgs);\n case PayloadType.SmartContract:\n const smartContractName = deserializeLPString(bytesReader);\n const codeBody = deserializeLPString(bytesReader, 4, 100000);\n return createSmartContractPayload(smartContractName, codeBody);\n case PayloadType.VersionedSmartContract: {\n const clarityVersion = bytesReader.readUInt8Enum(ClarityVersion, n => {\n throw new Error(`Cannot recognize ClarityVersion: ${n}`);\n });\n const smartContractName = deserializeLPString(bytesReader);\n const codeBody = deserializeLPString(bytesReader, 4, 100000);\n return createSmartContractPayload(smartContractName, codeBody, clarityVersion);\n }\n case PayloadType.PoisonMicroblock:\n return createPoisonPayload();\n case PayloadType.Coinbase: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n return createCoinbasePayload(coinbaseBytes);\n }\n case PayloadType.CoinbaseToAltRecipient: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n const altRecipient = deserializeCV(bytesReader);\n return createCoinbasePayload(coinbaseBytes, altRecipient);\n }\n case PayloadType.NakamotoCoinbase: {\n const coinbaseBytes = bytesReader.readBytes(COINBASE_BYTES_LENGTH);\n const recipient = deserializeCV(bytesReader);\n const vrfProof = bytesReader.readBytes(VRF_PROOF_BYTES_LENGTH);\n return createNakamotoCoinbasePayload(coinbaseBytes, recipient, vrfProof);\n }\n case PayloadType.TenureChange:\n const tenureHash = bytesToHex(bytesReader.readBytes(20));\n const previousTenureHash = bytesToHex(bytesReader.readBytes(20));\n const burnViewHash = bytesToHex(bytesReader.readBytes(20));\n const previousTenureEnd = bytesToHex(bytesReader.readBytes(32));\n const previousTenureBlocks = bytesReader.readUInt32BE();\n const cause = bytesReader.readUInt8Enum(TenureChangeCause, n => {\n throw new Error(`Cannot recognize TenureChangeCause: ${n}`);\n });\n const publicKeyHash = bytesToHex(bytesReader.readBytes(20));\n return createTenureChangePayload(tenureHash, previousTenureHash, burnViewHash, previousTenureEnd, previousTenureBlocks, cause, publicKeyHash);\n }\n}\n//# sourceMappingURL=payload.js.map","class TransactionError extends Error {\n constructor(message) {\n super(message);\n this.message = message;\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\nexport class SerializationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class DeserializationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class NoEstimateAvailableError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class NotImplementedError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class SigningError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\nexport class VerificationError extends TransactionError {\n constructor(message) {\n super(message);\n }\n}\n//# sourceMappingURL=errors.js.map","import { DeserializationError } from './errors';\nimport { PubKeyEncoding, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, StacksMessageType } from './constants';\nimport { compressPublicKey, deserializePublicKey, serializePublicKey, uncompressPublicKey, } from './keys';\nimport { createMessageSignature } from './common';\nimport { bytesToHex, concatArray, hexToBytes } from '@stacks/common';\nexport var AuthFieldType;\n(function (AuthFieldType) {\n AuthFieldType[AuthFieldType[\"PublicKeyCompressed\"] = 0] = \"PublicKeyCompressed\";\n AuthFieldType[AuthFieldType[\"PublicKeyUncompressed\"] = 1] = \"PublicKeyUncompressed\";\n AuthFieldType[AuthFieldType[\"SignatureCompressed\"] = 2] = \"SignatureCompressed\";\n AuthFieldType[AuthFieldType[\"SignatureUncompressed\"] = 3] = \"SignatureUncompressed\";\n})(AuthFieldType || (AuthFieldType = {}));\nexport function deserializeMessageSignature(bytesReader) {\n return createMessageSignature(bytesToHex(bytesReader.readBytes(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES)));\n}\nexport function createTransactionAuthField(pubKeyEncoding, contents) {\n return {\n pubKeyEncoding,\n type: StacksMessageType.TransactionAuthField,\n contents,\n };\n}\nexport function deserializeTransactionAuthField(bytesReader) {\n const authFieldType = bytesReader.readUInt8Enum(AuthFieldType, n => {\n throw new DeserializationError(`Could not read ${n} as AuthFieldType`);\n });\n switch (authFieldType) {\n case AuthFieldType.PublicKeyCompressed:\n return createTransactionAuthField(PubKeyEncoding.Compressed, deserializePublicKey(bytesReader));\n case AuthFieldType.PublicKeyUncompressed:\n return createTransactionAuthField(PubKeyEncoding.Uncompressed, uncompressPublicKey(deserializePublicKey(bytesReader).data));\n case AuthFieldType.SignatureCompressed:\n return createTransactionAuthField(PubKeyEncoding.Compressed, deserializeMessageSignature(bytesReader));\n case AuthFieldType.SignatureUncompressed:\n return createTransactionAuthField(PubKeyEncoding.Uncompressed, deserializeMessageSignature(bytesReader));\n default:\n throw new Error(`Unknown auth field type: ${JSON.stringify(authFieldType)}`);\n }\n}\nexport function serializeMessageSignature(messageSignature) {\n return hexToBytes(messageSignature.data);\n}\nexport function serializeTransactionAuthField(field) {\n const bytesArray = [];\n switch (field.contents.type) {\n case StacksMessageType.PublicKey:\n bytesArray.push(field.pubKeyEncoding === PubKeyEncoding.Compressed\n ? AuthFieldType.PublicKeyCompressed\n : AuthFieldType.PublicKeyUncompressed);\n bytesArray.push(serializePublicKey(compressPublicKey(field.contents.data)));\n break;\n case StacksMessageType.MessageSignature:\n bytesArray.push(field.pubKeyEncoding === PubKeyEncoding.Compressed\n ? AuthFieldType.SignatureCompressed\n : AuthFieldType.SignatureUncompressed);\n bytesArray.push(serializeMessageSignature(field.contents));\n break;\n }\n return concatArray(bytesArray);\n}\n//# sourceMappingURL=signature.js.map","import { bytesToHex, bytesToUtf8, concatArray, hexToBytes, hexToInt, intToBytes, intToHex, utf8ToBytes, } from '@stacks/common';\nimport { MEMO_MAX_LENGTH_BYTES, AddressHashMode, AddressVersion, StacksMessageType, PostConditionPrincipalID, PostConditionType, FungibleConditionCode, NonFungibleConditionCode, } from './constants';\nimport { serializePublicKey, deserializePublicKey, isCompressed } from './keys';\nimport { exceedsMaxLengthBytes, hashP2PKH, rightPadHexToLength, hashP2SH, hashP2WSH, hashP2WPKH, } from './utils';\nimport { createLPString, } from './postcondition-types';\nimport { deserializePayload, serializePayload } from './payload';\nimport { DeserializationError, SerializationError } from './errors';\nimport { deserializeTransactionAuthField, deserializeMessageSignature, serializeMessageSignature, serializeTransactionAuthField, } from './signature';\nimport { addressHashModeToVersion, addressFromVersionHash, } from './common';\nimport { deserializeCV, serializeCV } from './clarity';\nexport function serializeStacksMessage(message) {\n switch (message.type) {\n case StacksMessageType.Address:\n return serializeAddress(message);\n case StacksMessageType.Principal:\n return serializePrincipal(message);\n case StacksMessageType.LengthPrefixedString:\n return serializeLPString(message);\n case StacksMessageType.MemoString:\n return serializeMemoString(message);\n case StacksMessageType.AssetInfo:\n return serializeAssetInfo(message);\n case StacksMessageType.PostCondition:\n return serializePostCondition(message);\n case StacksMessageType.PublicKey:\n return serializePublicKey(message);\n case StacksMessageType.LengthPrefixedList:\n return serializeLPList(message);\n case StacksMessageType.Payload:\n return serializePayload(message);\n case StacksMessageType.TransactionAuthField:\n return serializeTransactionAuthField(message);\n case StacksMessageType.MessageSignature:\n return serializeMessageSignature(message);\n }\n}\nexport function deserializeStacksMessage(bytesReader, type, listType) {\n switch (type) {\n case StacksMessageType.Address:\n return deserializeAddress(bytesReader);\n case StacksMessageType.Principal:\n return deserializePrincipal(bytesReader);\n case StacksMessageType.LengthPrefixedString:\n return deserializeLPString(bytesReader);\n case StacksMessageType.MemoString:\n return deserializeMemoString(bytesReader);\n case StacksMessageType.AssetInfo:\n return deserializeAssetInfo(bytesReader);\n case StacksMessageType.PostCondition:\n return deserializePostCondition(bytesReader);\n case StacksMessageType.PublicKey:\n return deserializePublicKey(bytesReader);\n case StacksMessageType.Payload:\n return deserializePayload(bytesReader);\n case StacksMessageType.LengthPrefixedList:\n if (!listType) {\n throw new DeserializationError('No List Type specified');\n }\n return deserializeLPList(bytesReader, listType);\n case StacksMessageType.MessageSignature:\n return deserializeMessageSignature(bytesReader);\n default:\n throw new Error('Could not recognize StacksMessageType');\n }\n}\nexport function createEmptyAddress() {\n return {\n type: StacksMessageType.Address,\n version: AddressVersion.MainnetSingleSig,\n hash160: '0'.repeat(40),\n };\n}\nexport function addressFromHashMode(hashMode, txVersion, data) {\n const version = addressHashModeToVersion(hashMode, txVersion);\n return addressFromVersionHash(version, data);\n}\nexport function addressFromPublicKeys(version, hashMode, numSigs, publicKeys) {\n if (publicKeys.length === 0) {\n throw Error('Invalid number of public keys');\n }\n if (hashMode === AddressHashMode.SerializeP2PKH || hashMode === AddressHashMode.SerializeP2WPKH) {\n if (publicKeys.length !== 1 || numSigs !== 1) {\n throw Error('Invalid number of public keys or signatures');\n }\n }\n if (hashMode === AddressHashMode.SerializeP2WPKH ||\n hashMode === AddressHashMode.SerializeP2WSH ||\n hashMode === AddressHashMode.SerializeP2WSHNonSequential) {\n if (!publicKeys.every(isCompressed)) {\n throw Error('Public keys must be compressed for segwit');\n }\n }\n switch (hashMode) {\n case AddressHashMode.SerializeP2PKH:\n return addressFromVersionHash(version, hashP2PKH(publicKeys[0].data));\n case AddressHashMode.SerializeP2WPKH:\n return addressFromVersionHash(version, hashP2WPKH(publicKeys[0].data));\n case AddressHashMode.SerializeP2SH:\n case AddressHashMode.SerializeP2SHNonSequential:\n return addressFromVersionHash(version, hashP2SH(numSigs, publicKeys.map(serializePublicKey)));\n case AddressHashMode.SerializeP2WSH:\n case AddressHashMode.SerializeP2WSHNonSequential:\n return addressFromVersionHash(version, hashP2WSH(numSigs, publicKeys.map(serializePublicKey)));\n }\n}\nexport function serializeAddress(address) {\n const bytesArray = [];\n bytesArray.push(hexToBytes(intToHex(address.version, 1)));\n bytesArray.push(hexToBytes(address.hash160));\n return concatArray(bytesArray);\n}\nexport function deserializeAddress(bytesReader) {\n const version = hexToInt(bytesToHex(bytesReader.readBytes(1)));\n const data = bytesToHex(bytesReader.readBytes(20));\n return { type: StacksMessageType.Address, version, hash160: data };\n}\nexport function serializePrincipal(principal) {\n const bytesArray = [];\n bytesArray.push(principal.prefix);\n bytesArray.push(serializeAddress(principal.address));\n if (principal.prefix === PostConditionPrincipalID.Contract) {\n bytesArray.push(serializeLPString(principal.contractName));\n }\n return concatArray(bytesArray);\n}\nexport function deserializePrincipal(bytesReader) {\n const prefix = bytesReader.readUInt8Enum(PostConditionPrincipalID, n => {\n throw new DeserializationError(`Unexpected Principal payload type: ${n}`);\n });\n const address = deserializeAddress(bytesReader);\n if (prefix === PostConditionPrincipalID.Standard) {\n return { type: StacksMessageType.Principal, prefix, address };\n }\n const contractName = deserializeLPString(bytesReader);\n return {\n type: StacksMessageType.Principal,\n prefix,\n address,\n contractName,\n };\n}\nexport function serializeLPString(lps) {\n const bytesArray = [];\n const contentBytes = utf8ToBytes(lps.content);\n const length = contentBytes.byteLength;\n bytesArray.push(hexToBytes(intToHex(length, lps.lengthPrefixBytes)));\n bytesArray.push(contentBytes);\n return concatArray(bytesArray);\n}\nexport function deserializeLPString(bytesReader, prefixBytes, maxLength) {\n prefixBytes = prefixBytes ? prefixBytes : 1;\n const length = hexToInt(bytesToHex(bytesReader.readBytes(prefixBytes)));\n const content = bytesToUtf8(bytesReader.readBytes(length));\n return createLPString(content, prefixBytes, maxLength ?? 128);\n}\nexport function codeBodyString(content) {\n return createLPString(content, 4, 100000);\n}\nexport function createMemoString(content) {\n if (content && exceedsMaxLengthBytes(content, MEMO_MAX_LENGTH_BYTES)) {\n throw new Error(`Memo exceeds maximum length of ${MEMO_MAX_LENGTH_BYTES} bytes`);\n }\n return { type: StacksMessageType.MemoString, content };\n}\nexport function serializeMemoString(memoString) {\n const bytesArray = [];\n const contentBytes = utf8ToBytes(memoString.content);\n const paddedContent = rightPadHexToLength(bytesToHex(contentBytes), MEMO_MAX_LENGTH_BYTES * 2);\n bytesArray.push(hexToBytes(paddedContent));\n return concatArray(bytesArray);\n}\nexport function deserializeMemoString(bytesReader) {\n let content = bytesToUtf8(bytesReader.readBytes(MEMO_MAX_LENGTH_BYTES));\n content = content.replace(/\\u0000*$/, '');\n return { type: StacksMessageType.MemoString, content };\n}\nexport function serializeAssetInfo(info) {\n const bytesArray = [];\n bytesArray.push(serializeAddress(info.address));\n bytesArray.push(serializeLPString(info.contractName));\n bytesArray.push(serializeLPString(info.assetName));\n return concatArray(bytesArray);\n}\nexport function deserializeAssetInfo(bytesReader) {\n return {\n type: StacksMessageType.AssetInfo,\n address: deserializeAddress(bytesReader),\n contractName: deserializeLPString(bytesReader),\n assetName: deserializeLPString(bytesReader),\n };\n}\nexport function createLPList(values, lengthPrefixBytes) {\n return {\n type: StacksMessageType.LengthPrefixedList,\n lengthPrefixBytes: lengthPrefixBytes || 4,\n values,\n };\n}\nexport function serializeLPList(lpList) {\n const list = lpList.values;\n const bytesArray = [];\n bytesArray.push(hexToBytes(intToHex(list.length, lpList.lengthPrefixBytes)));\n for (const l of list) {\n bytesArray.push(serializeStacksMessage(l));\n }\n return concatArray(bytesArray);\n}\nexport function deserializeLPList(bytesReader, type, lengthPrefixBytes) {\n const length = hexToInt(bytesToHex(bytesReader.readBytes(lengthPrefixBytes || 4)));\n const l = [];\n for (let index = 0; index < length; index++) {\n switch (type) {\n case StacksMessageType.Address:\n l.push(deserializeAddress(bytesReader));\n break;\n case StacksMessageType.LengthPrefixedString:\n l.push(deserializeLPString(bytesReader));\n break;\n case StacksMessageType.MemoString:\n l.push(deserializeMemoString(bytesReader));\n break;\n case StacksMessageType.AssetInfo:\n l.push(deserializeAssetInfo(bytesReader));\n break;\n case StacksMessageType.PostCondition:\n l.push(deserializePostCondition(bytesReader));\n break;\n case StacksMessageType.PublicKey:\n l.push(deserializePublicKey(bytesReader));\n break;\n case StacksMessageType.TransactionAuthField:\n l.push(deserializeTransactionAuthField(bytesReader));\n break;\n }\n }\n return createLPList(l, lengthPrefixBytes);\n}\nexport function serializePostCondition(postCondition) {\n const bytesArray = [];\n bytesArray.push(postCondition.conditionType);\n bytesArray.push(serializePrincipal(postCondition.principal));\n if (postCondition.conditionType === PostConditionType.Fungible ||\n postCondition.conditionType === PostConditionType.NonFungible) {\n bytesArray.push(serializeAssetInfo(postCondition.assetInfo));\n }\n if (postCondition.conditionType === PostConditionType.NonFungible) {\n bytesArray.push(serializeCV(postCondition.assetName));\n }\n bytesArray.push(postCondition.conditionCode);\n if (postCondition.conditionType === PostConditionType.STX ||\n postCondition.conditionType === PostConditionType.Fungible) {\n if (postCondition.amount > BigInt('0xffffffffffffffff'))\n throw new SerializationError('The post-condition amount may not be larger than 8 bytes');\n bytesArray.push(intToBytes(postCondition.amount, false, 8));\n }\n return concatArray(bytesArray);\n}\nexport function deserializePostCondition(bytesReader) {\n const postConditionType = bytesReader.readUInt8Enum(PostConditionType, n => {\n throw new DeserializationError(`Could not read ${n} as PostConditionType`);\n });\n const principal = deserializePrincipal(bytesReader);\n let conditionCode;\n let assetInfo;\n let amount;\n switch (postConditionType) {\n case PostConditionType.STX:\n conditionCode = bytesReader.readUInt8Enum(FungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n amount = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n return {\n type: StacksMessageType.PostCondition,\n conditionType: PostConditionType.STX,\n principal,\n conditionCode,\n amount,\n };\n case PostConditionType.Fungible:\n assetInfo = deserializeAssetInfo(bytesReader);\n conditionCode = bytesReader.readUInt8Enum(FungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n amount = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n return {\n type: StacksMessageType.PostCondition,\n conditionType: PostConditionType.Fungible,\n principal,\n conditionCode,\n amount,\n assetInfo,\n };\n case PostConditionType.NonFungible:\n assetInfo = deserializeAssetInfo(bytesReader);\n const assetName = deserializeCV(bytesReader);\n conditionCode = bytesReader.readUInt8Enum(NonFungibleConditionCode, n => {\n throw new DeserializationError(`Could not read ${n} as FungibleConditionCode`);\n });\n return {\n type: StacksMessageType.PostCondition,\n conditionType: PostConditionType.NonFungible,\n principal,\n conditionCode,\n assetInfo,\n assetName,\n };\n }\n}\n//# sourceMappingURL=types.js.map","import { concatArray, concatBytes, bigIntToBytes, toTwos, writeUInt32BE, utf8ToBytes, asciiToBytes, } from '@stacks/common';\nimport { serializeAddress, serializeLPString } from '../types';\nimport { createLPString } from '../postcondition-types';\nimport { ClarityType } from './constants';\nimport { SerializationError } from '../errors';\nimport { CLARITY_INT_BYTE_SIZE, CLARITY_INT_SIZE } from '../constants';\nfunction bytesWithTypeID(typeId, bytes) {\n return concatArray([typeId, bytes]);\n}\nfunction serializeBoolCV(value) {\n return new Uint8Array([value.type]);\n}\nfunction serializeOptionalCV(cv) {\n if (cv.type === ClarityType.OptionalNone) {\n return new Uint8Array([cv.type]);\n }\n else {\n return bytesWithTypeID(cv.type, serializeCV(cv.value));\n }\n}\nfunction serializeBufferCV(cv) {\n const length = new Uint8Array(4);\n writeUInt32BE(length, cv.buffer.length, 0);\n return bytesWithTypeID(cv.type, concatBytes(length, cv.buffer));\n}\nfunction serializeIntCV(cv) {\n const bytes = bigIntToBytes(toTwos(cv.value, BigInt(CLARITY_INT_SIZE)), CLARITY_INT_BYTE_SIZE);\n return bytesWithTypeID(cv.type, bytes);\n}\nfunction serializeUIntCV(cv) {\n const bytes = bigIntToBytes(cv.value, CLARITY_INT_BYTE_SIZE);\n return bytesWithTypeID(cv.type, bytes);\n}\nfunction serializeStandardPrincipalCV(cv) {\n return bytesWithTypeID(cv.type, serializeAddress(cv.address));\n}\nfunction serializeContractPrincipalCV(cv) {\n return bytesWithTypeID(cv.type, concatBytes(serializeAddress(cv.address), serializeLPString(cv.contractName)));\n}\nfunction serializeResponseCV(cv) {\n return bytesWithTypeID(cv.type, serializeCV(cv.value));\n}\nfunction serializeListCV(cv) {\n const bytesArray = [];\n const length = new Uint8Array(4);\n writeUInt32BE(length, cv.list.length, 0);\n bytesArray.push(length);\n for (const value of cv.list) {\n const serializedValue = serializeCV(value);\n bytesArray.push(serializedValue);\n }\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeTupleCV(cv) {\n const bytesArray = [];\n const length = new Uint8Array(4);\n writeUInt32BE(length, Object.keys(cv.data).length, 0);\n bytesArray.push(length);\n const lexicographicOrder = Object.keys(cv.data).sort((a, b) => a.localeCompare(b));\n for (const key of lexicographicOrder) {\n const nameWithLength = createLPString(key);\n bytesArray.push(serializeLPString(nameWithLength));\n const serializedValue = serializeCV(cv.data[key]);\n bytesArray.push(serializedValue);\n }\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeStringCV(cv, encoding) {\n const bytesArray = [];\n const str = encoding == 'ascii' ? asciiToBytes(cv.data) : utf8ToBytes(cv.data);\n const len = new Uint8Array(4);\n writeUInt32BE(len, str.length, 0);\n bytesArray.push(len);\n bytesArray.push(str);\n return bytesWithTypeID(cv.type, concatArray(bytesArray));\n}\nfunction serializeStringAsciiCV(cv) {\n return serializeStringCV(cv, 'ascii');\n}\nfunction serializeStringUtf8CV(cv) {\n return serializeStringCV(cv, 'utf8');\n}\nexport function serializeCV(value) {\n switch (value.type) {\n case ClarityType.BoolTrue:\n case ClarityType.BoolFalse:\n return serializeBoolCV(value);\n case ClarityType.OptionalNone:\n case ClarityType.OptionalSome:\n return serializeOptionalCV(value);\n case ClarityType.Buffer:\n return serializeBufferCV(value);\n case ClarityType.UInt:\n return serializeUIntCV(value);\n case ClarityType.Int:\n return serializeIntCV(value);\n case ClarityType.PrincipalStandard:\n return serializeStandardPrincipalCV(value);\n case ClarityType.PrincipalContract:\n return serializeContractPrincipalCV(value);\n case ClarityType.ResponseOk:\n case ClarityType.ResponseErr:\n return serializeResponseCV(value);\n case ClarityType.List:\n return serializeListCV(value);\n case ClarityType.Tuple:\n return serializeTupleCV(value);\n case ClarityType.StringASCII:\n return serializeStringAsciiCV(value);\n case ClarityType.StringUTF8:\n return serializeStringUtf8CV(value);\n default:\n throw new SerializationError('Unable to serialize. Invalid Clarity Value.');\n }\n}\n//# sourceMappingURL=serialize.js.map","import { bytesToHex, readUInt16BE, readUInt32BE, readUInt8 } from '@stacks/common';\nfunction createEnumChecker(enumVariable) {\n const enumValues = Object.values(enumVariable).filter(v => typeof v === 'number');\n const enumValueSet = new Set(enumValues);\n return (value) => enumValueSet.has(value);\n}\nconst enumCheckFunctions = new Map();\nexport function isEnum(enumVariable, value) {\n const checker = enumCheckFunctions.get(enumVariable);\n if (checker !== undefined) {\n return checker(value);\n }\n const newChecker = createEnumChecker(enumVariable);\n enumCheckFunctions.set(enumVariable, newChecker);\n return isEnum(enumVariable, value);\n}\nexport class BytesReader {\n constructor(arr) {\n this.consumed = 0;\n this.source = arr;\n }\n readBytes(length) {\n const view = this.source.subarray(this.consumed, this.consumed + length);\n this.consumed += length;\n return view;\n }\n readUInt32BE() {\n return readUInt32BE(this.readBytes(4), 0);\n }\n readUInt8() {\n return readUInt8(this.readBytes(1), 0);\n }\n readUInt16BE() {\n return readUInt16BE(this.readBytes(2), 0);\n }\n readBigUIntLE(length) {\n const bytes = this.readBytes(length).slice().reverse();\n const hex = bytesToHex(bytes);\n return BigInt(`0x${hex}`);\n }\n readBigUIntBE(length) {\n const bytes = this.readBytes(length);\n const hex = bytesToHex(bytes);\n return BigInt(`0x${hex}`);\n }\n get readOffset() {\n return this.consumed;\n }\n set readOffset(val) {\n this.consumed = val;\n }\n get internalBytes() {\n return this.source;\n }\n readUInt8Enum(enumVariable, invalidEnumErrorFormatter) {\n const num = this.readUInt8();\n if (isEnum(enumVariable, num)) {\n return num;\n }\n throw invalidEnumErrorFormatter(num);\n }\n}\n//# sourceMappingURL=bytesReader.js.map","import { ClarityType, intCV, uintCV, bufferCV, trueCV, falseCV, standardPrincipalCVFromAddress, contractPrincipalCVFromAddress, responseOkCV, responseErrorCV, noneCV, someCV, listCV, tupleCV, } from '.';\nimport { BytesReader as BytesReader } from '../bytesReader';\nimport { deserializeAddress, deserializeLPString } from '../types';\nimport { DeserializationError } from '../errors';\nimport { stringAsciiCV, stringUtf8CV } from './types/stringCV';\nimport { bytesToAscii, bytesToUtf8, hexToBytes } from '@stacks/common';\nexport default function deserializeCV(serializedClarityValue) {\n let bytesReader;\n if (typeof serializedClarityValue === 'string') {\n const hasHexPrefix = serializedClarityValue.slice(0, 2).toLowerCase() === '0x';\n bytesReader = new BytesReader(hexToBytes(hasHexPrefix ? serializedClarityValue.slice(2) : serializedClarityValue));\n }\n else if (serializedClarityValue instanceof Uint8Array) {\n bytesReader = new BytesReader(serializedClarityValue);\n }\n else {\n bytesReader = serializedClarityValue;\n }\n const type = bytesReader.readUInt8Enum(ClarityType, n => {\n throw new DeserializationError(`Cannot recognize Clarity Type: ${n}`);\n });\n switch (type) {\n case ClarityType.Int:\n return intCV(bytesReader.readBytes(16));\n case ClarityType.UInt:\n return uintCV(bytesReader.readBytes(16));\n case ClarityType.Buffer:\n const bufferLength = bytesReader.readUInt32BE();\n return bufferCV(bytesReader.readBytes(bufferLength));\n case ClarityType.BoolTrue:\n return trueCV();\n case ClarityType.BoolFalse:\n return falseCV();\n case ClarityType.PrincipalStandard:\n const sAddress = deserializeAddress(bytesReader);\n return standardPrincipalCVFromAddress(sAddress);\n case ClarityType.PrincipalContract:\n const cAddress = deserializeAddress(bytesReader);\n const contractName = deserializeLPString(bytesReader);\n return contractPrincipalCVFromAddress(cAddress, contractName);\n case ClarityType.ResponseOk:\n return responseOkCV(deserializeCV(bytesReader));\n case ClarityType.ResponseErr:\n return responseErrorCV(deserializeCV(bytesReader));\n case ClarityType.OptionalNone:\n return noneCV();\n case ClarityType.OptionalSome:\n return someCV(deserializeCV(bytesReader));\n case ClarityType.List:\n const listLength = bytesReader.readUInt32BE();\n const listContents = [];\n for (let i = 0; i < listLength; i++) {\n listContents.push(deserializeCV(bytesReader));\n }\n return listCV(listContents);\n case ClarityType.Tuple:\n const tupleLength = bytesReader.readUInt32BE();\n const tupleContents = {};\n for (let i = 0; i < tupleLength; i++) {\n const clarityName = deserializeLPString(bytesReader).content;\n if (clarityName === undefined) {\n throw new DeserializationError('\"content\" is undefined');\n }\n tupleContents[clarityName] = deserializeCV(bytesReader);\n }\n return tupleCV(tupleContents);\n case ClarityType.StringASCII:\n const asciiStrLen = bytesReader.readUInt32BE();\n const asciiStr = bytesToAscii(bytesReader.readBytes(asciiStrLen));\n return stringAsciiCV(asciiStr);\n case ClarityType.StringUTF8:\n const utf8StrLen = bytesReader.readUInt32BE();\n const utf8Str = bytesToUtf8(bytesReader.readBytes(utf8StrLen));\n return stringUtf8CV(utf8Str);\n default:\n throw new DeserializationError('Unable to deserialize Clarity Value from Uint8Array. Could not find valid Clarity Type.');\n }\n}\n//# sourceMappingURL=deserialize.js.map","import { ripemd160 } from '@noble/hashes/ripemd160';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { sha512_256 } from '@noble/hashes/sha512';\nimport { utils } from '@noble/secp256k1';\nimport { bytesToHex, concatArray, concatBytes, utf8ToBytes, with0x } from '@stacks/common';\nimport { c32addressDecode } from 'c32check';\nimport lodashCloneDeep from 'lodash.clonedeep';\nimport { deserializeCV, serializeCV } from './clarity';\nexport { verify as verifySignature } from '@noble/secp256k1';\nexport const randomBytes = (bytesLength) => utils.randomBytes(bytesLength);\nexport const leftPadHex = (hexString) => hexString.length % 2 == 0 ? hexString : `0${hexString}`;\nexport const leftPadHexToLength = (hexString, length) => hexString.padStart(length, '0');\nexport const rightPadHexToLength = (hexString, length) => hexString.padEnd(length, '0');\nexport const exceedsMaxLengthBytes = (string, maxLengthBytes) => string ? utf8ToBytes(string).length > maxLengthBytes : false;\nexport function cloneDeep(obj) {\n return lodashCloneDeep(obj);\n}\nexport function omit(obj, prop) {\n const clone = cloneDeep(obj);\n delete clone[prop];\n return clone;\n}\nexport const hash160 = (input) => {\n return ripemd160(sha256(input));\n};\nexport const txidFromData = (data) => {\n return bytesToHex(sha512_256(data));\n};\nexport const txidFromBytes = txidFromData;\nexport const hashP2PKH = (input) => {\n return bytesToHex(hash160(input));\n};\nexport const hashP2WPKH = (input) => {\n const keyHash = hash160(input);\n const redeemScript = concatBytes(new Uint8Array([0]), new Uint8Array([keyHash.length]), keyHash);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport const hashP2SH = (numSigs, pubKeys) => {\n if (numSigs > 15 || pubKeys.length > 15) {\n throw Error('P2SH multisig address can only contain up to 15 public keys');\n }\n const bytesArray = [];\n bytesArray.push(80 + numSigs);\n pubKeys.forEach(pubKey => {\n bytesArray.push(pubKey.length);\n bytesArray.push(pubKey);\n });\n bytesArray.push(80 + pubKeys.length);\n bytesArray.push(174);\n const redeemScript = concatArray(bytesArray);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport const hashP2WSH = (numSigs, pubKeys) => {\n if (numSigs > 15 || pubKeys.length > 15) {\n throw Error('P2WSH multisig address can only contain up to 15 public keys');\n }\n const scriptArray = [];\n scriptArray.push(80 + numSigs);\n pubKeys.forEach(pubKey => {\n scriptArray.push(pubKey.length);\n scriptArray.push(pubKey);\n });\n scriptArray.push(80 + pubKeys.length);\n scriptArray.push(174);\n const script = concatArray(scriptArray);\n const digest = sha256(script);\n const bytesArray = [];\n bytesArray.push(0);\n bytesArray.push(digest.length);\n bytesArray.push(digest);\n const redeemScript = concatArray(bytesArray);\n const redeemScriptHash = hash160(redeemScript);\n return bytesToHex(redeemScriptHash);\n};\nexport function isClarityName(name) {\n const regex = /^[a-zA-Z]([a-zA-Z0-9]|[-_!?+<>=/*])*$|^[-+=/*]$|^[<>]=?$/;\n return regex.test(name) && name.length < 128;\n}\nexport function cvToHex(cv) {\n const serialized = serializeCV(cv);\n return `0x${bytesToHex(serialized)}`;\n}\nexport function hexToCV(hex) {\n return deserializeCV(hex);\n}\nexport const parseReadOnlyResponse = (response) => {\n if (response.okay)\n return hexToCV(response.result);\n throw new Error(response.cause);\n};\nexport const validateStacksAddress = (stacksAddress) => {\n try {\n c32addressDecode(stacksAddress);\n return true;\n }\n catch (e) {\n return false;\n }\n};\nexport const validateTxId = (txid) => {\n if (txid === 'success')\n return true;\n const value = with0x(txid).toLowerCase();\n if (value.length !== 66)\n return false;\n return with0x(BigInt(value).toString(16).padStart(64, '0')) === value;\n};\n//# sourceMappingURL=utils.js.map","import { bytesToHex, concatArray, hexToBytes, intToBigInt, intToBytes, writeUInt16BE, } from '@stacks/common';\nimport { AddressHashMode, AuthType, PubKeyEncoding, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, StacksMessageType, } from './constants';\nimport { cloneDeep, leftPadHex, txidFromData } from './utils';\nimport { serializeMessageSignature, deserializeMessageSignature, } from './signature';\nimport { addressFromPublicKeys, createEmptyAddress, createLPList, deserializeLPList, serializeLPList, } from './types';\nimport { createStacksPublicKey, getPublicKey, isCompressed, publicKeyFromSignatureVrs, signWithKey, } from './keys';\nimport { DeserializationError, SigningError, VerificationError } from './errors';\nexport function emptyMessageSignature() {\n return {\n type: StacksMessageType.MessageSignature,\n data: bytesToHex(new Uint8Array(RECOVERABLE_ECDSA_SIG_LENGTH_BYTES)),\n };\n}\nexport function createSingleSigSpendingCondition(hashMode, pubKey, nonce, fee) {\n const signer = addressFromPublicKeys(0, hashMode, 1, [createStacksPublicKey(pubKey)]).hash160;\n const keyEncoding = isCompressed(createStacksPublicKey(pubKey))\n ? PubKeyEncoding.Compressed\n : PubKeyEncoding.Uncompressed;\n return {\n hashMode,\n signer,\n nonce: intToBigInt(nonce, false),\n fee: intToBigInt(fee, false),\n keyEncoding,\n signature: emptyMessageSignature(),\n };\n}\nexport function createMultiSigSpendingCondition(hashMode, numSigs, pubKeys, nonce, fee) {\n const stacksPublicKeys = pubKeys.map(createStacksPublicKey);\n const signer = addressFromPublicKeys(0, hashMode, numSigs, stacksPublicKeys).hash160;\n return {\n hashMode,\n signer,\n nonce: intToBigInt(nonce, false),\n fee: intToBigInt(fee, false),\n fields: [],\n signaturesRequired: numSigs,\n };\n}\nexport function isSingleSig(condition) {\n return 'signature' in condition;\n}\nexport function isSequentialMultiSig(hashMode) {\n return hashMode === AddressHashMode.SerializeP2SH || hashMode === AddressHashMode.SerializeP2WSH;\n}\nexport function isNonSequentialMultiSig(hashMode) {\n return (hashMode === AddressHashMode.SerializeP2SHNonSequential ||\n hashMode === AddressHashMode.SerializeP2WSHNonSequential);\n}\nfunction clearCondition(condition) {\n const cloned = cloneDeep(condition);\n cloned.nonce = 0;\n cloned.fee = 0;\n if (isSingleSig(cloned)) {\n cloned.signature = emptyMessageSignature();\n }\n else {\n cloned.fields = [];\n }\n return {\n ...cloned,\n nonce: BigInt(0),\n fee: BigInt(0),\n };\n}\nexport function serializeSingleSigSpendingCondition(condition) {\n const bytesArray = [\n condition.hashMode,\n hexToBytes(condition.signer),\n intToBytes(condition.nonce, false, 8),\n intToBytes(condition.fee, false, 8),\n condition.keyEncoding,\n serializeMessageSignature(condition.signature),\n ];\n return concatArray(bytesArray);\n}\nexport function serializeMultiSigSpendingCondition(condition) {\n const bytesArray = [\n condition.hashMode,\n hexToBytes(condition.signer),\n intToBytes(condition.nonce, false, 8),\n intToBytes(condition.fee, false, 8),\n ];\n const fields = createLPList(condition.fields);\n bytesArray.push(serializeLPList(fields));\n const numSigs = new Uint8Array(2);\n writeUInt16BE(numSigs, condition.signaturesRequired, 0);\n bytesArray.push(numSigs);\n return concatArray(bytesArray);\n}\nexport function deserializeSingleSigSpendingCondition(hashMode, bytesReader) {\n const signer = bytesToHex(bytesReader.readBytes(20));\n const nonce = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n const fee = BigInt(`0x${bytesToHex(bytesReader.readBytes(8))}`);\n const keyEncoding = bytesReader.readUInt8Enum(PubKeyEncoding, n => {\n throw new DeserializationError(`Could not parse ${n} as PubKeyEncoding`);\n });\n if (hashMode === AddressHashMode.SerializeP2WPKH && keyEncoding != PubKeyEncoding.Compressed) {\n throw new DeserializationError('Failed to parse singlesig spending condition: incomaptible hash mode and key encoding');\n }\n const signature = deserializeMessageSignature(bytesReader);\n return {\n hashMode,\n signer,\n nonce,\n fee,\n keyEncoding,\n signature,\n };\n}\nexport function deserializeMultiSigSpendingCondition(hashMode, bytesReader) {\n const signer = bytesToHex(bytesReader.readBytes(20));\n const nonce = BigInt('0x' + bytesToHex(bytesReader.readBytes(8)));\n const fee = BigInt('0x' + bytesToHex(bytesReader.readBytes(8)));\n const fields = deserializeLPList(bytesReader, StacksMessageType.TransactionAuthField)\n .values;\n let haveUncompressed = false;\n let numSigs = 0;\n for (const field of fields) {\n switch (field.contents.type) {\n case StacksMessageType.PublicKey:\n if (!isCompressed(field.contents))\n haveUncompressed = true;\n break;\n case StacksMessageType.MessageSignature:\n if (field.pubKeyEncoding === PubKeyEncoding.Uncompressed)\n haveUncompressed = true;\n numSigs += 1;\n if (numSigs === 65536)\n throw new VerificationError('Failed to parse multisig spending condition: too many signatures');\n break;\n }\n }\n const signaturesRequired = bytesReader.readUInt16BE();\n if (haveUncompressed &&\n (hashMode === AddressHashMode.SerializeP2WSH ||\n hashMode === AddressHashMode.SerializeP2WSHNonSequential)) {\n throw new VerificationError('Uncompressed keys are not allowed in this hash mode');\n }\n return {\n hashMode,\n signer,\n nonce,\n fee,\n fields,\n signaturesRequired,\n };\n}\nexport function serializeSpendingCondition(condition) {\n if (isSingleSig(condition)) {\n return serializeSingleSigSpendingCondition(condition);\n }\n return serializeMultiSigSpendingCondition(condition);\n}\nexport function deserializeSpendingCondition(bytesReader) {\n const hashMode = bytesReader.readUInt8Enum(AddressHashMode, n => {\n throw new DeserializationError(`Could not parse ${n} as AddressHashMode`);\n });\n if (hashMode === AddressHashMode.SerializeP2PKH || hashMode === AddressHashMode.SerializeP2WPKH) {\n return deserializeSingleSigSpendingCondition(hashMode, bytesReader);\n }\n else {\n return deserializeMultiSigSpendingCondition(hashMode, bytesReader);\n }\n}\nexport function makeSigHashPreSign(curSigHash, authType, fee, nonce) {\n const hashLength = 32 + 1 + 8 + 8;\n const sigHash = curSigHash +\n bytesToHex(new Uint8Array([authType])) +\n bytesToHex(intToBytes(fee, false, 8)) +\n bytesToHex(intToBytes(nonce, false, 8));\n if (hexToBytes(sigHash).byteLength !== hashLength) {\n throw Error('Invalid signature hash length');\n }\n return txidFromData(hexToBytes(sigHash));\n}\nfunction makeSigHashPostSign(curSigHash, pubKey, signature) {\n const hashLength = 32 + 1 + RECOVERABLE_ECDSA_SIG_LENGTH_BYTES;\n const pubKeyEncoding = isCompressed(pubKey)\n ? PubKeyEncoding.Compressed\n : PubKeyEncoding.Uncompressed;\n const sigHash = curSigHash + leftPadHex(pubKeyEncoding.toString(16)) + signature.data;\n const sigHashBytes = hexToBytes(sigHash);\n if (sigHashBytes.byteLength > hashLength) {\n throw Error('Invalid signature hash length');\n }\n return txidFromData(sigHashBytes);\n}\nexport function nextSignature(curSigHash, authType, fee, nonce, privateKey) {\n const sigHashPreSign = makeSigHashPreSign(curSigHash, authType, fee, nonce);\n const signature = signWithKey(privateKey, sigHashPreSign);\n const publicKey = getPublicKey(privateKey);\n const nextSigHash = makeSigHashPostSign(sigHashPreSign, publicKey, signature);\n return {\n nextSig: signature,\n nextSigHash,\n };\n}\nexport function nextVerification(initialSigHash, authType, fee, nonce, pubKeyEncoding, signature) {\n const sigHashPreSign = makeSigHashPreSign(initialSigHash, authType, fee, nonce);\n const publicKey = createStacksPublicKey(publicKeyFromSignatureVrs(sigHashPreSign, signature, pubKeyEncoding));\n const nextSigHash = makeSigHashPostSign(sigHashPreSign, publicKey, signature);\n return {\n pubKey: publicKey,\n nextSigHash,\n };\n}\nfunction newInitialSigHash() {\n const spendingCondition = createSingleSigSpendingCondition(AddressHashMode.SerializeP2PKH, '', 0, 0);\n spendingCondition.signer = createEmptyAddress().hash160;\n spendingCondition.keyEncoding = PubKeyEncoding.Compressed;\n spendingCondition.signature = emptyMessageSignature();\n return spendingCondition;\n}\nfunction verify(condition, initialSigHash, authType) {\n if (isSingleSig(condition)) {\n return verifySingleSig(condition, initialSigHash, authType);\n }\n else {\n return verifyMultiSig(condition, initialSigHash, authType);\n }\n}\nfunction verifySingleSig(condition, initialSigHash, authType) {\n const { pubKey, nextSigHash } = nextVerification(initialSigHash, authType, condition.fee, condition.nonce, condition.keyEncoding, condition.signature);\n const addrBytes = addressFromPublicKeys(0, condition.hashMode, 1, [pubKey]).hash160;\n if (addrBytes !== condition.signer)\n throw new VerificationError(`Signer hash does not equal hash of public key(s): ${addrBytes} != ${condition.signer}`);\n return nextSigHash;\n}\nfunction verifyMultiSig(condition, initialSigHash, authType) {\n const publicKeys = [];\n let curSigHash = initialSigHash;\n let haveUncompressed = false;\n let numSigs = 0;\n for (const field of condition.fields) {\n switch (field.contents.type) {\n case StacksMessageType.PublicKey:\n if (!isCompressed(field.contents))\n haveUncompressed = true;\n publicKeys.push(field.contents);\n break;\n case StacksMessageType.MessageSignature:\n if (field.pubKeyEncoding === PubKeyEncoding.Uncompressed)\n haveUncompressed = true;\n const { pubKey, nextSigHash } = nextVerification(curSigHash, authType, condition.fee, condition.nonce, field.pubKeyEncoding, field.contents);\n if (isSequentialMultiSig(condition.hashMode)) {\n curSigHash = nextSigHash;\n }\n publicKeys.push(pubKey);\n numSigs += 1;\n if (numSigs === 65536)\n throw new VerificationError('Too many signatures');\n break;\n }\n }\n if ((isSequentialMultiSig(condition.hashMode) && numSigs !== condition.signaturesRequired) ||\n (isNonSequentialMultiSig(condition.hashMode) && numSigs < condition.signaturesRequired))\n throw new VerificationError('Incorrect number of signatures');\n if (haveUncompressed &&\n (condition.hashMode === AddressHashMode.SerializeP2WSH ||\n condition.hashMode === AddressHashMode.SerializeP2WSHNonSequential))\n throw new VerificationError('Uncompressed keys are not allowed in this hash mode');\n const addrBytes = addressFromPublicKeys(0, condition.hashMode, condition.signaturesRequired, publicKeys).hash160;\n if (addrBytes !== condition.signer)\n throw new VerificationError(`Signer hash does not equal hash of public key(s): ${addrBytes} != ${condition.signer}`);\n return curSigHash;\n}\nexport function createStandardAuth(spendingCondition) {\n return {\n authType: AuthType.Standard,\n spendingCondition,\n };\n}\nexport function createSponsoredAuth(spendingCondition, sponsorSpendingCondition) {\n return {\n authType: AuthType.Sponsored,\n spendingCondition,\n sponsorSpendingCondition: sponsorSpendingCondition\n ? sponsorSpendingCondition\n : createSingleSigSpendingCondition(AddressHashMode.SerializeP2PKH, '0'.repeat(66), 0, 0),\n };\n}\nexport function intoInitialSighashAuth(auth) {\n if (auth.spendingCondition) {\n switch (auth.authType) {\n case AuthType.Standard:\n return createStandardAuth(clearCondition(auth.spendingCondition));\n case AuthType.Sponsored:\n return createSponsoredAuth(clearCondition(auth.spendingCondition), newInitialSigHash());\n default:\n throw new SigningError('Unexpected authorization type for signing');\n }\n }\n throw new Error('Authorization missing SpendingCondition');\n}\nexport function verifyOrigin(auth, initialSigHash) {\n switch (auth.authType) {\n case AuthType.Standard:\n return verify(auth.spendingCondition, initialSigHash, AuthType.Standard);\n case AuthType.Sponsored:\n return verify(auth.spendingCondition, initialSigHash, AuthType.Standard);\n default:\n throw new SigningError('Invalid origin auth type');\n }\n}\nexport function setFee(auth, amount) {\n switch (auth.authType) {\n case AuthType.Standard:\n const spendingCondition = {\n ...auth.spendingCondition,\n fee: intToBigInt(amount, false),\n };\n return { ...auth, spendingCondition };\n case AuthType.Sponsored:\n const sponsorSpendingCondition = {\n ...auth.sponsorSpendingCondition,\n fee: intToBigInt(amount, false),\n };\n return { ...auth, sponsorSpendingCondition };\n }\n}\nexport function getFee(auth) {\n switch (auth.authType) {\n case AuthType.Standard:\n return auth.spendingCondition.fee;\n case AuthType.Sponsored:\n return auth.sponsorSpendingCondition.fee;\n }\n}\nexport function setNonce(auth, nonce) {\n const spendingCondition = {\n ...auth.spendingCondition,\n nonce: intToBigInt(nonce, false),\n };\n return {\n ...auth,\n spendingCondition,\n };\n}\nexport function setSponsorNonce(auth, nonce) {\n const sponsorSpendingCondition = {\n ...auth.sponsorSpendingCondition,\n nonce: intToBigInt(nonce, false),\n };\n return {\n ...auth,\n sponsorSpendingCondition,\n };\n}\nexport function setSponsor(auth, sponsorSpendingCondition) {\n const sc = {\n ...sponsorSpendingCondition,\n nonce: intToBigInt(sponsorSpendingCondition.nonce, false),\n fee: intToBigInt(sponsorSpendingCondition.fee, false),\n };\n return {\n ...auth,\n sponsorSpendingCondition: sc,\n };\n}\nexport function serializeAuthorization(auth) {\n const bytesArray = [];\n bytesArray.push(auth.authType);\n switch (auth.authType) {\n case AuthType.Standard:\n bytesArray.push(serializeSpendingCondition(auth.spendingCondition));\n break;\n case AuthType.Sponsored:\n bytesArray.push(serializeSpendingCondition(auth.spendingCondition));\n bytesArray.push(serializeSpendingCondition(auth.sponsorSpendingCondition));\n break;\n }\n return concatArray(bytesArray);\n}\nexport function deserializeAuthorization(bytesReader) {\n const authType = bytesReader.readUInt8Enum(AuthType, n => {\n throw new DeserializationError(`Could not parse ${n} as AuthType`);\n });\n let spendingCondition;\n switch (authType) {\n case AuthType.Standard:\n spendingCondition = deserializeSpendingCondition(bytesReader);\n return createStandardAuth(spendingCondition);\n case AuthType.Sponsored:\n spendingCondition = deserializeSpendingCondition(bytesReader);\n const sponsorSpendingCondition = deserializeSpendingCondition(bytesReader);\n return createSponsoredAuth(spendingCondition, sponsorSpendingCondition);\n }\n}\n//# sourceMappingURL=authorization.js.map","import { hexToBytes, utf8ToBytes } from '@stacks/common';\nimport { ClarityType, bufferCV, bufferCVFromString, contractPrincipalCV, falseCV, getCVTypeString, intCV, noneCV, someCV, standardPrincipalCV, trueCV, uintCV, } from './clarity';\nimport { stringAsciiCV, stringUtf8CV } from './clarity/types/stringCV';\nimport { NotImplementedError } from './errors';\nimport { cloneDeep } from './utils';\nexport var ClarityAbiTypeId;\n(function (ClarityAbiTypeId) {\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeUInt128\"] = 1] = \"ClarityAbiTypeUInt128\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeInt128\"] = 2] = \"ClarityAbiTypeInt128\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeBool\"] = 3] = \"ClarityAbiTypeBool\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypePrincipal\"] = 4] = \"ClarityAbiTypePrincipal\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeNone\"] = 5] = \"ClarityAbiTypeNone\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeBuffer\"] = 6] = \"ClarityAbiTypeBuffer\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeResponse\"] = 7] = \"ClarityAbiTypeResponse\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeOptional\"] = 8] = \"ClarityAbiTypeOptional\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeTuple\"] = 9] = \"ClarityAbiTypeTuple\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeList\"] = 10] = \"ClarityAbiTypeList\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeStringAscii\"] = 11] = \"ClarityAbiTypeStringAscii\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeStringUtf8\"] = 12] = \"ClarityAbiTypeStringUtf8\";\n ClarityAbiTypeId[ClarityAbiTypeId[\"ClarityAbiTypeTraitReference\"] = 13] = \"ClarityAbiTypeTraitReference\";\n})(ClarityAbiTypeId || (ClarityAbiTypeId = {}));\nexport const isClarityAbiPrimitive = (val) => typeof val === 'string';\nexport const isClarityAbiBuffer = (val) => val.buffer !== undefined;\nexport const isClarityAbiStringAscii = (val) => val['string-ascii'] !== undefined;\nexport const isClarityAbiStringUtf8 = (val) => val['string-utf8'] !== undefined;\nexport const isClarityAbiResponse = (val) => val.response !== undefined;\nexport const isClarityAbiOptional = (val) => val.optional !== undefined;\nexport const isClarityAbiTuple = (val) => val.tuple !== undefined;\nexport const isClarityAbiList = (val) => val.list !== undefined;\nexport function getTypeUnion(val) {\n if (isClarityAbiPrimitive(val)) {\n if (val === 'uint128') {\n return { id: ClarityAbiTypeId.ClarityAbiTypeUInt128, type: val };\n }\n else if (val === 'int128') {\n return { id: ClarityAbiTypeId.ClarityAbiTypeInt128, type: val };\n }\n else if (val === 'bool') {\n return { id: ClarityAbiTypeId.ClarityAbiTypeBool, type: val };\n }\n else if (val === 'principal') {\n return { id: ClarityAbiTypeId.ClarityAbiTypePrincipal, type: val };\n }\n else if (val === 'trait_reference') {\n return { id: ClarityAbiTypeId.ClarityAbiTypeTraitReference, type: val };\n }\n else if (val === 'none') {\n return { id: ClarityAbiTypeId.ClarityAbiTypeNone, type: val };\n }\n else {\n throw new Error(`Unexpected Clarity ABI type primitive: ${JSON.stringify(val)}`);\n }\n }\n else if (isClarityAbiBuffer(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeBuffer, type: val };\n }\n else if (isClarityAbiResponse(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeResponse, type: val };\n }\n else if (isClarityAbiOptional(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeOptional, type: val };\n }\n else if (isClarityAbiTuple(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeTuple, type: val };\n }\n else if (isClarityAbiList(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeList, type: val };\n }\n else if (isClarityAbiStringAscii(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeStringAscii, type: val };\n }\n else if (isClarityAbiStringUtf8(val)) {\n return { id: ClarityAbiTypeId.ClarityAbiTypeStringUtf8, type: val };\n }\n else {\n throw new Error(`Unexpected Clarity ABI type: ${JSON.stringify(val)}`);\n }\n}\nexport function encodeAbiClarityValue(value, type) {\n const union = type.id\n ? type\n : getTypeUnion(type);\n switch (union.id) {\n case ClarityAbiTypeId.ClarityAbiTypeUInt128:\n return uintCV(value);\n case ClarityAbiTypeId.ClarityAbiTypeInt128:\n return intCV(value);\n case ClarityAbiTypeId.ClarityAbiTypeBool:\n if (value === 'false' || value === '0')\n return falseCV();\n else if (value === 'true' || value === '1')\n return trueCV();\n else\n throw new Error(`Unexpected Clarity bool value: ${JSON.stringify(value)}`);\n case ClarityAbiTypeId.ClarityAbiTypePrincipal:\n if (value.includes('.')) {\n const [addr, name] = value.split('.');\n return contractPrincipalCV(addr, name);\n }\n else {\n return standardPrincipalCV(value);\n }\n case ClarityAbiTypeId.ClarityAbiTypeTraitReference:\n const [addr, name] = value.split('.');\n return contractPrincipalCV(addr, name);\n case ClarityAbiTypeId.ClarityAbiTypeNone:\n return noneCV();\n case ClarityAbiTypeId.ClarityAbiTypeBuffer:\n return bufferCV(hexToBytes(value));\n case ClarityAbiTypeId.ClarityAbiTypeStringAscii:\n return stringAsciiCV(value);\n case ClarityAbiTypeId.ClarityAbiTypeStringUtf8:\n return stringUtf8CV(value);\n case ClarityAbiTypeId.ClarityAbiTypeOptional:\n return someCV(encodeAbiClarityValue(value, union.type.optional));\n case ClarityAbiTypeId.ClarityAbiTypeResponse:\n case ClarityAbiTypeId.ClarityAbiTypeTuple:\n case ClarityAbiTypeId.ClarityAbiTypeList:\n throw new NotImplementedError(`Unsupported encoding for Clarity type: ${union.id}`);\n default:\n throw new Error(`Unexpected Clarity type ID: ${JSON.stringify(union)}`);\n }\n}\nexport function encodeClarityValue(type, value) {\n const union = type.id\n ? type\n : getTypeUnion(type);\n if (union.id === ClarityAbiTypeId.ClarityAbiTypeBuffer) {\n return bufferCV(utf8ToBytes(value));\n }\n return encodeAbiClarityValue(value, union);\n}\nexport function getTypeString(val) {\n if (isClarityAbiPrimitive(val)) {\n if (val === 'int128') {\n return 'int';\n }\n else if (val === 'uint128') {\n return 'uint';\n }\n return val;\n }\n else if (isClarityAbiBuffer(val)) {\n return `(buff ${val.buffer.length})`;\n }\n else if (isClarityAbiStringAscii(val)) {\n return `(string-ascii ${val['string-ascii'].length})`;\n }\n else if (isClarityAbiStringUtf8(val)) {\n return `(string-utf8 ${val['string-utf8'].length})`;\n }\n else if (isClarityAbiResponse(val)) {\n return `(response ${getTypeString(val.response.ok)} ${getTypeString(val.response.error)})`;\n }\n else if (isClarityAbiOptional(val)) {\n return `(optional ${getTypeString(val.optional)})`;\n }\n else if (isClarityAbiTuple(val)) {\n return `(tuple ${val.tuple.map(t => `(${t.name} ${getTypeString(t.type)})`).join(' ')})`;\n }\n else if (isClarityAbiList(val)) {\n return `(list ${val.list.length} ${getTypeString(val.list.type)})`;\n }\n else {\n throw new Error(`Type string unsupported for Clarity type: ${JSON.stringify(val)}`);\n }\n}\nexport function abiFunctionToString(func) {\n const access = func.access === 'read_only' ? 'read-only' : func.access;\n return `(define-${access} (${func.name} ${func.args\n .map(arg => `(${arg.name} ${getTypeString(arg.type)})`)\n .join(' ')}))`;\n}\nfunction matchType(cv, abiType) {\n const union = getTypeUnion(abiType);\n switch (cv.type) {\n case ClarityType.BoolTrue:\n case ClarityType.BoolFalse:\n return union.id === ClarityAbiTypeId.ClarityAbiTypeBool;\n case ClarityType.Int:\n return union.id === ClarityAbiTypeId.ClarityAbiTypeInt128;\n case ClarityType.UInt:\n return union.id === ClarityAbiTypeId.ClarityAbiTypeUInt128;\n case ClarityType.Buffer:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeBuffer &&\n union.type.buffer.length >= cv.buffer.length);\n case ClarityType.StringASCII:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeStringAscii &&\n union.type['string-ascii'].length >= cv.data.length);\n case ClarityType.StringUTF8:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeStringUtf8 &&\n union.type['string-utf8'].length >= cv.data.length);\n case ClarityType.OptionalNone:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeNone ||\n union.id === ClarityAbiTypeId.ClarityAbiTypeOptional);\n case ClarityType.OptionalSome:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeOptional &&\n matchType(cv.value, union.type.optional));\n case ClarityType.ResponseErr:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeResponse &&\n matchType(cv.value, union.type.response.error));\n case ClarityType.ResponseOk:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypeResponse &&\n matchType(cv.value, union.type.response.ok));\n case ClarityType.PrincipalContract:\n return (union.id === ClarityAbiTypeId.ClarityAbiTypePrincipal ||\n union.id === ClarityAbiTypeId.ClarityAbiTypeTraitReference);\n case ClarityType.PrincipalStandard:\n return union.id === ClarityAbiTypeId.ClarityAbiTypePrincipal;\n case ClarityType.List:\n return (union.id == ClarityAbiTypeId.ClarityAbiTypeList &&\n union.type.list.length >= cv.list.length &&\n cv.list.every(val => matchType(val, union.type.list.type)));\n case ClarityType.Tuple:\n if (union.id == ClarityAbiTypeId.ClarityAbiTypeTuple) {\n const tuple = cloneDeep(cv.data);\n for (let i = 0; i < union.type.tuple.length; i++) {\n const abiTupleEntry = union.type.tuple[i];\n const key = abiTupleEntry.name;\n const val = tuple[key];\n if (val) {\n if (!matchType(val, abiTupleEntry.type)) {\n return false;\n }\n delete tuple[key];\n }\n else {\n return false;\n }\n }\n return true;\n }\n else {\n return false;\n }\n default:\n return false;\n }\n}\nexport function validateContractCall(payload, abi) {\n const filtered = abi.functions.filter(fn => fn.name === payload.functionName.content);\n if (filtered.length === 1) {\n const abiFunc = filtered[0];\n const abiArgs = abiFunc.args;\n if (payload.functionArgs.length !== abiArgs.length) {\n throw new Error(`Clarity function expects ${abiArgs.length} argument(s) but received ${payload.functionArgs.length}`);\n }\n for (let i = 0; i < payload.functionArgs.length; i++) {\n const payloadArg = payload.functionArgs[i];\n const abiArg = abiArgs[i];\n if (!matchType(payloadArg, abiArg.type)) {\n const argNum = i + 1;\n throw new Error(`Clarity function \\`${payload.functionName.content}\\` expects argument ${argNum} to be of type ${getTypeString(abiArg.type)}, not ${getCVTypeString(payloadArg)}`);\n }\n }\n return true;\n }\n else if (filtered.length === 0) {\n throw new Error(`ABI doesn't contain a function with the name ${payload.functionName.content}`);\n }\n else {\n throw new Error(`Malformed ABI. Contains multiple functions with the name ${payload.functionName.content}`);\n }\n}\nexport function parseToCV(input, type) {\n const typeString = getTypeString(type);\n if (isClarityAbiPrimitive(type)) {\n if (type === 'uint128') {\n return uintCV(input);\n }\n else if (type === 'int128') {\n return intCV(input);\n }\n else if (type === 'bool') {\n if (input.toLowerCase() === 'true') {\n return trueCV();\n }\n else if (input.toLowerCase() === 'false') {\n return falseCV();\n }\n else {\n throw new Error(`Invalid bool value: ${input}`);\n }\n }\n else if (type === 'principal') {\n if (input.includes('.')) {\n const [address, contractName] = input.split('.');\n return contractPrincipalCV(address, contractName);\n }\n else {\n return standardPrincipalCV(input);\n }\n }\n else {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n }\n else if (isClarityAbiBuffer(type)) {\n const inputLength = utf8ToBytes(input).byteLength;\n if (inputLength > type.buffer.length) {\n throw new Error(`Input exceeds specified buffer length limit of ${type.buffer.length}`);\n }\n return bufferCVFromString(input);\n }\n else if (isClarityAbiResponse(type)) {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n else if (isClarityAbiOptional(type)) {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n else if (isClarityAbiTuple(type)) {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n else if (isClarityAbiList(type)) {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n else {\n throw new Error(`Contract function contains unsupported Clarity ABI type: ${typeString}`);\n }\n}\n//# sourceMappingURL=contract-abi.js.map","import { isNonSequentialMultiSig, isSequentialMultiSig, isSingleSig, nextVerification, } from './authorization';\nimport { cloneDeep } from './utils';\nimport { AddressHashMode, AuthType, PubKeyEncoding, StacksMessageType } from './constants';\nimport { SigningError } from './errors';\nexport class TransactionSigner {\n constructor(transaction) {\n this.transaction = transaction;\n this.sigHash = transaction.signBegin();\n this.originDone = false;\n this.checkOversign = true;\n this.checkOverlap = true;\n const spendingCondition = transaction.auth.spendingCondition;\n if (spendingCondition && !isSingleSig(spendingCondition)) {\n if (spendingCondition.fields.filter(field => field.contents.type === StacksMessageType.MessageSignature).length >= spendingCondition.signaturesRequired) {\n throw new Error('SpendingCondition has more signatures than are expected');\n }\n spendingCondition.fields.forEach(field => {\n if (field.contents.type !== StacksMessageType.MessageSignature)\n return;\n const signature = field.contents;\n const nextVerify = nextVerification(this.sigHash, transaction.auth.authType, spendingCondition.fee, spendingCondition.nonce, PubKeyEncoding.Compressed, signature);\n if (!isNonSequentialMultiSig(spendingCondition.hashMode)) {\n this.sigHash = nextVerify.nextSigHash;\n }\n });\n }\n }\n static createSponsorSigner(transaction, spendingCondition) {\n if (transaction.auth.authType != AuthType.Sponsored) {\n throw new SigningError('Cannot add sponsor to non-sponsored transaction');\n }\n const tx = cloneDeep(transaction);\n tx.setSponsor(spendingCondition);\n const originSigHash = tx.verifyOrigin();\n const signer = new this(tx);\n signer.originDone = true;\n signer.sigHash = originSigHash;\n signer.checkOversign = true;\n signer.checkOverlap = true;\n return signer;\n }\n signOrigin(privateKey) {\n if (this.checkOverlap && this.originDone) {\n throw new SigningError('Cannot sign origin after sponsor key');\n }\n if (this.transaction.auth === undefined) {\n throw new SigningError('\"transaction.auth\" is undefined');\n }\n if (this.transaction.auth.spendingCondition === undefined) {\n throw new SigningError('\"transaction.auth.spendingCondition\" is undefined');\n }\n const spendingCondition = this.transaction.auth.spendingCondition;\n if (spendingCondition.hashMode === AddressHashMode.SerializeP2SH ||\n spendingCondition.hashMode === AddressHashMode.SerializeP2WSH) {\n if (this.checkOversign &&\n spendingCondition.fields.filter(field => field.contents.type === StacksMessageType.MessageSignature).length >= spendingCondition.signaturesRequired) {\n throw new Error('Origin would have too many signatures');\n }\n }\n const nextSighash = this.transaction.signNextOrigin(this.sigHash, privateKey);\n if (isSingleSig(this.transaction.auth.spendingCondition) ||\n isSequentialMultiSig(this.transaction.auth.spendingCondition.hashMode)) {\n this.sigHash = nextSighash;\n }\n }\n appendOrigin(publicKey) {\n if (this.checkOverlap && this.originDone) {\n throw Error('Cannot append public key to origin after sponsor key');\n }\n if (this.transaction.auth === undefined) {\n throw new Error('\"transaction.auth\" is undefined');\n }\n if (this.transaction.auth.spendingCondition === undefined) {\n throw new Error('\"transaction.auth.spendingCondition\" is undefined');\n }\n this.transaction.appendPubkey(publicKey);\n }\n signSponsor(privateKey) {\n if (this.transaction.auth === undefined) {\n throw new SigningError('\"transaction.auth\" is undefined');\n }\n if (this.transaction.auth.authType !== AuthType.Sponsored) {\n throw new SigningError('\"transaction.auth.authType\" is not AuthType.Sponsored');\n }\n const nextSighash = this.transaction.signNextSponsor(this.sigHash, privateKey);\n this.sigHash = nextSighash;\n this.originDone = true;\n }\n getTxInComplete() {\n return cloneDeep(this.transaction);\n }\n resume(transaction) {\n this.transaction = cloneDeep(transaction);\n this.sigHash = transaction.signBegin();\n }\n}\n//# sourceMappingURL=signer.js.map","import { bytesToHex, concatArray, hexToBytes, intToBigInt, PRIVATE_KEY_COMPRESSED_LENGTH, writeUInt32BE, } from '@stacks/common';\nimport { deserializeAuthorization, intoInitialSighashAuth, isSingleSig, nextSignature, serializeAuthorization, setFee, setNonce, setSponsor, setSponsorNonce, verifyOrigin, } from './authorization';\nimport { BytesReader } from './bytesReader';\nimport { AnchorMode, anchorModeFromNameOrValue, AuthType, DEFAULT_CHAIN_ID, PayloadType, PostConditionMode, PubKeyEncoding, StacksMessageType, TransactionVersion, } from './constants';\nimport { SerializationError, SigningError } from './errors';\nimport { isCompressed } from './keys';\nimport { deserializePayload, serializePayload } from './payload';\nimport { createTransactionAuthField } from './signature';\nimport { createLPList, deserializeLPList, serializeLPList } from './types';\nimport { cloneDeep, txidFromData } from './utils';\nexport class StacksTransaction {\n constructor(version, auth, payload, postConditions, postConditionMode, anchorMode, chainId) {\n this.version = version;\n this.auth = auth;\n if ('amount' in payload) {\n this.payload = {\n ...payload,\n amount: intToBigInt(payload.amount, false),\n };\n }\n else {\n this.payload = payload;\n }\n this.chainId = chainId ?? DEFAULT_CHAIN_ID;\n this.postConditionMode = postConditionMode ?? PostConditionMode.Deny;\n this.postConditions = postConditions ?? createLPList([]);\n if (anchorMode) {\n this.anchorMode = anchorModeFromNameOrValue(anchorMode);\n }\n else {\n switch (payload.payloadType) {\n case PayloadType.Coinbase:\n case PayloadType.CoinbaseToAltRecipient:\n case PayloadType.NakamotoCoinbase:\n case PayloadType.PoisonMicroblock:\n case PayloadType.TenureChange:\n this.anchorMode = AnchorMode.OnChainOnly;\n break;\n case PayloadType.ContractCall:\n case PayloadType.SmartContract:\n case PayloadType.VersionedSmartContract:\n case PayloadType.TokenTransfer:\n this.anchorMode = AnchorMode.Any;\n break;\n }\n }\n }\n signBegin() {\n const tx = cloneDeep(this);\n tx.auth = intoInitialSighashAuth(tx.auth);\n return tx.txid();\n }\n verifyBegin() {\n const tx = cloneDeep(this);\n tx.auth = intoInitialSighashAuth(tx.auth);\n return tx.txid();\n }\n verifyOrigin() {\n return verifyOrigin(this.auth, this.verifyBegin());\n }\n signNextOrigin(sigHash, privateKey) {\n if (this.auth.spendingCondition === undefined) {\n throw new Error('\"auth.spendingCondition\" is undefined');\n }\n if (this.auth.authType === undefined) {\n throw new Error('\"auth.authType\" is undefined');\n }\n return this.signAndAppend(this.auth.spendingCondition, sigHash, AuthType.Standard, privateKey);\n }\n signNextSponsor(sigHash, privateKey) {\n if (this.auth.authType === AuthType.Sponsored) {\n return this.signAndAppend(this.auth.sponsorSpendingCondition, sigHash, AuthType.Sponsored, privateKey);\n }\n else {\n throw new Error('\"auth.sponsorSpendingCondition\" is undefined');\n }\n }\n appendPubkey(publicKey) {\n const cond = this.auth.spendingCondition;\n if (cond && !isSingleSig(cond)) {\n const compressed = isCompressed(publicKey);\n cond.fields.push(createTransactionAuthField(compressed ? PubKeyEncoding.Compressed : PubKeyEncoding.Uncompressed, publicKey));\n }\n else {\n throw new Error(`Can't append public key to a singlesig condition`);\n }\n }\n signAndAppend(condition, curSigHash, authType, privateKey) {\n const { nextSig, nextSigHash } = nextSignature(curSigHash, authType, condition.fee, condition.nonce, privateKey);\n if (isSingleSig(condition)) {\n condition.signature = nextSig;\n }\n else {\n condition.fields.push(createTransactionAuthField(privateKey.data.byteLength === PRIVATE_KEY_COMPRESSED_LENGTH\n ? PubKeyEncoding.Compressed\n : PubKeyEncoding.Uncompressed, nextSig));\n }\n return nextSigHash;\n }\n txid() {\n const serialized = this.serialize();\n return txidFromData(serialized);\n }\n setSponsor(sponsorSpendingCondition) {\n if (this.auth.authType != AuthType.Sponsored) {\n throw new SigningError('Cannot sponsor sign a non-sponsored transaction');\n }\n this.auth = setSponsor(this.auth, sponsorSpendingCondition);\n }\n setFee(amount) {\n this.auth = setFee(this.auth, amount);\n }\n setNonce(nonce) {\n this.auth = setNonce(this.auth, nonce);\n }\n setSponsorNonce(nonce) {\n if (this.auth.authType != AuthType.Sponsored) {\n throw new SigningError('Cannot sponsor sign a non-sponsored transaction');\n }\n this.auth = setSponsorNonce(this.auth, nonce);\n }\n serialize() {\n if (this.version === undefined) {\n throw new SerializationError('\"version\" is undefined');\n }\n if (this.chainId === undefined) {\n throw new SerializationError('\"chainId\" is undefined');\n }\n if (this.auth === undefined) {\n throw new SerializationError('\"auth\" is undefined');\n }\n if (this.anchorMode === undefined) {\n throw new SerializationError('\"anchorMode\" is undefined');\n }\n if (this.payload === undefined) {\n throw new SerializationError('\"payload\" is undefined');\n }\n const bytesArray = [];\n bytesArray.push(this.version);\n const chainIdBytes = new Uint8Array(4);\n writeUInt32BE(chainIdBytes, this.chainId, 0);\n bytesArray.push(chainIdBytes);\n bytesArray.push(serializeAuthorization(this.auth));\n bytesArray.push(this.anchorMode);\n bytesArray.push(this.postConditionMode);\n bytesArray.push(serializeLPList(this.postConditions));\n bytesArray.push(serializePayload(this.payload));\n return concatArray(bytesArray);\n }\n}\nexport function deserializeTransaction(tx) {\n let bytesReader;\n if (typeof tx === 'string') {\n if (tx.slice(0, 2).toLowerCase() === '0x') {\n bytesReader = new BytesReader(hexToBytes(tx.slice(2)));\n }\n else {\n bytesReader = new BytesReader(hexToBytes(tx));\n }\n }\n else if (tx instanceof Uint8Array) {\n bytesReader = new BytesReader(tx);\n }\n else {\n bytesReader = tx;\n }\n const version = bytesReader.readUInt8Enum(TransactionVersion, n => {\n throw new Error(`Could not parse ${n} as TransactionVersion`);\n });\n const chainId = bytesReader.readUInt32BE();\n const auth = deserializeAuthorization(bytesReader);\n const anchorMode = bytesReader.readUInt8Enum(AnchorMode, n => {\n throw new Error(`Could not parse ${n} as AnchorMode`);\n });\n const postConditionMode = bytesReader.readUInt8Enum(PostConditionMode, n => {\n throw new Error(`Could not parse ${n} as PostConditionMode`);\n });\n const postConditions = deserializeLPList(bytesReader, StacksMessageType.PostCondition);\n const payload = deserializePayload(bytesReader);\n return new StacksTransaction(version, auth, payload, postConditions, postConditionMode, anchorMode, chainId);\n}\nexport function serializeTransaction(transaction) {\n return transaction.serialize();\n}\nexport function transactionToHex(transaction) {\n return bytesToHex(transaction.serialize());\n}\n//# sourceMappingURL=transaction.js.map","import { bytesToHex, hexToBytes, intToBigInt } from '@stacks/common';\nimport { StacksNetwork, StacksMainnet, StacksTestnet, createFetchFn, } from '@stacks/network';\nimport { c32address } from 'c32check';\nimport { createMultiSigSpendingCondition, createSingleSigSpendingCondition, createSponsoredAuth, createStandardAuth, isSingleSig, } from './authorization';\nimport { deserializeCV, serializeCV } from './clarity';\nimport { AddressHashMode, AddressVersion, PayloadType, PostConditionMode, TransactionVersion, RECOVERABLE_ECDSA_SIG_LENGTH_BYTES, StacksMessageType, ClarityVersion, } from './constants';\nimport { validateContractCall } from './contract-abi';\nimport { NoEstimateAvailableError } from './errors';\nimport { createStacksPrivateKey, createStacksPublicKey, getPublicKey, pubKeyfromPrivKey, publicKeyFromBytes, publicKeyToAddress, publicKeyToString, } from './keys';\nimport { createContractCallPayload, createSmartContractPayload, createTokenTransferPayload, serializePayload, } from './payload';\nimport { createFungiblePostCondition, createNonFungiblePostCondition, createSTXPostCondition, } from './postcondition';\nimport { createAddress, createContractPrincipal, createStandardPrincipal, } from './postcondition-types';\nimport { TransactionSigner } from './signer';\nimport { StacksTransaction } from './transaction';\nimport { addressFromPublicKeys, createLPList } from './types';\nimport { cvToHex, omit, parseReadOnlyResponse, validateTxId } from './utils';\nasync function _getNonceApi(address, network) {\n const url = `${network.coreApiUrl}/extended/v1/address/${address}/nonces`;\n const response = await network.fetchFn(url);\n const result = await response.json();\n return BigInt(result.possible_next_nonce);\n}\nexport async function getNonce(address, network) {\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? new StacksMainnet());\n const url = derivedNetwork.getAccountApiUrl(address);\n try {\n return await _getNonceApi(address, derivedNetwork);\n }\n catch (e) { }\n const response = await derivedNetwork.fetchFn(url);\n if (!response.ok) {\n let msg = '';\n try {\n msg = await response.text();\n }\n catch (error) { }\n throw new Error(`Error fetching nonce. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n const responseText = await response.text();\n const result = JSON.parse(responseText);\n return BigInt(result.nonce);\n}\nexport async function estimateTransfer(transaction, network) {\n if (transaction.payload.payloadType !== PayloadType.TokenTransfer) {\n throw new Error(`Transaction fee estimation only possible with ${PayloadType[PayloadType.TokenTransfer]} transactions. Invoked with: ${PayloadType[transaction.payload.payloadType]}`);\n }\n return estimateTransferUnsafe(transaction, network);\n}\nexport async function estimateTransferUnsafe(transaction, network) {\n const requestHeaders = {\n Accept: 'application/text',\n };\n const fetchOptions = {\n method: 'GET',\n headers: requestHeaders,\n };\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? deriveNetwork(transaction));\n const url = derivedNetwork.getTransferFeeEstimateApiUrl();\n const response = await derivedNetwork.fetchFn(url, fetchOptions);\n if (!response.ok) {\n let msg = '';\n try {\n msg = await response.text();\n }\n catch (error) { }\n throw new Error(`Error estimating transaction fee. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n const feeRateResult = await response.text();\n const txBytes = BigInt(transaction.serialize().byteLength);\n const feeRate = BigInt(feeRateResult);\n return feeRate * txBytes;\n}\nexport async function estimateTransaction(transactionPayload, estimatedLen, network) {\n const options = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n transaction_payload: bytesToHex(serializePayload(transactionPayload)),\n ...(estimatedLen ? { estimated_len: estimatedLen } : {}),\n }),\n };\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? new StacksMainnet());\n const url = derivedNetwork.getTransactionFeeEstimateApiUrl();\n const response = await derivedNetwork.fetchFn(url, options);\n if (!response.ok) {\n const body = await response.text().then(str => {\n try {\n return JSON.parse(str);\n }\n catch (error) {\n return str;\n }\n });\n if (body?.reason === 'NoEstimateAvailable' ||\n (typeof body === 'string' && body.includes('NoEstimateAvailable'))) {\n throw new NoEstimateAvailableError(body?.reason_data?.message ?? '');\n }\n throw new Error(`Error estimating transaction fee. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${body}\"`);\n }\n const data = await response.json();\n return data.estimations;\n}\nexport async function broadcastTransaction(transaction, network, attachment) {\n const rawTx = transaction.serialize();\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? deriveNetwork(transaction));\n const url = derivedNetwork.getBroadcastApiUrl();\n return broadcastRawTransaction(rawTx, url, attachment, derivedNetwork.fetchFn);\n}\nexport async function broadcastRawTransaction(rawTx, url, attachment, fetchFn = createFetchFn()) {\n const options = {\n method: 'POST',\n headers: { 'Content-Type': attachment ? 'application/json' : 'application/octet-stream' },\n body: attachment\n ? JSON.stringify({\n tx: bytesToHex(rawTx),\n attachment: bytesToHex(attachment),\n })\n : rawTx,\n };\n const response = await fetchFn(url, options);\n if (!response.ok) {\n try {\n return (await response.json());\n }\n catch (e) {\n throw Error(`Failed to broadcast transaction: ${e.message}`);\n }\n }\n const text = await response.text();\n const txid = text.replace(/[\"]+/g, '');\n if (!validateTxId(txid))\n throw new Error(text);\n return { txid };\n}\nexport async function getAbi(address, contractName, network) {\n const options = {\n method: 'GET',\n };\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network);\n const url = derivedNetwork.getAbiApiUrl(address, contractName);\n const response = await derivedNetwork.fetchFn(url, options);\n if (!response.ok) {\n const msg = await response.text().catch(() => '');\n throw new Error(`Error fetching contract ABI for contract \"${contractName}\" at address ${address}. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n return JSON.parse(await response.text());\n}\nfunction deriveNetwork(transaction) {\n switch (transaction.version) {\n case TransactionVersion.Mainnet:\n return new StacksMainnet();\n case TransactionVersion.Testnet:\n return new StacksTestnet();\n }\n}\nexport async function makeUnsignedSTXTokenTransfer(txOptions) {\n const defaultOptions = {\n fee: BigInt(0),\n nonce: BigInt(0),\n network: new StacksMainnet(),\n memo: '',\n sponsored: false,\n };\n const options = Object.assign(defaultOptions, txOptions);\n const payload = createTokenTransferPayload(options.recipient, options.amount, options.memo);\n let authorization = null;\n let spendingCondition = null;\n if ('publicKey' in options) {\n spendingCondition = createSingleSigSpendingCondition(AddressHashMode.SerializeP2PKH, options.publicKey, options.nonce, options.fee);\n }\n else {\n const hashMode = options.useNonSequentialMultiSig\n ? AddressHashMode.SerializeP2SHNonSequential\n : AddressHashMode.SerializeP2SH;\n const publicKeys = options.address\n ? sortPublicKeysForAddress(options.publicKeys, options.numSignatures, hashMode, createAddress(options.address).hash160)\n : options.publicKeys;\n spendingCondition = createMultiSigSpendingCondition(hashMode, options.numSignatures, publicKeys, options.nonce, options.fee);\n }\n if (options.sponsored) {\n authorization = createSponsoredAuth(spendingCondition);\n }\n else {\n authorization = createStandardAuth(spendingCondition);\n }\n const network = StacksNetwork.fromNameOrNetwork(options.network);\n const transaction = new StacksTransaction(network.version, authorization, payload, undefined, undefined, options.anchorMode, network.chainId);\n if (txOptions.fee === undefined || txOptions.fee === null) {\n const fee = await estimateTransactionFeeWithFallback(transaction, network);\n transaction.setFee(fee);\n }\n if (txOptions.nonce === undefined || txOptions.nonce === null) {\n const addressVersion = options.network.version === TransactionVersion.Mainnet\n ? AddressVersion.MainnetSingleSig\n : AddressVersion.TestnetSingleSig;\n const senderAddress = c32address(addressVersion, transaction.auth.spendingCondition.signer);\n const txNonce = await getNonce(senderAddress, options.network);\n transaction.setNonce(txNonce);\n }\n return transaction;\n}\nexport async function makeSTXTokenTransfer(txOptions) {\n if ('senderKey' in txOptions) {\n const publicKey = publicKeyToString(getPublicKey(createStacksPrivateKey(txOptions.senderKey)));\n const options = omit(txOptions, 'senderKey');\n const transaction = await makeUnsignedSTXTokenTransfer({ publicKey, ...options });\n const privKey = createStacksPrivateKey(txOptions.senderKey);\n const signer = new TransactionSigner(transaction);\n signer.signOrigin(privKey);\n return transaction;\n }\n else {\n const options = omit(txOptions, 'signerKeys');\n const transaction = await makeUnsignedSTXTokenTransfer(options);\n mutatingSignAppendMultiSig(transaction, txOptions.publicKeys.slice(), txOptions.signerKeys, txOptions.address);\n return transaction;\n }\n}\nexport async function estimateContractDeploy(transaction, network) {\n if (transaction.payload.payloadType !== PayloadType.SmartContract &&\n transaction.payload.payloadType !== PayloadType.VersionedSmartContract) {\n throw new Error(`Contract deploy fee estimation only possible with ${PayloadType[PayloadType.SmartContract]} transactions. Invoked with: ${PayloadType[transaction.payload.payloadType]}`);\n }\n const requestHeaders = {\n Accept: 'application/text',\n };\n const fetchOptions = {\n method: 'GET',\n headers: requestHeaders,\n };\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? deriveNetwork(transaction));\n const url = derivedNetwork.getTransferFeeEstimateApiUrl();\n const response = await derivedNetwork.fetchFn(url, fetchOptions);\n if (!response.ok) {\n const msg = await response.text().catch(() => '');\n throw new Error(`Error estimating contract deploy fee. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n const feeRateResult = await response.text();\n const txBytes = intToBigInt(transaction.serialize().byteLength, false);\n const feeRate = intToBigInt(feeRateResult, false);\n return feeRate * txBytes;\n}\nexport async function makeContractDeploy(txOptions) {\n if ('senderKey' in txOptions) {\n const publicKey = publicKeyToString(getPublicKey(createStacksPrivateKey(txOptions.senderKey)));\n const options = omit(txOptions, 'senderKey');\n const transaction = await makeUnsignedContractDeploy({ publicKey, ...options });\n const privKey = createStacksPrivateKey(txOptions.senderKey);\n const signer = new TransactionSigner(transaction);\n signer.signOrigin(privKey);\n return transaction;\n }\n else {\n const options = omit(txOptions, 'signerKeys');\n const transaction = await makeUnsignedContractDeploy(options);\n mutatingSignAppendMultiSig(transaction, txOptions.publicKeys.slice(), txOptions.signerKeys, txOptions.address);\n return transaction;\n }\n}\nexport async function makeUnsignedContractDeploy(txOptions) {\n const defaultOptions = {\n fee: BigInt(0),\n nonce: BigInt(0),\n network: new StacksMainnet(),\n postConditionMode: PostConditionMode.Deny,\n sponsored: false,\n clarityVersion: ClarityVersion.Clarity2,\n };\n const options = Object.assign(defaultOptions, txOptions);\n const payload = createSmartContractPayload(options.contractName, options.codeBody, options.clarityVersion);\n let authorization = null;\n let spendingCondition = null;\n if ('publicKey' in options) {\n spendingCondition = createSingleSigSpendingCondition(AddressHashMode.SerializeP2PKH, options.publicKey, options.nonce, options.fee);\n }\n else {\n const hashMode = options.useNonSequentialMultiSig\n ? AddressHashMode.SerializeP2SHNonSequential\n : AddressHashMode.SerializeP2SH;\n const publicKeys = options.address\n ? sortPublicKeysForAddress(options.publicKeys, options.numSignatures, hashMode, createAddress(options.address).hash160)\n : options.publicKeys;\n spendingCondition = createMultiSigSpendingCondition(hashMode, options.numSignatures, publicKeys, options.nonce, options.fee);\n }\n if (options.sponsored) {\n authorization = createSponsoredAuth(spendingCondition);\n }\n else {\n authorization = createStandardAuth(spendingCondition);\n }\n const network = StacksNetwork.fromNameOrNetwork(options.network);\n const postConditions = [];\n if (options.postConditions && options.postConditions.length > 0) {\n options.postConditions.forEach(postCondition => {\n postConditions.push(postCondition);\n });\n }\n const lpPostConditions = createLPList(postConditions);\n const transaction = new StacksTransaction(network.version, authorization, payload, lpPostConditions, options.postConditionMode, options.anchorMode, network.chainId);\n if (txOptions.fee === undefined || txOptions.fee === null) {\n const fee = await estimateTransactionFeeWithFallback(transaction, network);\n transaction.setFee(fee);\n }\n if (txOptions.nonce === undefined || txOptions.nonce === null) {\n const addressVersion = options.network.version === TransactionVersion.Mainnet\n ? AddressVersion.MainnetSingleSig\n : AddressVersion.TestnetSingleSig;\n const senderAddress = c32address(addressVersion, transaction.auth.spendingCondition.signer);\n const txNonce = await getNonce(senderAddress, options.network);\n transaction.setNonce(txNonce);\n }\n return transaction;\n}\nexport async function estimateContractFunctionCall(transaction, network) {\n if (transaction.payload.payloadType !== PayloadType.ContractCall) {\n throw new Error(`Contract call fee estimation only possible with ${PayloadType[PayloadType.ContractCall]} transactions. Invoked with: ${PayloadType[transaction.payload.payloadType]}`);\n }\n const requestHeaders = {\n Accept: 'application/text',\n };\n const fetchOptions = {\n method: 'GET',\n headers: requestHeaders,\n };\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network ?? deriveNetwork(transaction));\n const url = derivedNetwork.getTransferFeeEstimateApiUrl();\n const response = await derivedNetwork.fetchFn(url, fetchOptions);\n if (!response.ok) {\n const msg = await response.text().catch(() => '');\n throw new Error(`Error estimating contract call fee. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n const feeRateResult = await response.text();\n const txBytes = intToBigInt(transaction.serialize().byteLength, false);\n const feeRate = intToBigInt(feeRateResult, false);\n return feeRate * txBytes;\n}\nexport async function makeUnsignedContractCall(txOptions) {\n const defaultOptions = {\n fee: BigInt(0),\n nonce: BigInt(0),\n network: new StacksMainnet(),\n postConditionMode: PostConditionMode.Deny,\n sponsored: false,\n };\n const options = Object.assign(defaultOptions, txOptions);\n const payload = createContractCallPayload(options.contractAddress, options.contractName, options.functionName, options.functionArgs);\n if (options?.validateWithAbi) {\n let abi;\n if (typeof options.validateWithAbi === 'boolean') {\n if (options?.network) {\n abi = await getAbi(options.contractAddress, options.contractName, options.network);\n }\n else {\n throw new Error('Network option must be provided in order to validate with ABI');\n }\n }\n else {\n abi = options.validateWithAbi;\n }\n validateContractCall(payload, abi);\n }\n let spendingCondition = null;\n let authorization = null;\n if ('publicKey' in options) {\n spendingCondition = createSingleSigSpendingCondition(AddressHashMode.SerializeP2PKH, options.publicKey, options.nonce, options.fee);\n }\n else {\n const hashMode = options.useNonSequentialMultiSig\n ? AddressHashMode.SerializeP2SHNonSequential\n : AddressHashMode.SerializeP2SH;\n const publicKeys = options.address\n ? sortPublicKeysForAddress(options.publicKeys, options.numSignatures, hashMode, createAddress(options.address).hash160)\n : options.publicKeys;\n spendingCondition = createMultiSigSpendingCondition(hashMode, options.numSignatures, publicKeys, options.nonce, options.fee);\n }\n if (options.sponsored) {\n authorization = createSponsoredAuth(spendingCondition);\n }\n else {\n authorization = createStandardAuth(spendingCondition);\n }\n const network = StacksNetwork.fromNameOrNetwork(options.network);\n const postConditions = [];\n if (options.postConditions && options.postConditions.length > 0) {\n options.postConditions.forEach(postCondition => {\n postConditions.push(postCondition);\n });\n }\n const lpPostConditions = createLPList(postConditions);\n const transaction = new StacksTransaction(network.version, authorization, payload, lpPostConditions, options.postConditionMode, options.anchorMode, network.chainId);\n if (txOptions.fee === undefined || txOptions.fee === null) {\n const fee = await estimateTransactionFeeWithFallback(transaction, network);\n transaction.setFee(fee);\n }\n if (txOptions.nonce === undefined || txOptions.nonce === null) {\n const addressVersion = network.version === TransactionVersion.Mainnet\n ? AddressVersion.MainnetSingleSig\n : AddressVersion.TestnetSingleSig;\n const senderAddress = c32address(addressVersion, transaction.auth.spendingCondition.signer);\n const txNonce = await getNonce(senderAddress, network);\n transaction.setNonce(txNonce);\n }\n return transaction;\n}\nexport async function makeContractCall(txOptions) {\n if ('senderKey' in txOptions) {\n const publicKey = publicKeyToString(getPublicKey(createStacksPrivateKey(txOptions.senderKey)));\n const options = omit(txOptions, 'senderKey');\n const transaction = await makeUnsignedContractCall({ publicKey, ...options });\n const privKey = createStacksPrivateKey(txOptions.senderKey);\n const signer = new TransactionSigner(transaction);\n signer.signOrigin(privKey);\n return transaction;\n }\n else {\n const options = omit(txOptions, 'signerKeys');\n const transaction = await makeUnsignedContractCall(options);\n mutatingSignAppendMultiSig(transaction, txOptions.publicKeys.slice(), txOptions.signerKeys, txOptions.address);\n return transaction;\n }\n}\nexport function makeStandardSTXPostCondition(address, conditionCode, amount) {\n return createSTXPostCondition(createStandardPrincipal(address), conditionCode, amount);\n}\nexport function makeContractSTXPostCondition(address, contractName, conditionCode, amount) {\n return createSTXPostCondition(createContractPrincipal(address, contractName), conditionCode, amount);\n}\nexport function makeStandardFungiblePostCondition(address, conditionCode, amount, assetInfo) {\n return createFungiblePostCondition(createStandardPrincipal(address), conditionCode, amount, assetInfo);\n}\nexport function makeContractFungiblePostCondition(address, contractName, conditionCode, amount, assetInfo) {\n return createFungiblePostCondition(createContractPrincipal(address, contractName), conditionCode, amount, assetInfo);\n}\nexport function makeStandardNonFungiblePostCondition(address, conditionCode, assetInfo, assetId) {\n return createNonFungiblePostCondition(createStandardPrincipal(address), conditionCode, assetInfo, assetId);\n}\nexport function makeContractNonFungiblePostCondition(address, contractName, conditionCode, assetInfo, assetId) {\n return createNonFungiblePostCondition(createContractPrincipal(address, contractName), conditionCode, assetInfo, assetId);\n}\nexport async function callReadOnlyFunction(readOnlyFunctionOptions) {\n const defaultOptions = {\n network: new StacksMainnet(),\n };\n const options = Object.assign(defaultOptions, readOnlyFunctionOptions);\n const { contractName, contractAddress, functionName, functionArgs, senderAddress } = options;\n const network = StacksNetwork.fromNameOrNetwork(options.network);\n const url = network.getReadOnlyFunctionCallApiUrl(contractAddress, contractName, functionName);\n const args = functionArgs.map(arg => cvToHex(arg));\n const body = JSON.stringify({\n sender: senderAddress,\n arguments: args,\n });\n const response = await network.fetchFn(url, {\n method: 'POST',\n body,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n if (!response.ok) {\n const msg = await response.text().catch(() => '');\n throw new Error(`Error calling read-only function. Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n return response.json().then(responseJson => parseReadOnlyResponse(responseJson));\n}\nexport async function getContractMapEntry(getContractMapEntryOptions) {\n const defaultOptions = {\n network: new StacksMainnet(),\n };\n const { contractAddress, contractName, mapName, mapKey, network } = Object.assign(defaultOptions, getContractMapEntryOptions);\n const derivedNetwork = StacksNetwork.fromNameOrNetwork(network);\n const url = derivedNetwork.getMapEntryUrl(contractAddress, contractName, mapName);\n const serializedKeyBytes = serializeCV(mapKey);\n const serializedKeyHex = '0x' + bytesToHex(serializedKeyBytes);\n const fetchOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify(serializedKeyHex),\n };\n const response = await derivedNetwork.fetchFn(url, fetchOptions);\n if (!response.ok) {\n const msg = await response.text().catch(() => '');\n throw new Error(`Error fetching map entry for map \"${mapName}\" in contract \"${contractName}\" at address ${contractAddress}, using map key \"${serializedKeyHex}\". Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the message: \"${msg}\"`);\n }\n const responseBody = await response.text();\n const responseJson = JSON.parse(responseBody);\n if (!responseJson.data) {\n throw new Error(`Error fetching map entry for map \"${mapName}\" in contract \"${contractName}\" at address ${contractAddress}, using map key \"${serializedKeyHex}\". Response ${response.status}: ${response.statusText}. Attempted to fetch ${url} and failed with the response: \"${responseBody}\"`);\n }\n let deserializedCv;\n try {\n deserializedCv = deserializeCV(responseJson.data);\n }\n catch (error) {\n throw new Error(`Error deserializing Clarity value \"${responseJson.data}\": ${error}`);\n }\n return deserializedCv;\n}\nexport async function sponsorTransaction(sponsorOptions) {\n const defaultOptions = {\n fee: 0,\n sponsorNonce: 0,\n sponsorAddressHashmode: AddressHashMode.SerializeP2PKH,\n network: sponsorOptions.transaction.version === TransactionVersion.Mainnet\n ? new StacksMainnet()\n : new StacksTestnet(),\n };\n const options = Object.assign(defaultOptions, sponsorOptions);\n const network = StacksNetwork.fromNameOrNetwork(options.network);\n const sponsorPubKey = pubKeyfromPrivKey(options.sponsorPrivateKey);\n if (sponsorOptions.fee === undefined || sponsorOptions.fee === null) {\n let txFee = 0;\n switch (options.transaction.payload.payloadType) {\n case PayloadType.TokenTransfer:\n case PayloadType.SmartContract:\n case PayloadType.VersionedSmartContract:\n case PayloadType.ContractCall:\n const estimatedLen = estimateTransactionByteLength(options.transaction);\n try {\n txFee = (await estimateTransaction(options.transaction.payload, estimatedLen, network))[1]\n .fee;\n }\n catch (e) {\n throw e;\n }\n break;\n default:\n throw new Error(`Sponsored transactions not supported for transaction type ${PayloadType[options.transaction.payload.payloadType]}`);\n }\n options.transaction.setFee(txFee);\n options.fee = txFee;\n }\n if (sponsorOptions.sponsorNonce === undefined || sponsorOptions.sponsorNonce === null) {\n const addressVersion = network.version === TransactionVersion.Mainnet\n ? AddressVersion.MainnetSingleSig\n : AddressVersion.TestnetSingleSig;\n const senderAddress = publicKeyToAddress(addressVersion, sponsorPubKey);\n const sponsorNonce = await getNonce(senderAddress, network);\n options.sponsorNonce = sponsorNonce;\n }\n const sponsorSpendingCondition = createSingleSigSpendingCondition(options.sponsorAddressHashmode, publicKeyToString(sponsorPubKey), options.sponsorNonce, options.fee);\n options.transaction.setSponsor(sponsorSpendingCondition);\n const privKey = createStacksPrivateKey(options.sponsorPrivateKey);\n const signer = TransactionSigner.createSponsorSigner(options.transaction, sponsorSpendingCondition);\n signer.signSponsor(privKey);\n return signer.transaction;\n}\nexport function estimateTransactionByteLength(transaction) {\n const hashMode = transaction.auth.spendingCondition.hashMode;\n const multiSigHashModes = [AddressHashMode.SerializeP2SH, AddressHashMode.SerializeP2WSH];\n if (multiSigHashModes.includes(hashMode)) {\n const multiSigSpendingCondition = transaction.auth\n .spendingCondition;\n const existingSignatures = multiSigSpendingCondition.fields.filter(field => field.contents.type === StacksMessageType.MessageSignature).length;\n const totalSignatureLength = (multiSigSpendingCondition.signaturesRequired - existingSignatures) *\n (RECOVERABLE_ECDSA_SIG_LENGTH_BYTES + 1);\n return transaction.serialize().byteLength + totalSignatureLength;\n }\n else {\n return transaction.serialize().byteLength;\n }\n}\nexport async function estimateTransactionFeeWithFallback(transaction, network) {\n try {\n const estimatedLen = estimateTransactionByteLength(transaction);\n return (await estimateTransaction(transaction.payload, estimatedLen, network))[1].fee;\n }\n catch (error) {\n if (error instanceof NoEstimateAvailableError) {\n return await estimateTransferUnsafe(transaction, network);\n }\n throw error;\n }\n}\nfunction mutatingSignAppendMultiSig(transaction, publicKeys, signerKeys, address) {\n if (isSingleSig(transaction.auth.spendingCondition)) {\n throw new Error('Transaction is not a multi-sig transaction');\n }\n const signer = new TransactionSigner(transaction);\n const pubs = address\n ? sortPublicKeysForAddress(publicKeys, transaction.auth.spendingCondition.signaturesRequired, transaction.auth.spendingCondition.hashMode, createAddress(address).hash160)\n : publicKeys;\n for (const publicKey of pubs) {\n const signerKey = signerKeys.find(key => bytesToHex(pubKeyfromPrivKey(key).data) === publicKey);\n if (signerKey) {\n signer.signOrigin(createStacksPrivateKey(signerKey));\n }\n else {\n signer.appendOrigin(publicKeyFromBytes(hexToBytes(publicKey)));\n }\n }\n}\nfunction sortPublicKeysForAddress(publicKeys, numSigs, hashMode, hash) {\n const hashUnsorted = addressFromPublicKeys(0, hashMode, numSigs, publicKeys.map(createStacksPublicKey)).hash160;\n if (hashUnsorted === hash)\n return publicKeys;\n const publicKeysSorted = publicKeys.slice().sort();\n const hashSorted = addressFromPublicKeys(0, hashMode, numSigs, publicKeysSorted.map(createStacksPublicKey)).hash160;\n if (hashSorted === hash)\n return publicKeysSorted;\n throw new Error('Failed to find matching multi-sig address given public-keys.');\n}\n//# sourceMappingURL=builders.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","const LOCAL_STORAGE_KEY = 'STX_PROVIDER';\nconst getSelectedProviderId = () => {\n if (typeof window === 'undefined')\n return null;\n return window.localStorage.getItem(LOCAL_STORAGE_KEY);\n};\nconst setSelectedProviderId = (provider) => {\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, provider);\n }\n};\nconst clearSelectedProviderId = () => {\n if (typeof window !== 'undefined') {\n window.localStorage.removeItem(LOCAL_STORAGE_KEY);\n }\n};\n\n// AUTO REGISTERED PROVIDERS\nconst getRegisteredProviders = () => {\n if (typeof window === 'undefined')\n return [];\n const legacyProviders = window.webbtc_stx_providers || [];\n const wbipProviders = window.wbip_providers || [];\n return [...legacyProviders, ...wbipProviders];\n};\nconst getInstalledProviders = (defaultProviders = []) => {\n if (typeof window === 'undefined')\n return [];\n const registeredProviders = getRegisteredProviders();\n const additionalInstalledProviders = defaultProviders.filter(defaultProvider => {\n // already registered, don't add again\n if (registeredProviders.find(rp => rp.id === defaultProvider.id))\n return false;\n // check if default provider is installed (even if not registered)\n const provider = getProviderFromId(defaultProvider.id);\n return !!provider;\n });\n return registeredProviders.concat(additionalInstalledProviders);\n};\n/**\n * Check if a wallet provider was previously selected via Connect.\n * @returns `true` if a provider was selected, `false` otherwise.\n */\nconst isProviderSelected = () => {\n return !!getSelectedProviderId();\n};\n/**\n * Get the currently selected wallet provider.\n * Note that this will not return the default `window.StacksProvider` object.\n * @returns The wallet provider object, or null if no provider is selected.\n */\nconst getProvider = () => {\n const providerId = getSelectedProviderId();\n return getProviderFromId(providerId);\n};\nconst getProviderFromId = (id) => {\n return id === null || id === void 0 ? void 0 : id.split('.').reduce((acc, part) => acc === null || acc === void 0 ? void 0 : acc[part], window);\n};\n\nexport { clearSelectedProviderId, getInstalledProviders, getProvider, getProviderFromId, getRegisteredProviders, getSelectedProviderId, isProviderSelected, setSelectedProviderId };\n//# sourceMappingURL=index.js.map\n\n//# sourceMappingURL=index.js.map","const NAMESPACE = 'connect-ui';\nconst BUILD = /* connect-ui */ { hydratedSelectorName: \"hydrated\", lazyLoad: true, updatable: true, watchCallback: false };\n\n/*\n Stencil Client Platform v4.36.3 | MIT Licensed | https://stenciljs.com\n */\nvar __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/utils/constants.ts\nvar SVG_NS = \"http://www.w3.org/2000/svg\";\nvar HTML_NS = \"http://www.w3.org/1999/xhtml\";\n\n// src/client/client-host-ref.ts\nvar getHostRef = (ref) => {\n if (ref.__stencil__getHostRef) {\n return ref.__stencil__getHostRef();\n }\n return void 0;\n};\nvar registerInstance = (lazyInstance, hostRef) => {\n lazyInstance.__stencil__getHostRef = () => hostRef;\n hostRef.$lazyInstance$ = lazyInstance;\n};\nvar registerHost = (hostElement, cmpMeta) => {\n const hostRef = {\n $flags$: 0,\n $hostElement$: hostElement,\n $cmpMeta$: cmpMeta,\n $instanceValues$: /* @__PURE__ */ new Map()\n };\n {\n hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);\n hostElement[\"s-p\"] = [];\n hostElement[\"s-rc\"] = [];\n }\n const ref = hostRef;\n hostElement.__stencil__getHostRef = () => ref;\n return ref;\n};\nvar isMemberInElement = (elm, memberName) => memberName in elm;\nvar consoleError = (e, el) => (0, console.error)(e, el);\n\n// src/client/client-load-module.ts\nvar cmpModules = /* @__PURE__ */ new Map();\nvar loadModule = (cmpMeta, hostRef, hmrVersionId) => {\n const exportName = cmpMeta.$tagName$.replace(/-/g, \"_\");\n const bundleId = cmpMeta.$lazyBundleId$;\n if (!bundleId) {\n return void 0;\n }\n const module = cmpModules.get(bundleId) ;\n if (module) {\n return module[exportName];\n }\n \n if (!hmrVersionId || !BUILD.hotModuleReplacement) {\n const processMod = importedModule => {\n cmpModules.set(bundleId, importedModule);\n return importedModule[exportName];\n }\n switch(bundleId) {\n \n case 'connect-modal':\n return import(\n /* webpackMode: \"lazy\" */\n './connect-modal.entry.js').then(processMod, consoleError);\n }\n }\n return import(\n /* @vite-ignore */\n /* webpackInclude: /\\.entry\\.js$/ */\n /* webpackExclude: /\\.system\\.entry\\.js$/ */\n /* webpackMode: \"lazy\" */\n `./${bundleId}.entry.js${\"\"}`\n ).then(\n (importedModule) => {\n {\n cmpModules.set(bundleId, importedModule);\n }\n return importedModule[exportName];\n },\n (e) => {\n consoleError(e, hostRef.$hostElement$);\n }\n );\n};\n\n// src/client/client-style.ts\nvar styles = /* @__PURE__ */ new Map();\nvar HYDRATED_CSS = \"{visibility:hidden}.hydrated{visibility:inherit}\";\nvar SLOT_FB_CSS = \"slot-fb{display:contents}slot-fb[hidden]{display:none}\";\nvar win = typeof window !== \"undefined\" ? window : {};\nvar plt = {\n $flags$: 0,\n $resourcesUrl$: \"\",\n jmp: (h2) => h2(),\n raf: (h2) => requestAnimationFrame(h2),\n ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),\n rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),\n ce: (eventName, opts) => new CustomEvent(eventName, opts)\n};\nvar promiseResolve = (v) => Promise.resolve(v);\nvar supportsConstructableStylesheets = /* @__PURE__ */ (() => {\n try {\n new CSSStyleSheet();\n return typeof new CSSStyleSheet().replaceSync === \"function\";\n } catch (e) {\n }\n return false;\n})() ;\nvar supportsMutableAdoptedStyleSheets = supportsConstructableStylesheets ? /* @__PURE__ */ (() => !!win.document && Object.getOwnPropertyDescriptor(win.document.adoptedStyleSheets, \"length\").writable)() : false;\nvar queuePending = false;\nvar queueDomReads = [];\nvar queueDomWrites = [];\nvar queueTask = (queue, write) => (cb) => {\n queue.push(cb);\n if (!queuePending) {\n queuePending = true;\n if (write && plt.$flags$ & 4 /* queueSync */) {\n nextTick(flush);\n } else {\n plt.raf(flush);\n }\n }\n};\nvar consume = (queue) => {\n for (let i2 = 0; i2 < queue.length; i2++) {\n try {\n queue[i2](performance.now());\n } catch (e) {\n consoleError(e);\n }\n }\n queue.length = 0;\n};\nvar flush = () => {\n consume(queueDomReads);\n {\n consume(queueDomWrites);\n if (queuePending = queueDomReads.length > 0) {\n plt.raf(flush);\n }\n }\n};\nvar nextTick = (cb) => promiseResolve().then(cb);\nvar writeTask = /* @__PURE__ */ queueTask(queueDomWrites, true);\nvar isComplexType = (o) => {\n o = typeof o;\n return o === \"object\" || o === \"function\";\n};\n\n// src/utils/query-nonce-meta-tag-content.ts\nfunction queryNonceMetaTagContent(doc) {\n var _a, _b, _c;\n return (_c = (_b = (_a = doc.head) == null ? void 0 : _a.querySelector('meta[name=\"csp-nonce\"]')) == null ? void 0 : _b.getAttribute(\"content\")) != null ? _c : void 0;\n}\n\n// src/utils/regular-expression.ts\nvar escapeRegExpSpecialCharacters = (text) => {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n// src/utils/result.ts\nvar result_exports = {};\n__export(result_exports, {\n err: () => err,\n map: () => map,\n ok: () => ok,\n unwrap: () => unwrap,\n unwrapErr: () => unwrapErr\n});\nvar ok = (value) => ({\n isOk: true,\n isErr: false,\n value\n});\nvar err = (value) => ({\n isOk: false,\n isErr: true,\n value\n});\nfunction map(result, fn) {\n if (result.isOk) {\n const val = fn(result.value);\n if (val instanceof Promise) {\n return val.then((newVal) => ok(newVal));\n } else {\n return ok(val);\n }\n }\n if (result.isErr) {\n const value = result.value;\n return err(value);\n }\n throw \"should never get here\";\n}\nvar unwrap = (result) => {\n if (result.isOk) {\n return result.value;\n } else {\n throw result.value;\n }\n};\nvar unwrapErr = (result) => {\n if (result.isErr) {\n return result.value;\n } else {\n throw result.value;\n }\n};\n\n// src/utils/style.ts\nfunction createStyleSheetIfNeededAndSupported(styles2) {\n return void 0;\n}\n\n// src/utils/shadow-root.ts\nvar globalStyleSheet;\nfunction createShadowRoot(cmpMeta) {\n var _a;\n const shadowRoot = this.attachShadow({ mode: \"open\" });\n if (globalStyleSheet === void 0) globalStyleSheet = (_a = createStyleSheetIfNeededAndSupported()) != null ? _a : null;\n if (globalStyleSheet) {\n if (supportsMutableAdoptedStyleSheets) {\n shadowRoot.adoptedStyleSheets.push(globalStyleSheet);\n } else {\n shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, globalStyleSheet];\n }\n }\n}\nvar createTime = (fnName, tagName = \"\") => {\n {\n return () => {\n return;\n };\n }\n};\nvar uniqueTime = (key, measureText) => {\n {\n return () => {\n return;\n };\n }\n};\nvar rootAppliedStyles = /* @__PURE__ */ new WeakMap();\nvar registerStyle = (scopeId2, cssText, allowCS) => {\n let style = styles.get(scopeId2);\n if (supportsConstructableStylesheets && allowCS) {\n style = style || new CSSStyleSheet();\n if (typeof style === \"string\") {\n style = cssText;\n } else {\n style.replaceSync(cssText);\n }\n } else {\n style = cssText;\n }\n styles.set(scopeId2, style);\n};\nvar addStyle = (styleContainerNode, cmpMeta, mode) => {\n var _a;\n const scopeId2 = getScopeId(cmpMeta);\n const style = styles.get(scopeId2);\n if (!win.document) {\n return scopeId2;\n }\n styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : win.document;\n if (style) {\n if (typeof style === \"string\") {\n styleContainerNode = styleContainerNode.head || styleContainerNode;\n let appliedStyles = rootAppliedStyles.get(styleContainerNode);\n let styleElm;\n if (!appliedStyles) {\n rootAppliedStyles.set(styleContainerNode, appliedStyles = /* @__PURE__ */ new Set());\n }\n if (!appliedStyles.has(scopeId2)) {\n {\n styleElm = win.document.createElement(\"style\");\n styleElm.innerHTML = style;\n const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(win.document);\n if (nonce != null) {\n styleElm.setAttribute(\"nonce\", nonce);\n }\n if (!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */)) {\n if (styleContainerNode.nodeName === \"HEAD\") {\n const preconnectLinks = styleContainerNode.querySelectorAll(\"link[rel=preconnect]\");\n const referenceNode2 = preconnectLinks.length > 0 ? preconnectLinks[preconnectLinks.length - 1].nextSibling : styleContainerNode.querySelector(\"style\");\n styleContainerNode.insertBefore(\n styleElm,\n (referenceNode2 == null ? void 0 : referenceNode2.parentNode) === styleContainerNode ? referenceNode2 : null\n );\n } else if (\"host\" in styleContainerNode) {\n if (supportsConstructableStylesheets) {\n const stylesheet = new CSSStyleSheet();\n stylesheet.replaceSync(style);\n if (supportsMutableAdoptedStyleSheets) {\n styleContainerNode.adoptedStyleSheets.unshift(stylesheet);\n } else {\n styleContainerNode.adoptedStyleSheets = [stylesheet, ...styleContainerNode.adoptedStyleSheets];\n }\n } else {\n const existingStyleContainer = styleContainerNode.querySelector(\"style\");\n if (existingStyleContainer) {\n existingStyleContainer.innerHTML = style + existingStyleContainer.innerHTML;\n } else {\n styleContainerNode.prepend(styleElm);\n }\n }\n } else {\n styleContainerNode.append(styleElm);\n }\n }\n if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n styleContainerNode.insertBefore(styleElm, null);\n }\n }\n if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n styleElm.innerHTML += SLOT_FB_CSS;\n }\n if (appliedStyles) {\n appliedStyles.add(scopeId2);\n }\n }\n } else if (!styleContainerNode.adoptedStyleSheets.includes(style)) {\n if (supportsMutableAdoptedStyleSheets) {\n styleContainerNode.adoptedStyleSheets.push(style);\n } else {\n styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];\n }\n }\n }\n return scopeId2;\n};\nvar attachStyles = (hostRef) => {\n const cmpMeta = hostRef.$cmpMeta$;\n const elm = hostRef.$hostElement$;\n const flags = cmpMeta.$flags$;\n const endAttachStyles = createTime(\"attachStyles\", cmpMeta.$tagName$);\n const scopeId2 = addStyle(\n elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(),\n cmpMeta);\n if (flags & 10 /* needsScopedEncapsulation */) {\n elm[\"s-sc\"] = scopeId2;\n elm.classList.add(scopeId2 + \"-h\");\n }\n endAttachStyles();\n};\nvar getScopeId = (cmp, mode) => \"sc-\" + (cmp.$tagName$);\nvar h = (nodeName, vnodeData, ...children) => {\n let child = null;\n let key = null;\n let simple = false;\n let lastSimple = false;\n const vNodeChildren = [];\n const walk = (c) => {\n for (let i2 = 0; i2 < c.length; i2++) {\n child = c[i2];\n if (Array.isArray(child)) {\n walk(child);\n } else if (child != null && typeof child !== \"boolean\") {\n if (simple = typeof nodeName !== \"function\" && !isComplexType(child)) {\n child = String(child);\n }\n if (simple && lastSimple) {\n vNodeChildren[vNodeChildren.length - 1].$text$ += child;\n } else {\n vNodeChildren.push(simple ? newVNode(null, child) : child);\n }\n lastSimple = simple;\n }\n }\n };\n walk(children);\n if (vnodeData) {\n if (vnodeData.key) {\n key = vnodeData.key;\n }\n {\n const classData = vnodeData.className || vnodeData.class;\n if (classData) {\n vnodeData.class = typeof classData !== \"object\" ? classData : Object.keys(classData).filter((k) => classData[k]).join(\" \");\n }\n }\n }\n const vnode = newVNode(nodeName, null);\n vnode.$attrs$ = vnodeData;\n if (vNodeChildren.length > 0) {\n vnode.$children$ = vNodeChildren;\n }\n {\n vnode.$key$ = key;\n }\n return vnode;\n};\nvar newVNode = (tag, text) => {\n const vnode = {\n $flags$: 0,\n $tag$: tag,\n $text$: text,\n $elm$: null,\n $children$: null\n };\n {\n vnode.$attrs$ = null;\n }\n {\n vnode.$key$ = null;\n }\n return vnode;\n};\nvar Host = {};\nvar isHost = (node) => node && node.$tag$ === Host;\nvar createSupportsRuleRe = (selector) => {\n const safeSelector2 = escapeRegExpSpecialCharacters(selector);\n return new RegExp(\n // First capture group: match any context before the selector that's not inside @supports selector()\n // Using negative lookahead to avoid matching inside @supports selector(...) condition\n `(^|[^@]|@(?!supports\\\\s+selector\\\\s*\\\\([^{]*?${safeSelector2}))(${safeSelector2}\\\\b)`,\n \"g\"\n );\n};\ncreateSupportsRuleRe(\"::slotted\");\ncreateSupportsRuleRe(\":host\");\ncreateSupportsRuleRe(\":host-context\");\nvar parsePropertyValue = (propValue, propType, isFormAssociated) => {\n if (typeof propValue === \"string\" && (propType & 16 /* Unknown */ || propType & 8 /* Any */) && (propValue.startsWith(\"{\") && propValue.endsWith(\"}\") || propValue.startsWith(\"[\") && propValue.endsWith(\"]\"))) {\n try {\n return JSON.parse(propValue);\n } catch (e) {\n }\n }\n if (propValue != null && !isComplexType(propValue)) {\n return propValue;\n }\n return propValue;\n};\nvar getElement = (ref) => {\n var _a;\n return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;\n};\nvar emitEvent = (elm, name, opts) => {\n const ev = plt.ce(name, opts);\n elm.dispatchEvent(ev);\n return ev;\n};\nvar setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRender) => {\n if (oldValue === newValue) {\n return;\n }\n let isProp = isMemberInElement(elm, memberName);\n let ln = memberName.toLowerCase();\n if (memberName === \"class\") {\n const classList = elm.classList;\n const oldClasses = parseClassList(oldValue);\n let newClasses = parseClassList(newValue);\n {\n classList.remove(...oldClasses.filter((c) => c && !newClasses.includes(c)));\n classList.add(...newClasses.filter((c) => c && !oldClasses.includes(c)));\n }\n } else if (memberName === \"key\") ; else if ((!isProp ) && memberName[0] === \"o\" && memberName[1] === \"n\") {\n if (memberName[2] === \"-\") {\n memberName = memberName.slice(3);\n } else if (isMemberInElement(win, ln)) {\n memberName = ln.slice(2);\n } else {\n memberName = ln[2] + memberName.slice(3);\n }\n if (oldValue || newValue) {\n const capture = memberName.endsWith(CAPTURE_EVENT_SUFFIX);\n memberName = memberName.replace(CAPTURE_EVENT_REGEX, \"\");\n if (oldValue) {\n plt.rel(elm, memberName, oldValue, capture);\n }\n if (newValue) {\n plt.ael(elm, memberName, newValue, capture);\n }\n }\n } else {\n const isComplex = isComplexType(newValue);\n if ((isProp || isComplex && newValue !== null) && !isSvg) {\n try {\n if (!elm.tagName.includes(\"-\")) {\n const n = newValue == null ? \"\" : newValue;\n if (memberName === \"list\") {\n isProp = false;\n } else if (oldValue == null || elm[memberName] != n) {\n if (typeof elm.__lookupSetter__(memberName) === \"function\") {\n elm[memberName] = n;\n } else {\n elm.setAttribute(memberName, n);\n }\n }\n } else if (elm[memberName] !== newValue) {\n elm[memberName] = newValue;\n }\n } catch (e) {\n }\n }\n if (newValue == null || newValue === false) {\n if (newValue !== false || elm.getAttribute(memberName) === \"\") {\n {\n elm.removeAttribute(memberName);\n }\n }\n } else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex && elm.nodeType === 1 /* ElementNode */) {\n newValue = newValue === true ? \"\" : newValue;\n {\n elm.setAttribute(memberName, newValue);\n }\n }\n }\n};\nvar parseClassListRegex = /\\s/;\nvar parseClassList = (value) => {\n if (typeof value === \"object\" && value && \"baseVal\" in value) {\n value = value.baseVal;\n }\n if (!value || typeof value !== \"string\") {\n return [];\n }\n return value.split(parseClassListRegex);\n};\nvar CAPTURE_EVENT_SUFFIX = \"Capture\";\nvar CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + \"$\");\n\n// src/runtime/vdom/update-element.ts\nvar updateElement = (oldVnode, newVnode, isSvgMode2, isInitialRender) => {\n const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host ? newVnode.$elm$.host : newVnode.$elm$;\n const oldVnodeAttrs = oldVnode && oldVnode.$attrs$ || {};\n const newVnodeAttrs = newVnode.$attrs$ || {};\n {\n for (const memberName of sortedAttrNames(Object.keys(oldVnodeAttrs))) {\n if (!(memberName in newVnodeAttrs)) {\n setAccessor(\n elm,\n memberName,\n oldVnodeAttrs[memberName],\n void 0,\n isSvgMode2,\n newVnode.$flags$);\n }\n }\n }\n for (const memberName of sortedAttrNames(Object.keys(newVnodeAttrs))) {\n setAccessor(\n elm,\n memberName,\n oldVnodeAttrs[memberName],\n newVnodeAttrs[memberName],\n isSvgMode2,\n newVnode.$flags$);\n }\n};\nfunction sortedAttrNames(attrNames) {\n return attrNames.includes(\"ref\") ? (\n // we need to sort these to ensure that `'ref'` is the last attr\n [...attrNames.filter((attr) => attr !== \"ref\"), \"ref\"]\n ) : (\n // no need to sort, return the original array\n attrNames\n );\n}\nvar hostTagName;\nvar isSvgMode = false;\nvar createElm = (oldParentVNode, newParentVNode, childIndex) => {\n const newVNode2 = newParentVNode.$children$[childIndex];\n let i2 = 0;\n let elm;\n let childNode;\n if (newVNode2.$text$ !== null) {\n elm = newVNode2.$elm$ = win.document.createTextNode(newVNode2.$text$);\n } else {\n if (!isSvgMode) {\n isSvgMode = newVNode2.$tag$ === \"svg\";\n }\n if (!win.document) {\n throw new Error(\n \"You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.\"\n );\n }\n elm = newVNode2.$elm$ = win.document.createElementNS(\n isSvgMode ? SVG_NS : HTML_NS,\n newVNode2.$tag$\n ) ;\n if (isSvgMode && newVNode2.$tag$ === \"foreignObject\") {\n isSvgMode = false;\n }\n {\n updateElement(null, newVNode2, isSvgMode);\n }\n if (newVNode2.$children$) {\n for (i2 = 0; i2 < newVNode2.$children$.length; ++i2) {\n childNode = createElm(oldParentVNode, newVNode2, i2);\n if (childNode) {\n elm.appendChild(childNode);\n }\n }\n }\n {\n if (newVNode2.$tag$ === \"svg\") {\n isSvgMode = false;\n } else if (elm.tagName === \"foreignObject\") {\n isSvgMode = true;\n }\n }\n }\n elm[\"s-hn\"] = hostTagName;\n return elm;\n};\nvar addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {\n let containerElm = parentElm;\n let childNode;\n if (containerElm.shadowRoot && containerElm.tagName === hostTagName) {\n containerElm = containerElm.shadowRoot;\n }\n for (; startIdx <= endIdx; ++startIdx) {\n if (vnodes[startIdx]) {\n childNode = createElm(null, parentVNode, startIdx);\n if (childNode) {\n vnodes[startIdx].$elm$ = childNode;\n insertBefore(containerElm, childNode, before);\n }\n }\n }\n};\nvar removeVnodes = (vnodes, startIdx, endIdx) => {\n for (let index = startIdx; index <= endIdx; ++index) {\n const vnode = vnodes[index];\n if (vnode) {\n const elm = vnode.$elm$;\n if (elm) {\n elm.remove();\n }\n }\n }\n};\nvar updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = false) => {\n let oldStartIdx = 0;\n let newStartIdx = 0;\n let idxInOld = 0;\n let i2 = 0;\n let oldEndIdx = oldCh.length - 1;\n let oldStartVnode = oldCh[0];\n let oldEndVnode = oldCh[oldEndIdx];\n let newEndIdx = newCh.length - 1;\n let newStartVnode = newCh[0];\n let newEndVnode = newCh[newEndIdx];\n let node;\n let elmToMove;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n } else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n } else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldStartVnode, newStartVnode, isInitialRender)) {\n patch(oldStartVnode, newStartVnode, isInitialRender);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (isSameVnode(oldEndVnode, newEndVnode, isInitialRender)) {\n patch(oldEndVnode, newEndVnode, isInitialRender);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {\n patch(oldStartVnode, newEndVnode, isInitialRender);\n insertBefore(parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {\n patch(oldEndVnode, newStartVnode, isInitialRender);\n insertBefore(parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n idxInOld = -1;\n {\n for (i2 = oldStartIdx; i2 <= oldEndIdx; ++i2) {\n if (oldCh[i2] && oldCh[i2].$key$ !== null && oldCh[i2].$key$ === newStartVnode.$key$) {\n idxInOld = i2;\n break;\n }\n }\n }\n if (idxInOld >= 0) {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.$tag$ !== newStartVnode.$tag$) {\n node = createElm(oldCh && oldCh[newStartIdx], newVNode2, idxInOld);\n } else {\n patch(elmToMove, newStartVnode, isInitialRender);\n oldCh[idxInOld] = void 0;\n node = elmToMove.$elm$;\n }\n newStartVnode = newCh[++newStartIdx];\n } else {\n node = createElm(oldCh && oldCh[newStartIdx], newVNode2, newStartIdx);\n newStartVnode = newCh[++newStartIdx];\n }\n if (node) {\n {\n insertBefore(oldStartVnode.$elm$.parentNode, node, oldStartVnode.$elm$);\n }\n }\n }\n }\n if (oldStartIdx > oldEndIdx) {\n addVnodes(\n parentElm,\n newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$,\n newVNode2,\n newCh,\n newStartIdx,\n newEndIdx\n );\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n};\nvar isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {\n if (leftVNode.$tag$ === rightVNode.$tag$) {\n if (!isInitialRender) {\n return leftVNode.$key$ === rightVNode.$key$;\n }\n if (isInitialRender && !leftVNode.$key$ && rightVNode.$key$) {\n leftVNode.$key$ = rightVNode.$key$;\n }\n return true;\n }\n return false;\n};\nvar patch = (oldVNode, newVNode2, isInitialRender = false) => {\n const elm = newVNode2.$elm$ = oldVNode.$elm$;\n const oldChildren = oldVNode.$children$;\n const newChildren = newVNode2.$children$;\n const tag = newVNode2.$tag$;\n const text = newVNode2.$text$;\n if (text === null) {\n {\n isSvgMode = tag === \"svg\" ? true : tag === \"foreignObject\" ? false : isSvgMode;\n }\n {\n updateElement(oldVNode, newVNode2, isSvgMode);\n }\n if (oldChildren !== null && newChildren !== null) {\n updateChildren(elm, oldChildren, newVNode2, newChildren, isInitialRender);\n } else if (newChildren !== null) {\n if (oldVNode.$text$ !== null) {\n elm.textContent = \"\";\n }\n addVnodes(elm, null, newVNode2, newChildren, 0, newChildren.length - 1);\n } else if (\n // don't do this on initial render as it can cause non-hydrated content to be removed\n !isInitialRender && BUILD.updatable && oldChildren !== null\n ) {\n removeVnodes(oldChildren, 0, oldChildren.length - 1);\n } else ;\n if (isSvgMode && tag === \"svg\") {\n isSvgMode = false;\n }\n } else if (oldVNode.$text$ !== text) {\n elm.data = text;\n }\n};\nvar insertBefore = (parent, newNode, reference) => {\n {\n return parent == null ? void 0 : parent.insertBefore(newNode, reference);\n }\n};\nvar renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {\n const hostElm = hostRef.$hostElement$;\n const oldVNode = hostRef.$vnode$ || newVNode(null, null);\n const isHostElement = isHost(renderFnResults);\n const rootVnode = isHostElement ? renderFnResults : h(null, null, renderFnResults);\n hostTagName = hostElm.tagName;\n if (isInitialLoad && rootVnode.$attrs$) {\n for (const key of Object.keys(rootVnode.$attrs$)) {\n if (hostElm.hasAttribute(key) && ![\"key\", \"ref\", \"style\", \"class\"].includes(key)) {\n rootVnode.$attrs$[key] = hostElm[key];\n }\n }\n }\n rootVnode.$tag$ = null;\n rootVnode.$flags$ |= 4 /* isHost */;\n hostRef.$vnode$ = rootVnode;\n rootVnode.$elm$ = oldVNode.$elm$ = hostElm.shadowRoot || hostElm ;\n patch(oldVNode, rootVnode, isInitialLoad);\n};\n\n// src/runtime/update-component.ts\nvar attachToAncestor = (hostRef, ancestorComponent) => {\n if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent[\"s-p\"]) {\n const index = ancestorComponent[\"s-p\"].push(\n new Promise(\n (r) => hostRef.$onRenderResolve$ = () => {\n ancestorComponent[\"s-p\"].splice(index - 1, 1);\n r();\n }\n )\n );\n }\n};\nvar scheduleUpdate = (hostRef, isInitialLoad) => {\n {\n hostRef.$flags$ |= 16 /* isQueuedForUpdate */;\n }\n if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {\n hostRef.$flags$ |= 512 /* needsRerender */;\n return;\n }\n attachToAncestor(hostRef, hostRef.$ancestorComponent$);\n const dispatch = () => dispatchHooks(hostRef, isInitialLoad);\n if (isInitialLoad) {\n queueMicrotask(() => {\n dispatch();\n });\n return;\n }\n return writeTask(dispatch) ;\n};\nvar dispatchHooks = (hostRef, isInitialLoad) => {\n const elm = hostRef.$hostElement$;\n const endSchedule = createTime(\"scheduleUpdate\", hostRef.$cmpMeta$.$tagName$);\n const instance = hostRef.$lazyInstance$ ;\n if (!instance) {\n throw new Error(\n `Can't render component <${elm.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \\`externalRuntime: true\\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`\n );\n }\n let maybePromise;\n if (isInitialLoad) {\n maybePromise = safeCall(instance, \"componentWillLoad\", void 0, elm);\n } else {\n maybePromise = safeCall(instance, \"componentWillUpdate\", void 0, elm);\n }\n maybePromise = enqueue(maybePromise, () => safeCall(instance, \"componentWillRender\", void 0, elm));\n endSchedule();\n return enqueue(maybePromise, () => updateComponent(hostRef, instance, isInitialLoad));\n};\nvar enqueue = (maybePromise, fn) => isPromisey(maybePromise) ? maybePromise.then(fn).catch((err2) => {\n console.error(err2);\n fn();\n}) : fn();\nvar isPromisey = (maybePromise) => maybePromise instanceof Promise || maybePromise && maybePromise.then && typeof maybePromise.then === \"function\";\nvar updateComponent = async (hostRef, instance, isInitialLoad) => {\n var _a;\n const elm = hostRef.$hostElement$;\n const endUpdate = createTime(\"update\", hostRef.$cmpMeta$.$tagName$);\n const rc = elm[\"s-rc\"];\n if (isInitialLoad) {\n attachStyles(hostRef);\n }\n const endRender = createTime(\"render\", hostRef.$cmpMeta$.$tagName$);\n {\n callRender(hostRef, instance, elm, isInitialLoad);\n }\n if (rc) {\n rc.map((cb) => cb());\n elm[\"s-rc\"] = void 0;\n }\n endRender();\n endUpdate();\n {\n const childrenPromises = (_a = elm[\"s-p\"]) != null ? _a : [];\n const postUpdate = () => postUpdateComponent(hostRef);\n if (childrenPromises.length === 0) {\n postUpdate();\n } else {\n Promise.all(childrenPromises).then(postUpdate);\n hostRef.$flags$ |= 4 /* isWaitingForChildren */;\n childrenPromises.length = 0;\n }\n }\n};\nvar callRender = (hostRef, instance, elm, isInitialLoad) => {\n try {\n instance = instance.render() ;\n {\n hostRef.$flags$ &= -17 /* isQueuedForUpdate */;\n }\n {\n hostRef.$flags$ |= 2 /* hasRendered */;\n }\n {\n {\n {\n renderVdom(hostRef, instance, isInitialLoad);\n }\n }\n }\n } catch (e) {\n consoleError(e, hostRef.$hostElement$);\n }\n return null;\n};\nvar postUpdateComponent = (hostRef) => {\n const tagName = hostRef.$cmpMeta$.$tagName$;\n const elm = hostRef.$hostElement$;\n const endPostUpdate = createTime(\"postUpdate\", tagName);\n const instance = hostRef.$lazyInstance$ ;\n const ancestorComponent = hostRef.$ancestorComponent$;\n safeCall(instance, \"componentDidRender\", void 0, elm);\n if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {\n hostRef.$flags$ |= 64 /* hasLoadedComponent */;\n {\n addHydratedFlag(elm);\n }\n safeCall(instance, \"componentDidLoad\", void 0, elm);\n endPostUpdate();\n {\n hostRef.$onReadyResolve$(elm);\n if (!ancestorComponent) {\n appDidLoad();\n }\n }\n } else {\n safeCall(instance, \"componentDidUpdate\", void 0, elm);\n endPostUpdate();\n }\n {\n if (hostRef.$onRenderResolve$) {\n hostRef.$onRenderResolve$();\n hostRef.$onRenderResolve$ = void 0;\n }\n if (hostRef.$flags$ & 512 /* needsRerender */) {\n nextTick(() => scheduleUpdate(hostRef, false));\n }\n hostRef.$flags$ &= -517;\n }\n};\nvar appDidLoad = (who) => {\n nextTick(() => emitEvent(win, \"appload\", { detail: { namespace: NAMESPACE } }));\n};\nvar safeCall = (instance, method, arg, elm) => {\n if (instance && instance[method]) {\n try {\n return instance[method](arg);\n } catch (e) {\n consoleError(e, elm);\n }\n }\n return void 0;\n};\nvar addHydratedFlag = (elm) => {\n var _a;\n return elm.classList.add((_a = BUILD.hydratedSelectorName) != null ? _a : \"hydrated\") ;\n};\n\n// src/runtime/set-value.ts\nvar getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);\nvar setValue = (ref, propName, newVal, cmpMeta) => {\n const hostRef = getHostRef(ref);\n if (!hostRef) {\n return;\n }\n if (!hostRef) {\n throw new Error(\n `Couldn't find host element for \"${cmpMeta.$tagName$}\" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`\n );\n }\n const oldVal = hostRef.$instanceValues$.get(propName);\n const flags = hostRef.$flags$;\n const instance = hostRef.$lazyInstance$ ;\n newVal = parsePropertyValue(\n newVal,\n cmpMeta.$members$[propName][0]);\n const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);\n const didValueChange = newVal !== oldVal && !areBothNaN;\n if ((!(flags & 8 /* isConstructingInstance */) || oldVal === void 0) && didValueChange) {\n hostRef.$instanceValues$.set(propName, newVal);\n if (instance) {\n if ((flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {\n if (instance.componentShouldUpdate) {\n if (instance.componentShouldUpdate(newVal, oldVal, propName) === false) {\n return;\n }\n }\n scheduleUpdate(hostRef, false);\n }\n }\n }\n};\n\n// src/runtime/proxy-component.ts\nvar proxyComponent = (Cstr, cmpMeta, flags) => {\n var _a, _b;\n const prototype = Cstr.prototype;\n if (cmpMeta.$members$ || BUILD.watchCallback) {\n const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});\n members.map(([memberName, [memberFlags]]) => {\n if ((memberFlags & 31 /* Prop */ || (flags & 2 /* proxyState */) && memberFlags & 32 /* State */)) {\n const { get: origGetter, set: origSetter } = Object.getOwnPropertyDescriptor(prototype, memberName) || {};\n if (origGetter) cmpMeta.$members$[memberName][0] |= 2048 /* Getter */;\n if (origSetter) cmpMeta.$members$[memberName][0] |= 4096 /* Setter */;\n if (flags & 1 /* isElementConstructor */ || !origGetter) {\n Object.defineProperty(prototype, memberName, {\n get() {\n {\n if ((cmpMeta.$members$[memberName][0] & 2048 /* Getter */) === 0) {\n return getValue(this, memberName);\n }\n const ref = getHostRef(this);\n const instance = ref ? ref.$lazyInstance$ : prototype;\n if (!instance) return;\n return instance[memberName];\n }\n },\n configurable: true,\n enumerable: true\n });\n }\n Object.defineProperty(prototype, memberName, {\n set(newValue) {\n const ref = getHostRef(this);\n if (!ref) {\n return;\n }\n if (origSetter) {\n const currentValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];\n if (typeof currentValue === \"undefined\" && ref.$instanceValues$.get(memberName)) {\n newValue = ref.$instanceValues$.get(memberName);\n } else if (!ref.$instanceValues$.get(memberName) && currentValue) {\n ref.$instanceValues$.set(memberName, currentValue);\n }\n origSetter.apply(this, [\n parsePropertyValue(\n newValue,\n memberFlags)\n ]);\n newValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];\n setValue(this, memberName, newValue, cmpMeta);\n return;\n }\n {\n if ((flags & 1 /* isElementConstructor */) === 0 || (cmpMeta.$members$[memberName][0] & 4096 /* Setter */) === 0) {\n setValue(this, memberName, newValue, cmpMeta);\n if (flags & 1 /* isElementConstructor */ && !ref.$lazyInstance$) {\n ref.$onReadyPromise$.then(() => {\n if (cmpMeta.$members$[memberName][0] & 4096 /* Setter */ && ref.$lazyInstance$[memberName] !== ref.$instanceValues$.get(memberName)) {\n ref.$lazyInstance$[memberName] = newValue;\n }\n });\n }\n return;\n }\n const setterSetVal = () => {\n const currentValue = ref.$lazyInstance$[memberName];\n if (!ref.$instanceValues$.get(memberName) && currentValue) {\n ref.$instanceValues$.set(memberName, currentValue);\n }\n ref.$lazyInstance$[memberName] = parsePropertyValue(\n newValue,\n memberFlags);\n setValue(this, memberName, ref.$lazyInstance$[memberName], cmpMeta);\n };\n if (ref.$lazyInstance$) {\n setterSetVal();\n } else {\n ref.$onReadyPromise$.then(() => setterSetVal());\n }\n }\n }\n });\n }\n });\n if ((flags & 1 /* isElementConstructor */)) {\n const attrNameToPropName = /* @__PURE__ */ new Map();\n prototype.attributeChangedCallback = function(attrName, oldValue, newValue) {\n plt.jmp(() => {\n var _a2;\n const propName = attrNameToPropName.get(attrName);\n if (this.hasOwnProperty(propName) && BUILD.lazyLoad) {\n newValue = this[propName];\n delete this[propName];\n } else if (prototype.hasOwnProperty(propName) && typeof this[propName] === \"number\" && // cast type to number to avoid TS compiler issues\n this[propName] == newValue) {\n return;\n } else if (propName == null) {\n const hostRef = getHostRef(this);\n const flags2 = hostRef == null ? void 0 : hostRef.$flags$;\n if (hostRef && flags2 && !(flags2 & 8 /* isConstructingInstance */) && flags2 & 128 /* isWatchReady */ && newValue !== oldValue) {\n const instance = hostRef.$lazyInstance$ ;\n const entry = (_a2 = cmpMeta.$watchers$) == null ? void 0 : _a2[attrName];\n entry == null ? void 0 : entry.forEach((callbackName) => {\n if (instance[callbackName] != null) {\n instance[callbackName].call(instance, newValue, oldValue, attrName);\n }\n });\n }\n return;\n }\n const propDesc = Object.getOwnPropertyDescriptor(prototype, propName);\n newValue = newValue === null && typeof this[propName] === \"boolean\" ? false : newValue;\n if (newValue !== this[propName] && (!propDesc.get || !!propDesc.set)) {\n this[propName] = newValue;\n }\n });\n };\n Cstr.observedAttributes = Array.from(\n /* @__PURE__ */ new Set([\n ...Object.keys((_b = cmpMeta.$watchers$) != null ? _b : {}),\n ...members.filter(([_, m]) => m[0] & 31 /* HasAttribute */).map(([propName, m]) => {\n const attrName = m[1] || propName;\n attrNameToPropName.set(attrName, propName);\n return attrName;\n })\n ])\n );\n }\n }\n return Cstr;\n};\n\n// src/runtime/initialize-component.ts\nvar initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {\n let Cstr;\n if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {\n hostRef.$flags$ |= 32 /* hasInitializedComponent */;\n const bundleId = cmpMeta.$lazyBundleId$;\n if (bundleId) {\n const CstrImport = loadModule(cmpMeta, hostRef);\n if (CstrImport && \"then\" in CstrImport) {\n const endLoad = uniqueTime();\n Cstr = await CstrImport;\n endLoad();\n } else {\n Cstr = CstrImport;\n }\n if (!Cstr) {\n throw new Error(`Constructor for \"${cmpMeta.$tagName$}#${hostRef.$modeName$}\" was not found`);\n }\n if (!Cstr.isProxied) {\n proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);\n Cstr.isProxied = true;\n }\n const endNewInstance = createTime(\"createInstance\", cmpMeta.$tagName$);\n {\n hostRef.$flags$ |= 8 /* isConstructingInstance */;\n }\n try {\n new Cstr(hostRef);\n } catch (e) {\n consoleError(e, elm);\n }\n {\n hostRef.$flags$ &= -9 /* isConstructingInstance */;\n }\n endNewInstance();\n fireConnectedCallback(hostRef.$lazyInstance$, elm);\n } else {\n Cstr = elm.constructor;\n const cmpTag = elm.localName;\n customElements.whenDefined(cmpTag).then(() => hostRef.$flags$ |= 128 /* isWatchReady */);\n }\n if (Cstr && Cstr.style) {\n let style;\n if (typeof Cstr.style === \"string\") {\n style = Cstr.style;\n }\n const scopeId2 = getScopeId(cmpMeta);\n if (!styles.has(scopeId2)) {\n const endRegisterStyles = createTime(\"registerStyles\", cmpMeta.$tagName$);\n registerStyle(scopeId2, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));\n endRegisterStyles();\n }\n }\n }\n const ancestorComponent = hostRef.$ancestorComponent$;\n const schedule = () => scheduleUpdate(hostRef, true);\n if (ancestorComponent && ancestorComponent[\"s-rc\"]) {\n ancestorComponent[\"s-rc\"].push(schedule);\n } else {\n schedule();\n }\n};\nvar fireConnectedCallback = (instance, elm) => {\n {\n safeCall(instance, \"connectedCallback\", void 0, elm);\n }\n};\n\n// src/runtime/connected-callback.ts\nvar connectedCallback = (elm) => {\n if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n if (!hostRef) {\n return;\n }\n const cmpMeta = hostRef.$cmpMeta$;\n const endConnected = createTime(\"connectedCallback\", cmpMeta.$tagName$);\n if (!(hostRef.$flags$ & 1 /* hasConnected */)) {\n hostRef.$flags$ |= 1 /* hasConnected */;\n {\n let ancestorComponent = elm;\n while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {\n if (ancestorComponent[\"s-p\"]) {\n attachToAncestor(hostRef, hostRef.$ancestorComponent$ = ancestorComponent);\n break;\n }\n }\n }\n if (cmpMeta.$members$) {\n Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {\n if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {\n const value = elm[memberName];\n delete elm[memberName];\n elm[memberName] = value;\n }\n });\n }\n {\n initializeComponent(elm, hostRef, cmpMeta);\n }\n } else {\n if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n fireConnectedCallback(hostRef.$lazyInstance$, elm);\n } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$, elm));\n }\n }\n endConnected();\n }\n};\nvar disconnectInstance = (instance, elm) => {\n {\n safeCall(instance, \"disconnectedCallback\", void 0, elm || instance);\n }\n};\nvar disconnectedCallback = async (elm) => {\n if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {\n const hostRef = getHostRef(elm);\n if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {\n disconnectInstance(hostRef.$lazyInstance$, elm);\n } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {\n hostRef.$onReadyPromise$.then(() => disconnectInstance(hostRef.$lazyInstance$, elm));\n }\n }\n if (rootAppliedStyles.has(elm)) {\n rootAppliedStyles.delete(elm);\n }\n if (elm.shadowRoot && rootAppliedStyles.has(elm.shadowRoot)) {\n rootAppliedStyles.delete(elm.shadowRoot);\n }\n};\n\n// src/runtime/bootstrap-lazy.ts\nvar bootstrapLazy = (lazyBundles, options = {}) => {\n var _a;\n if (!win.document) {\n console.warn(\"Stencil: No document found. Skipping bootstrapping lazy components.\");\n return;\n }\n const endBootstrap = createTime();\n const cmpTags = [];\n const exclude = options.exclude || [];\n const customElements2 = win.customElements;\n const head = win.document.head;\n const metaCharset = /* @__PURE__ */ head.querySelector(\"meta[charset]\");\n const dataStyles = /* @__PURE__ */ win.document.createElement(\"style\");\n const deferredConnectedCallbacks = [];\n let appLoadFallback;\n let isBootstrapping = true;\n Object.assign(plt, options);\n plt.$resourcesUrl$ = new URL(options.resourcesUrl || \"./\", win.document.baseURI).href;\n let hasSlotRelocation = false;\n lazyBundles.map((lazyBundle) => {\n lazyBundle[1].map((compactMeta) => {\n const cmpMeta = {\n $flags$: compactMeta[0],\n $tagName$: compactMeta[1],\n $members$: compactMeta[2],\n $listeners$: compactMeta[3]\n };\n if (cmpMeta.$flags$ & 4 /* hasSlotRelocation */) {\n hasSlotRelocation = true;\n }\n {\n cmpMeta.$members$ = compactMeta[2];\n }\n const tagName = cmpMeta.$tagName$;\n const HostElement = class extends HTMLElement {\n // StencilLazyHost\n constructor(self) {\n super(self);\n this.hasRegisteredEventListeners = false;\n self = this;\n registerHost(self, cmpMeta);\n if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {\n {\n if (!self.shadowRoot) {\n createShadowRoot.call(self, cmpMeta);\n } else {\n if (self.shadowRoot.mode !== \"open\") {\n throw new Error(\n `Unable to re-use existing shadow root for ${cmpMeta.$tagName$}! Mode is set to ${self.shadowRoot.mode} but Stencil only supports open shadow roots.`\n );\n }\n }\n }\n }\n }\n connectedCallback() {\n const hostRef = getHostRef(this);\n if (!hostRef) {\n return;\n }\n if (!this.hasRegisteredEventListeners) {\n this.hasRegisteredEventListeners = true;\n }\n if (appLoadFallback) {\n clearTimeout(appLoadFallback);\n appLoadFallback = null;\n }\n if (isBootstrapping) {\n deferredConnectedCallbacks.push(this);\n } else {\n plt.jmp(() => connectedCallback(this));\n }\n }\n disconnectedCallback() {\n plt.jmp(() => disconnectedCallback(this));\n plt.raf(() => {\n var _a3;\n const hostRef = getHostRef(this);\n if (!hostRef) {\n return;\n }\n const i2 = deferredConnectedCallbacks.findIndex((host) => host === this);\n if (i2 > -1) {\n deferredConnectedCallbacks.splice(i2, 1);\n }\n if (((_a3 = hostRef == null ? void 0 : hostRef.$vnode$) == null ? void 0 : _a3.$elm$) instanceof Node && !hostRef.$vnode$.$elm$.isConnected) {\n delete hostRef.$vnode$.$elm$;\n }\n });\n }\n componentOnReady() {\n var _a3;\n return (_a3 = getHostRef(this)) == null ? void 0 : _a3.$onReadyPromise$;\n }\n };\n cmpMeta.$lazyBundleId$ = lazyBundle[0];\n if (!exclude.includes(tagName) && !customElements2.get(tagName)) {\n cmpTags.push(tagName);\n customElements2.define(\n tagName,\n proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */)\n );\n }\n });\n });\n if (cmpTags.length > 0) {\n if (hasSlotRelocation) {\n dataStyles.textContent += SLOT_FB_CSS;\n }\n {\n dataStyles.textContent += cmpTags.sort() + HYDRATED_CSS;\n }\n if (dataStyles.innerHTML.length) {\n dataStyles.setAttribute(\"data-styles\", \"\");\n const nonce = (_a = plt.$nonce$) != null ? _a : queryNonceMetaTagContent(win.document);\n if (nonce != null) {\n dataStyles.setAttribute(\"nonce\", nonce);\n }\n head.insertBefore(dataStyles, metaCharset ? metaCharset.nextSibling : head.firstChild);\n }\n }\n isBootstrapping = false;\n if (deferredConnectedCallbacks.length) {\n deferredConnectedCallbacks.map((host) => host.connectedCallback());\n } else {\n {\n plt.jmp(() => appLoadFallback = setTimeout(appDidLoad, 30));\n }\n }\n endBootstrap();\n};\n\n// src/runtime/nonce.ts\nvar setNonce = (nonce) => plt.$nonce$ = nonce;\n\nexport { bootstrapLazy as b, getElement as g, h, promiseResolve as p, registerInstance as r, setNonce as s };\n//# sourceMappingURL=index-BnFj5nlp.js.map\n\n//# sourceMappingURL=index-BnFj5nlp.js.map","const globalScripts = () => {};\n\nexport { globalScripts as g };\n//# sourceMappingURL=app-globals-DQuL1Twl.js.map\n\n//# sourceMappingURL=app-globals-DQuL1Twl.js.map","import { b as bootstrapLazy } from './index-BnFj5nlp.js';\nexport { s as setNonce } from './index-BnFj5nlp.js';\nimport { g as globalScripts } from './app-globals-DQuL1Twl.js';\n\nconst defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([[\"connect-modal\",[[257,\"connect-modal\",{\"defaultProviders\":[16,\"default-providers\"],\"installedProviders\":[16,\"installed-providers\"],\"callback\":[16],\"cancelCallback\":[16,\"cancel-callback\"]}]]]], options);\n};\n\nexport { defineCustomElements };\n//# sourceMappingURL=loader.js.map\n\n//# sourceMappingURL=loader.js.map","(function(){if(\"undefined\"!==typeof window&&void 0!==window.Reflect&&void 0!==window.customElements){var a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)};HTMLElement.prototype=a.prototype;HTMLElement.prototype.constructor=HTMLElement;Object.setPrototypeOf(HTMLElement,a)}})();\nexport * from '../dist/esm/loader.js';","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./misc\"), exports);\ntslib_1.__exportStar(require(\"./time\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = require(\"../constants\");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./delay\"), exports);\ntslib_1.__exportStar(require(\"./convert\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== \"undefined\") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === \"undefined\") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports.default = Watch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./watch\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\ntslib_1.__exportStar(require(\"./watch\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map","export class IEvents {\n}\n//# sourceMappingURL=events.js.map","import{EventEmitter as a}from\"events\";import{FIVE_SECONDS as o,toMiliseconds as l}from\"@walletconnect/time\";import{IEvents as v}from\"@walletconnect/events\";class n extends v{constructor(e){super()}}const s=o,r={pulse:\"heartbeat_pulse\"};class i extends n{constructor(e){super(e),this.events=new a,this.interval=s,this.interval=e?.interval||s}static async init(e){const t=new i(e);return await t.init(),t}async init(){await this.initialize()}stop(){clearInterval(this.intervalRef)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async initialize(){this.intervalRef=setInterval(()=>this.pulse(),l(this.interval))}pulse(){this.events.emit(r.pulse)}}export{r as HEARTBEAT_EVENTS,s as HEARTBEAT_INTERVAL,i as HeartBeat,n as IHeartBeat};\n//# sourceMappingURL=index.es.js.map\n","const suspectProtoRx = /\"(?:_|\\\\u0{2}5[Ff]){2}(?:p|\\\\u0{2}70)(?:r|\\\\u0{2}72)(?:o|\\\\u0{2}6[Ff])(?:t|\\\\u0{2}74)(?:o|\\\\u0{2}6[Ff])(?:_|\\\\u0{2}5[Ff]){2}\"\\s*:/;\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/;\nconst JsonSigRx = /^\\s*[\"[{]|^\\s*-?\\d{1,16}(\\.\\d{1,17})?([Ee][+-]?\\d+)?\\s*$/;\nfunction jsonParseTransform(key, value) {\n if (key === \"__proto__\" || key === \"constructor\" && value && typeof value === \"object\" && \"prototype\" in value) {\n warnKeyDropped(key);\n return;\n }\n return value;\n}\nfunction warnKeyDropped(key) {\n console.warn(`[destr] Dropping \"${key}\" key to prevent prototype pollution.`);\n}\nfunction destr(value, options = {}) {\n if (typeof value !== \"string\") {\n return value;\n }\n if (value[0] === '\"' && value[value.length - 1] === '\"' && value.indexOf(\"\\\\\") === -1) {\n return value.slice(1, -1);\n }\n const _value = value.trim();\n if (_value.length <= 9) {\n switch (_value.toLowerCase()) {\n case \"true\": {\n return true;\n }\n case \"false\": {\n return false;\n }\n case \"undefined\": {\n return void 0;\n }\n case \"null\": {\n return null;\n }\n case \"nan\": {\n return Number.NaN;\n }\n case \"infinity\": {\n return Number.POSITIVE_INFINITY;\n }\n case \"-infinity\": {\n return Number.NEGATIVE_INFINITY;\n }\n }\n }\n if (!JsonSigRx.test(value)) {\n if (options.strict) {\n throw new SyntaxError(\"[destr] Invalid JSON\");\n }\n return value;\n }\n try {\n if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) {\n if (options.strict) {\n throw new Error(\"[destr] Possible prototype pollution\");\n }\n return JSON.parse(value, jsonParseTransform);\n }\n return JSON.parse(value);\n } catch (error) {\n if (options.strict) {\n throw error;\n }\n return value;\n }\n}\nfunction safeDestr(value, options = {}) {\n return destr(value, { ...options, strict: true });\n}\n\nexport { destr as default, destr, safeDestr };\n","function wrapToPromise(value) {\n if (!value || typeof value.then !== \"function\") {\n return Promise.resolve(value);\n }\n return value;\n}\nfunction asyncCall(function_, ...arguments_) {\n try {\n return wrapToPromise(function_(...arguments_));\n } catch (error) {\n return Promise.reject(error);\n }\n}\nfunction isPrimitive(value) {\n const type = typeof value;\n return value === null || type !== \"object\" && type !== \"function\";\n}\nfunction isPureObject(value) {\n const proto = Object.getPrototypeOf(value);\n return !proto || proto.isPrototypeOf(Object);\n}\nfunction stringify(value) {\n if (isPrimitive(value)) {\n return String(value);\n }\n if (isPureObject(value) || Array.isArray(value)) {\n return JSON.stringify(value);\n }\n if (typeof value.toJSON === \"function\") {\n return stringify(value.toJSON());\n }\n throw new Error(\"[unstorage] Cannot stringify value!\");\n}\nconst BASE64_PREFIX = \"base64:\";\nfunction serializeRaw(value) {\n if (typeof value === \"string\") {\n return value;\n }\n return BASE64_PREFIX + base64Encode(value);\n}\nfunction deserializeRaw(value) {\n if (typeof value !== \"string\") {\n return value;\n }\n if (!value.startsWith(BASE64_PREFIX)) {\n return value;\n }\n return base64Decode(value.slice(BASE64_PREFIX.length));\n}\nfunction base64Decode(input) {\n if (globalThis.Buffer) {\n return Buffer.from(input, \"base64\");\n }\n return Uint8Array.from(\n globalThis.atob(input),\n (c) => c.codePointAt(0)\n );\n}\nfunction base64Encode(input) {\n if (globalThis.Buffer) {\n return Buffer.from(input).toString(\"base64\");\n }\n return globalThis.btoa(String.fromCodePoint(...input));\n}\n\nconst storageKeyProperties = [\n \"has\",\n \"hasItem\",\n \"get\",\n \"getItem\",\n \"getItemRaw\",\n \"set\",\n \"setItem\",\n \"setItemRaw\",\n \"del\",\n \"remove\",\n \"removeItem\",\n \"getMeta\",\n \"setMeta\",\n \"removeMeta\",\n \"getKeys\",\n \"clear\",\n \"mount\",\n \"unmount\"\n];\nfunction prefixStorage(storage, base) {\n base = normalizeBaseKey(base);\n if (!base) {\n return storage;\n }\n const nsStorage = { ...storage };\n for (const property of storageKeyProperties) {\n nsStorage[property] = (key = \"\", ...args) => (\n // @ts-ignore\n storage[property](base + key, ...args)\n );\n }\n nsStorage.getKeys = (key = \"\", ...arguments_) => storage.getKeys(base + key, ...arguments_).then((keys) => keys.map((key2) => key2.slice(base.length)));\n nsStorage.keys = nsStorage.getKeys;\n nsStorage.getItems = async (items, commonOptions) => {\n const prefixedItems = items.map(\n (item) => typeof item === \"string\" ? base + item : { ...item, key: base + item.key }\n );\n const results = await storage.getItems(prefixedItems, commonOptions);\n return results.map((entry) => ({\n key: entry.key.slice(base.length),\n value: entry.value\n }));\n };\n nsStorage.setItems = async (items, commonOptions) => {\n const prefixedItems = items.map((item) => ({\n key: base + item.key,\n value: item.value,\n options: item.options\n }));\n return storage.setItems(prefixedItems, commonOptions);\n };\n return nsStorage;\n}\nfunction normalizeKey(key) {\n if (!key) {\n return \"\";\n }\n return key.split(\"?\")[0]?.replace(/[/\\\\]/g, \":\").replace(/:+/g, \":\").replace(/^:|:$/g, \"\") || \"\";\n}\nfunction joinKeys(...keys) {\n return normalizeKey(keys.join(\":\"));\n}\nfunction normalizeBaseKey(base) {\n base = normalizeKey(base);\n return base ? base + \":\" : \"\";\n}\nfunction filterKeyByDepth(key, depth) {\n if (depth === void 0) {\n return true;\n }\n let substrCount = 0;\n let index = key.indexOf(\":\");\n while (index > -1) {\n substrCount++;\n index = key.indexOf(\":\", index + 1);\n }\n return substrCount <= depth;\n}\nfunction filterKeyByBase(key, base) {\n if (base) {\n return key.startsWith(base) && key[key.length - 1] !== \"$\";\n }\n return key[key.length - 1] !== \"$\";\n}\n\nexport { normalizeKey as a, asyncCall as b, filterKeyByBase as c, stringify as d, deserializeRaw as e, filterKeyByDepth as f, joinKeys as j, normalizeBaseKey as n, prefixStorage as p, serializeRaw as s };\n","import destr from 'destr';\nimport { n as normalizeBaseKey, a as normalizeKey, b as asyncCall, f as filterKeyByDepth, c as filterKeyByBase, s as serializeRaw, d as stringify, e as deserializeRaw, j as joinKeys } from './shared/unstorage.zVDD2mZo.mjs';\nexport { p as prefixStorage } from './shared/unstorage.zVDD2mZo.mjs';\n\nfunction defineDriver(factory) {\n return factory;\n}\n\nconst DRIVER_NAME = \"memory\";\nconst memory = defineDriver(() => {\n const data = /* @__PURE__ */ new Map();\n return {\n name: DRIVER_NAME,\n getInstance: () => data,\n hasItem(key) {\n return data.has(key);\n },\n getItem(key) {\n return data.get(key) ?? null;\n },\n getItemRaw(key) {\n return data.get(key) ?? null;\n },\n setItem(key, value) {\n data.set(key, value);\n },\n setItemRaw(key, value) {\n data.set(key, value);\n },\n removeItem(key) {\n data.delete(key);\n },\n getKeys() {\n return [...data.keys()];\n },\n clear() {\n data.clear();\n },\n dispose() {\n data.clear();\n }\n };\n});\n\nfunction createStorage(options = {}) {\n const context = {\n mounts: { \"\": options.driver || memory() },\n mountpoints: [\"\"],\n watching: false,\n watchListeners: [],\n unwatch: {}\n };\n const getMount = (key) => {\n for (const base of context.mountpoints) {\n if (key.startsWith(base)) {\n return {\n base,\n relativeKey: key.slice(base.length),\n driver: context.mounts[base]\n };\n }\n }\n return {\n base: \"\",\n relativeKey: key,\n driver: context.mounts[\"\"]\n };\n };\n const getMounts = (base, includeParent) => {\n return context.mountpoints.filter(\n (mountpoint) => mountpoint.startsWith(base) || includeParent && base.startsWith(mountpoint)\n ).map((mountpoint) => ({\n relativeBase: base.length > mountpoint.length ? base.slice(mountpoint.length) : void 0,\n mountpoint,\n driver: context.mounts[mountpoint]\n }));\n };\n const onChange = (event, key) => {\n if (!context.watching) {\n return;\n }\n key = normalizeKey(key);\n for (const listener of context.watchListeners) {\n listener(event, key);\n }\n };\n const startWatch = async () => {\n if (context.watching) {\n return;\n }\n context.watching = true;\n for (const mountpoint in context.mounts) {\n context.unwatch[mountpoint] = await watch(\n context.mounts[mountpoint],\n onChange,\n mountpoint\n );\n }\n };\n const stopWatch = async () => {\n if (!context.watching) {\n return;\n }\n for (const mountpoint in context.unwatch) {\n await context.unwatch[mountpoint]();\n }\n context.unwatch = {};\n context.watching = false;\n };\n const runBatch = (items, commonOptions, cb) => {\n const batches = /* @__PURE__ */ new Map();\n const getBatch = (mount) => {\n let batch = batches.get(mount.base);\n if (!batch) {\n batch = {\n driver: mount.driver,\n base: mount.base,\n items: []\n };\n batches.set(mount.base, batch);\n }\n return batch;\n };\n for (const item of items) {\n const isStringItem = typeof item === \"string\";\n const key = normalizeKey(isStringItem ? item : item.key);\n const value = isStringItem ? void 0 : item.value;\n const options2 = isStringItem || !item.options ? commonOptions : { ...commonOptions, ...item.options };\n const mount = getMount(key);\n getBatch(mount).items.push({\n key,\n value,\n relativeKey: mount.relativeKey,\n options: options2\n });\n }\n return Promise.all([...batches.values()].map((batch) => cb(batch))).then(\n (r) => r.flat()\n );\n };\n const storage = {\n // Item\n hasItem(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n return asyncCall(driver.hasItem, relativeKey, opts);\n },\n getItem(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n return asyncCall(driver.getItem, relativeKey, opts).then(\n (value) => destr(value)\n );\n },\n getItems(items, commonOptions = {}) {\n return runBatch(items, commonOptions, (batch) => {\n if (batch.driver.getItems) {\n return asyncCall(\n batch.driver.getItems,\n batch.items.map((item) => ({\n key: item.relativeKey,\n options: item.options\n })),\n commonOptions\n ).then(\n (r) => r.map((item) => ({\n key: joinKeys(batch.base, item.key),\n value: destr(item.value)\n }))\n );\n }\n return Promise.all(\n batch.items.map((item) => {\n return asyncCall(\n batch.driver.getItem,\n item.relativeKey,\n item.options\n ).then((value) => ({\n key: item.key,\n value: destr(value)\n }));\n })\n );\n });\n },\n getItemRaw(key, opts = {}) {\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (driver.getItemRaw) {\n return asyncCall(driver.getItemRaw, relativeKey, opts);\n }\n return asyncCall(driver.getItem, relativeKey, opts).then(\n (value) => deserializeRaw(value)\n );\n },\n async setItem(key, value, opts = {}) {\n if (value === void 0) {\n return storage.removeItem(key);\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (!driver.setItem) {\n return;\n }\n await asyncCall(driver.setItem, relativeKey, stringify(value), opts);\n if (!driver.watch) {\n onChange(\"update\", key);\n }\n },\n async setItems(items, commonOptions) {\n await runBatch(items, commonOptions, async (batch) => {\n if (batch.driver.setItems) {\n return asyncCall(\n batch.driver.setItems,\n batch.items.map((item) => ({\n key: item.relativeKey,\n value: stringify(item.value),\n options: item.options\n })),\n commonOptions\n );\n }\n if (!batch.driver.setItem) {\n return;\n }\n await Promise.all(\n batch.items.map((item) => {\n return asyncCall(\n batch.driver.setItem,\n item.relativeKey,\n stringify(item.value),\n item.options\n );\n })\n );\n });\n },\n async setItemRaw(key, value, opts = {}) {\n if (value === void 0) {\n return storage.removeItem(key, opts);\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (driver.setItemRaw) {\n await asyncCall(driver.setItemRaw, relativeKey, value, opts);\n } else if (driver.setItem) {\n await asyncCall(driver.setItem, relativeKey, serializeRaw(value), opts);\n } else {\n return;\n }\n if (!driver.watch) {\n onChange(\"update\", key);\n }\n },\n async removeItem(key, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { removeMeta: opts };\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n if (!driver.removeItem) {\n return;\n }\n await asyncCall(driver.removeItem, relativeKey, opts);\n if (opts.removeMeta || opts.removeMata) {\n await asyncCall(driver.removeItem, relativeKey + \"$\", opts);\n }\n if (!driver.watch) {\n onChange(\"remove\", key);\n }\n },\n // Meta\n async getMeta(key, opts = {}) {\n if (typeof opts === \"boolean\") {\n opts = { nativeOnly: opts };\n }\n key = normalizeKey(key);\n const { relativeKey, driver } = getMount(key);\n const meta = /* @__PURE__ */ Object.create(null);\n if (driver.getMeta) {\n Object.assign(meta, await asyncCall(driver.getMeta, relativeKey, opts));\n }\n if (!opts.nativeOnly) {\n const value = await asyncCall(\n driver.getItem,\n relativeKey + \"$\",\n opts\n ).then((value_) => destr(value_));\n if (value && typeof value === \"object\") {\n if (typeof value.atime === \"string\") {\n value.atime = new Date(value.atime);\n }\n if (typeof value.mtime === \"string\") {\n value.mtime = new Date(value.mtime);\n }\n Object.assign(meta, value);\n }\n }\n return meta;\n },\n setMeta(key, value, opts = {}) {\n return this.setItem(key + \"$\", value, opts);\n },\n removeMeta(key, opts = {}) {\n return this.removeItem(key + \"$\", opts);\n },\n // Keys\n async getKeys(base, opts = {}) {\n base = normalizeBaseKey(base);\n const mounts = getMounts(base, true);\n let maskedMounts = [];\n const allKeys = [];\n let allMountsSupportMaxDepth = true;\n for (const mount of mounts) {\n if (!mount.driver.flags?.maxDepth) {\n allMountsSupportMaxDepth = false;\n }\n const rawKeys = await asyncCall(\n mount.driver.getKeys,\n mount.relativeBase,\n opts\n );\n for (const key of rawKeys) {\n const fullKey = mount.mountpoint + normalizeKey(key);\n if (!maskedMounts.some((p) => fullKey.startsWith(p))) {\n allKeys.push(fullKey);\n }\n }\n maskedMounts = [\n mount.mountpoint,\n ...maskedMounts.filter((p) => !p.startsWith(mount.mountpoint))\n ];\n }\n const shouldFilterByDepth = opts.maxDepth !== void 0 && !allMountsSupportMaxDepth;\n return allKeys.filter(\n (key) => (!shouldFilterByDepth || filterKeyByDepth(key, opts.maxDepth)) && filterKeyByBase(key, base)\n );\n },\n // Utils\n async clear(base, opts = {}) {\n base = normalizeBaseKey(base);\n await Promise.all(\n getMounts(base, false).map(async (m) => {\n if (m.driver.clear) {\n return asyncCall(m.driver.clear, m.relativeBase, opts);\n }\n if (m.driver.removeItem) {\n const keys = await m.driver.getKeys(m.relativeBase || \"\", opts);\n return Promise.all(\n keys.map((key) => m.driver.removeItem(key, opts))\n );\n }\n })\n );\n },\n async dispose() {\n await Promise.all(\n Object.values(context.mounts).map((driver) => dispose(driver))\n );\n },\n async watch(callback) {\n await startWatch();\n context.watchListeners.push(callback);\n return async () => {\n context.watchListeners = context.watchListeners.filter(\n (listener) => listener !== callback\n );\n if (context.watchListeners.length === 0) {\n await stopWatch();\n }\n };\n },\n async unwatch() {\n context.watchListeners = [];\n await stopWatch();\n },\n // Mount\n mount(base, driver) {\n base = normalizeBaseKey(base);\n if (base && context.mounts[base]) {\n throw new Error(`already mounted at ${base}`);\n }\n if (base) {\n context.mountpoints.push(base);\n context.mountpoints.sort((a, b) => b.length - a.length);\n }\n context.mounts[base] = driver;\n if (context.watching) {\n Promise.resolve(watch(driver, onChange, base)).then((unwatcher) => {\n context.unwatch[base] = unwatcher;\n }).catch(console.error);\n }\n return storage;\n },\n async unmount(base, _dispose = true) {\n base = normalizeBaseKey(base);\n if (!base || !context.mounts[base]) {\n return;\n }\n if (context.watching && base in context.unwatch) {\n context.unwatch[base]?.();\n delete context.unwatch[base];\n }\n if (_dispose) {\n await dispose(context.mounts[base]);\n }\n context.mountpoints = context.mountpoints.filter((key) => key !== base);\n delete context.mounts[base];\n },\n getMount(key = \"\") {\n key = normalizeKey(key) + \":\";\n const m = getMount(key);\n return {\n driver: m.driver,\n base: m.base\n };\n },\n getMounts(base = \"\", opts = {}) {\n base = normalizeKey(base);\n const mounts = getMounts(base, opts.parents);\n return mounts.map((m) => ({\n driver: m.driver,\n base: m.mountpoint\n }));\n },\n // Aliases\n keys: (base, opts = {}) => storage.getKeys(base, opts),\n get: (key, opts = {}) => storage.getItem(key, opts),\n set: (key, value, opts = {}) => storage.setItem(key, value, opts),\n has: (key, opts = {}) => storage.hasItem(key, opts),\n del: (key, opts = {}) => storage.removeItem(key, opts),\n remove: (key, opts = {}) => storage.removeItem(key, opts)\n };\n return storage;\n}\nasync function snapshot(storage, base) {\n base = normalizeBaseKey(base);\n const keys = await storage.getKeys(base);\n const snapshot2 = {};\n await Promise.all(\n keys.map(async (key) => {\n snapshot2[key.slice(base.length)] = await storage.getItem(key);\n })\n );\n return snapshot2;\n}\nasync function restoreSnapshot(driver, snapshot2, base = \"\") {\n base = normalizeBaseKey(base);\n await Promise.all(\n Object.entries(snapshot2).map((e) => driver.setItem(base + e[0], e[1]))\n );\n}\nfunction watch(driver, onChange, base) {\n return driver.watch ? driver.watch((event, key) => onChange(event, base + key)) : () => {\n };\n}\nasync function dispose(driver) {\n if (typeof driver.dispose === \"function\") {\n await asyncCall(driver.dispose);\n }\n}\n\nconst builtinDrivers = {\n \"azure-app-configuration\": \"unstorage/drivers/azure-app-configuration\",\n \"azureAppConfiguration\": \"unstorage/drivers/azure-app-configuration\",\n \"azure-cosmos\": \"unstorage/drivers/azure-cosmos\",\n \"azureCosmos\": \"unstorage/drivers/azure-cosmos\",\n \"azure-key-vault\": \"unstorage/drivers/azure-key-vault\",\n \"azureKeyVault\": \"unstorage/drivers/azure-key-vault\",\n \"azure-storage-blob\": \"unstorage/drivers/azure-storage-blob\",\n \"azureStorageBlob\": \"unstorage/drivers/azure-storage-blob\",\n \"azure-storage-table\": \"unstorage/drivers/azure-storage-table\",\n \"azureStorageTable\": \"unstorage/drivers/azure-storage-table\",\n \"capacitor-preferences\": \"unstorage/drivers/capacitor-preferences\",\n \"capacitorPreferences\": \"unstorage/drivers/capacitor-preferences\",\n \"cloudflare-kv-binding\": \"unstorage/drivers/cloudflare-kv-binding\",\n \"cloudflareKVBinding\": \"unstorage/drivers/cloudflare-kv-binding\",\n \"cloudflare-kv-http\": \"unstorage/drivers/cloudflare-kv-http\",\n \"cloudflareKVHttp\": \"unstorage/drivers/cloudflare-kv-http\",\n \"cloudflare-r2-binding\": \"unstorage/drivers/cloudflare-r2-binding\",\n \"cloudflareR2Binding\": \"unstorage/drivers/cloudflare-r2-binding\",\n \"db0\": \"unstorage/drivers/db0\",\n \"deno-kv-node\": \"unstorage/drivers/deno-kv-node\",\n \"denoKVNode\": \"unstorage/drivers/deno-kv-node\",\n \"deno-kv\": \"unstorage/drivers/deno-kv\",\n \"denoKV\": \"unstorage/drivers/deno-kv\",\n \"fs-lite\": \"unstorage/drivers/fs-lite\",\n \"fsLite\": \"unstorage/drivers/fs-lite\",\n \"fs\": \"unstorage/drivers/fs\",\n \"github\": \"unstorage/drivers/github\",\n \"http\": \"unstorage/drivers/http\",\n \"indexedb\": \"unstorage/drivers/indexedb\",\n \"localstorage\": \"unstorage/drivers/localstorage\",\n \"lru-cache\": \"unstorage/drivers/lru-cache\",\n \"lruCache\": \"unstorage/drivers/lru-cache\",\n \"memory\": \"unstorage/drivers/memory\",\n \"mongodb\": \"unstorage/drivers/mongodb\",\n \"netlify-blobs\": \"unstorage/drivers/netlify-blobs\",\n \"netlifyBlobs\": \"unstorage/drivers/netlify-blobs\",\n \"null\": \"unstorage/drivers/null\",\n \"overlay\": \"unstorage/drivers/overlay\",\n \"planetscale\": \"unstorage/drivers/planetscale\",\n \"redis\": \"unstorage/drivers/redis\",\n \"s3\": \"unstorage/drivers/s3\",\n \"session-storage\": \"unstorage/drivers/session-storage\",\n \"sessionStorage\": \"unstorage/drivers/session-storage\",\n \"uploadthing\": \"unstorage/drivers/uploadthing\",\n \"upstash\": \"unstorage/drivers/upstash\",\n \"vercel-blob\": \"unstorage/drivers/vercel-blob\",\n \"vercelBlob\": \"unstorage/drivers/vercel-blob\",\n \"vercel-kv\": \"unstorage/drivers/vercel-kv\",\n \"vercelKV\": \"unstorage/drivers/vercel-kv\",\n \"vercel-runtime-cache\": \"unstorage/drivers/vercel-runtime-cache\",\n \"vercelRuntimeCache\": \"unstorage/drivers/vercel-runtime-cache\"\n};\n\nexport { builtinDrivers, createStorage, defineDriver, filterKeyByBase, filterKeyByDepth, joinKeys, normalizeBaseKey, normalizeKey, restoreSnapshot, snapshot };\n","function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n let dbp;\n const getDB = () => {\n if (dbp)\n return dbp;\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n dbp = promisifyRequest(request);\n dbp.then((db) => {\n // It seems like Safari sometimes likes to just close the connection.\n // It's supposed to fire this event when that happens. Let's hope it does!\n db.onclose = () => (dbp = undefined);\n }, () => { });\n return dbp;\n };\n return (txMode, callback) => getDB().then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic – if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n","const JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === \"bigint\" ? value.toString() + \"n\" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, \"$1\\\"$2n\\\"$3\");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === \"string\" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nexport function safeJsonParse(value) {\n if (typeof value !== \"string\") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nexport function safeJsonStringify(value) {\n return typeof value === \"string\" ? value : JSONStringify(value) || \"\";\n}\n//# sourceMappingURL=index.js.map","import{createStorage as w}from\"unstorage\";import{createStore as I,get as u,set as p,del as b,keys as v,clear as S}from\"idb-keyval\";import{safeJsonStringify as g,safeJsonParse as d}from\"@walletconnect/safe-json\";function C(i){return i}const x=\"idb-keyval\";var z=(i={})=>{const t=i.base&&i.base.length>0?`${i.base}:`:\"\",e=s=>t+s;let n;return i.dbName&&i.storeName&&(n=I(i.dbName,i.storeName)),{name:x,options:i,async hasItem(s){return!(typeof await u(e(s),n)>\"u\")},async getItem(s){return await u(e(s),n)??null},setItem(s,a){return p(e(s),a,n)},removeItem(s){return b(e(s),n)},getKeys(){return v(n)},clear(){return S(n)}}};const D=\"WALLET_CONNECT_V2_INDEXED_DB\",E=\"keyvaluestorage\";class _{constructor(){this.indexedDb=w({driver:z({dbName:D,storeName:E})})}async getKeys(){return this.indexedDb.getKeys()}async getEntries(){return(await this.indexedDb.getItems(await this.indexedDb.getKeys())).map(t=>[t.key,t.value])}async getItem(t){const e=await this.indexedDb.getItem(t);if(e!==null)return e}async setItem(t,e){await this.indexedDb.setItem(t,g(e))}async removeItem(t){await this.indexedDb.removeItem(t)}}var l=typeof globalThis<\"u\"?globalThis:typeof window<\"u\"?window:typeof global<\"u\"?global:typeof self<\"u\"?self:{},c={exports:{}};(function(){let i;function t(){}i=t,i.prototype.getItem=function(e){return this.hasOwnProperty(e)?String(this[e]):null},i.prototype.setItem=function(e,n){this[e]=String(n)},i.prototype.removeItem=function(e){delete this[e]},i.prototype.clear=function(){const e=this;Object.keys(e).forEach(function(n){e[n]=void 0,delete e[n]})},i.prototype.key=function(e){return e=e||0,Object.keys(this)[e]},i.prototype.__defineGetter__(\"length\",function(){return Object.keys(this).length}),typeof l<\"u\"&&l.localStorage?c.exports=l.localStorage:typeof window<\"u\"&&window.localStorage?c.exports=window.localStorage:c.exports=new t})();function k(i){var t;return[i[0],d((t=i[1])!=null?t:\"\")]}class K{constructor(){this.localStorage=c.exports}async getKeys(){return Object.keys(this.localStorage)}async getEntries(){return Object.entries(this.localStorage).map(k)}async getItem(t){const e=this.localStorage.getItem(t);if(e!==null)return d(e)}async setItem(t,e){this.localStorage.setItem(t,g(e))}async removeItem(t){this.localStorage.removeItem(t)}}const N=\"wc_storage_version\",y=1,O=async(i,t,e)=>{const n=N,s=await t.getItem(n);if(s&&s>=y){e(t);return}const a=await i.getKeys();if(!a.length){e(t);return}const m=[];for(;a.length;){const r=a.shift();if(!r)continue;const o=r.toLowerCase();if(o.includes(\"wc@\")||o.includes(\"walletconnect\")||o.includes(\"wc_\")||o.includes(\"wallet_connect\")){const f=await i.getItem(r);await t.setItem(r,f),m.push(r)}}await t.setItem(n,y),e(t),j(i,m)},j=async(i,t)=>{t.length&&t.forEach(async e=>{await i.removeItem(e)})};class h{constructor(){this.initialized=!1,this.setInitialized=e=>{this.storage=e,this.initialized=!0};const t=new K;this.storage=t;try{const e=new _;O(t,e,this.setInitialized)}catch{this.initialized=!0}}async getKeys(){return await this.initialize(),this.storage.getKeys()}async getEntries(){return await this.initialize(),this.storage.getEntries()}async getItem(t){return await this.initialize(),this.storage.getItem(t)}async setItem(t,e){return await this.initialize(),this.storage.setItem(t,e)}async removeItem(t){return await this.initialize(),this.storage.removeItem(t)}async initialize(){this.initialized||await new Promise(t=>{const e=setInterval(()=>{this.initialized&&(clearInterval(e),t())},20)})}}export{h as KeyValueStorage,h as default};\n//# sourceMappingURL=index.es.js.map\n","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || ''\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']\n\n if (typeof proto === 'function') {\n proto.error = proto.fatal = proto.warn =\n proto.info = proto.debug = proto.trace = proto\n }\n if (opts.enabled === false) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = pino.levels\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return this.level === 'silent'\n ? Infinity\n : this.levels.values[this.level]\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(setOpts, logger, 'error', 'log') // <-- must stay first\n set(setOpts, logger, 'fatal', 'error')\n set(setOpts, logger, 'warn', 'error')\n set(setOpts, logger, 'info', 'log')\n set(setOpts, logger, 'debug', 'log')\n set(setOpts, logger, 'trace', 'log')\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n this.error = bind(parent, bindings, 'error')\n this.fatal = bind(parent, bindings, 'fatal')\n this.warn = bind(parent, bindings, 'warn')\n this.info = bind(parent, bindings, 'info')\n this.debug = bind(parent, bindings, 'debug')\n this.trace = bind(parent, bindings, 'trace')\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n return new Child(this)\n }\n return logger\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction set (opts, logger, level, fallback) {\n const proto = Object.getPrototypeOf(logger)\n logger[level] = logger.levelVal > logger.levels.values[level]\n ? noop\n : (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))\n\n wrap(opts, logger, level)\n}\n\nfunction wrap (opts, logger, level) {\n if (!opts.transmit && logger[level] === noop) return\n\n logger[level] = (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject) write.call(proto, asObject(this, level, args, ts))\n else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || logger.level\n const transmitValue = pino.levels.values[transmitLevel]\n const methodValue = pino.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: pino.levels.values[opts.transmit.level || logger.level],\n send: opts.transmit.send,\n val: logger.levelVal\n }, args)\n }\n }\n })(logger[level])\n}\n\nfunction asObject (logger, level, args, ts) {\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const o = {}\n if (ts) {\n o.time = ts\n }\n o.level = pino.levels.values[level]\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(o, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) o.msg = msg\n return o\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction bind (parent, bindings, level) {\n return function () {\n const args = new Array(1 + arguments.length)\n args[0] = bindings\n for (var i = 1; i < args.length; i++) {\n args[i] = arguments[i - 1]\n }\n return parent[level].apply(this, args)\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n","import h,{levels as s}from\"pino\";import{default as U}from\"pino\";import{safeJsonStringify as u}from\"@walletconnect/safe-json\";const c={level:\"info\"},n=\"custom_context\",l=1e3*1024;class O{constructor(e){this.nodeValue=e,this.sizeInBytes=new TextEncoder().encode(this.nodeValue).length,this.next=null}get value(){return this.nodeValue}get size(){return this.sizeInBytes}}class d{constructor(e){this.head=null,this.tail=null,this.lengthInNodes=0,this.maxSizeInBytes=e,this.sizeInBytes=0}append(e){const t=new O(e);if(t.size>this.maxSizeInBytes)throw new Error(`[LinkedList] Value too big to insert into list: ${e} with size ${t.size}`);for(;this.size+t.size>this.maxSizeInBytes;)this.shift();this.head?(this.tail&&(this.tail.next=t),this.tail=t):(this.head=t,this.tail=t),this.lengthInNodes++,this.sizeInBytes+=t.size}shift(){if(!this.head)return;const e=this.head;this.head=this.head.next,this.head||(this.tail=null),this.lengthInNodes--,this.sizeInBytes-=e.size}toArray(){const e=[];let t=this.head;for(;t!==null;)e.push(t.value),t=t.next;return e}get length(){return this.lengthInNodes}get size(){return this.sizeInBytes}toOrderedArray(){return Array.from(this)}[Symbol.iterator](){let e=this.head;return{next:()=>{if(!e)return{done:!0,value:null};const t=e.value;return e=e.next,{done:!1,value:t}}}}}class L{constructor(e,t=l){this.level=e??\"error\",this.levelValue=s.values[this.level],this.MAX_LOG_SIZE_IN_BYTES=t,this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}forwardToConsole(e,t){t===s.values.error?console.error(e):t===s.values.warn?console.warn(e):t===s.values.debug?console.debug(e):t===s.values.trace?console.trace(e):console.log(e)}appendToLogs(e){this.logs.append(u({timestamp:new Date().toISOString(),log:e}));const t=typeof e==\"string\"?JSON.parse(e).level:e.level;t>=this.levelValue&&this.forwardToConsole(e,t)}getLogs(){return this.logs}clearLogs(){this.logs=new d(this.MAX_LOG_SIZE_IN_BYTES)}getLogArray(){return Array.from(this.logs)}logsToBlob(e){const t=this.getLogArray();return t.push(u({extraMetadata:e})),new Blob(t,{type:\"application/json\"})}}class m{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}downloadLogsBlobInBrowser(e){const t=URL.createObjectURL(this.logsToBlob(e)),o=document.createElement(\"a\");o.href=t,o.download=`walletconnect-logs-${new Date().toISOString()}.txt`,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(t)}}class B{constructor(e,t=l){this.baseChunkLogger=new L(e,t)}write(e){this.baseChunkLogger.appendToLogs(e)}getLogs(){return this.baseChunkLogger.getLogs()}clearLogs(){this.baseChunkLogger.clearLogs()}getLogArray(){return this.baseChunkLogger.getLogArray()}logsToBlob(e){return this.baseChunkLogger.logsToBlob(e)}}var x=Object.defineProperty,S=Object.defineProperties,_=Object.getOwnPropertyDescriptors,p=Object.getOwnPropertySymbols,T=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable,f=(r,e,t)=>e in r?x(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i=(r,e)=>{for(var t in e||(e={}))T.call(e,t)&&f(r,t,e[t]);if(p)for(var t of p(e))z.call(e,t)&&f(r,t,e[t]);return r},g=(r,e)=>S(r,_(e));function k(r){return g(i({},r),{level:r?.level||c.level})}function v(r,e=n){return r[e]||\"\"}function b(r,e,t=n){return r[t]=e,r}function y(r,e=n){let t=\"\";return typeof r.bindings>\"u\"?t=v(r,e):t=r.bindings().context||\"\",t}function w(r,e,t=n){const o=y(r,t);return o.trim()?`${o}/${e}`:e}function E(r,e,t=n){const o=w(r,e,t),a=r.child({context:o});return b(a,o,t)}function C(r){var e,t;const o=new m((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\",browser:g(i({},(t=r.opts)==null?void 0:t.browser),{write:a=>o.write(a)})})),chunkLoggerController:o}}function I(r){var e;const t=new B((e=r.opts)==null?void 0:e.level,r.maxSizeInBytes);return{logger:h(g(i({},r.opts),{level:\"trace\"}),t),chunkLoggerController:t}}function A(r){return typeof r.loggerOverride<\"u\"&&typeof r.loggerOverride!=\"string\"?{logger:r.loggerOverride,chunkLoggerController:null}:typeof window<\"u\"?C(r):I(r)}export{l as MAX_LOG_SIZE_IN_BYTES_DEFAULT,n as PINO_CUSTOM_CONTEXT_KEY,c as PINO_LOGGER_DEFAULTS,w as formatChildLoggerContext,E as generateChildLogger,C as generateClientLogger,A as generatePlatformLogger,I as generateServerLogger,v as getBrowserLoggerContext,k as getDefaultLoggerOptions,y as getLoggerContext,U as pino,b as setBrowserLoggerContext};\n//# sourceMappingURL=index.es.js.map\n","import{IEvents as o}from\"@walletconnect/events\";import n,{EventEmitter as l}from\"events\";var a=Object.defineProperty,u=(e,s,r)=>s in e?a(e,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[s]=r,c=(e,s,r)=>u(e,typeof s!=\"symbol\"?s+\"\":s,r);class h extends o{constructor(s){super(),this.opts=s,c(this,\"protocol\",\"wc\"),c(this,\"version\",2)}}class g{constructor(s,r,t){this.core=s,this.logger=r}}var p=Object.defineProperty,b=(e,s,r)=>s in e?p(e,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[s]=r,v=(e,s,r)=>b(e,typeof s!=\"symbol\"?s+\"\":s,r);class I extends o{constructor(s,r){super(),this.core=s,this.logger=r,v(this,\"records\",new Map)}}class y{constructor(s,r){this.logger=s,this.core=r}}class m extends o{constructor(s,r){super(),this.relayer=s,this.logger=r}}class d extends o{constructor(s){super()}}class f{constructor(s,r,t,q){this.core=s,this.logger=r,this.name=t}}var E=Object.defineProperty,x=(e,s,r)=>s in e?E(e,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[s]=r,w=(e,s,r)=>x(e,typeof s!=\"symbol\"?s+\"\":s,r);class C{constructor(){w(this,\"map\",new Map)}}class P extends o{constructor(s,r){super(),this.relayer=s,this.logger=r}}class j{constructor(s,r){this.core=s,this.logger=r}}class S extends o{constructor(s,r){super(),this.core=s,this.logger=r}}class ${constructor(s,r){this.logger=s,this.core=r}}class M{constructor(s,r,t){this.core=s,this.logger=r,this.store=t}}class O{constructor(s,r){this.projectId=s,this.logger=r}}class R{constructor(s,r,t){this.core=s,this.logger=r,this.telemetryEnabled=t}}var T=Object.defineProperty,k=(e,s,r)=>s in e?T(e,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[s]=r,i=(e,s,r)=>k(e,typeof s!=\"symbol\"?s+\"\":s,r);class H extends n{constructor(){super()}}class J{constructor(s){this.opts=s,i(this,\"protocol\",\"wc\"),i(this,\"version\",2)}}class K extends l{constructor(){super()}}class V{constructor(s){this.client=s}}export{h as ICore,g as ICrypto,O as IEchoClient,V as IEngine,K as IEngineEvents,R as IEventClient,S as IExpirer,I as IJsonRpcHistory,j as IKeyChain,y as IMessageTracker,$ as IPairing,m as IPublisher,d as IRelayer,J as ISignClient,H as ISignClientEvents,f as IStore,P as ISubscriber,C as ISubscriberTopicMap,M as IVerify};\n//# sourceMappingURL=index.es.js.map\n","import{fromMiliseconds as bn}from\"@walletconnect/time\";import{safeJsonParse as pn,safeJsonStringify as wn}from\"@walletconnect/safe-json\";function En(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\"Uint8Array\"}function fe(t,...e){if(!En(t))throw new Error(\"Uint8Array expected\");if(e.length>0&&!e.includes(t.length))throw new Error(\"Uint8Array expected of length \"+e+\", got length=\"+t.length)}function De(t,e=!0){if(t.destroyed)throw new Error(\"Hash instance has been destroyed\");if(e&&t.finished)throw new Error(\"Hash#digest() has already been called\")}function gn(t,e){fe(t);const n=e.outputLen;if(t.lengthnew DataView(t.buffer,t.byteOffset,t.byteLength);function yn(t){if(typeof t!=\"string\")throw new Error(\"utf8ToBytes expected string, got \"+typeof t);return new Uint8Array(new TextEncoder().encode(t))}function de(t){return typeof t==\"string\"&&(t=yn(t)),fe(t),t}class xn{clone(){return this._cloneInto()}}function Bn(t){const e=r=>t().update(de(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function he(t=32){if(it&&typeof it.getRandomValues==\"function\")return it.getRandomValues(new Uint8Array(t));if(it&&typeof it.randomBytes==\"function\")return it.randomBytes(t);throw new Error(\"crypto.getRandomValues must be defined\")}function Cn(t,e,n,r){if(typeof t.setBigUint64==\"function\")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),a=Number(n>>o&s),u=Number(n&s),i=r?4:0,D=r?0:4;t.setUint32(e+i,a,r),t.setUint32(e+D,u,r)}class An extends xn{constructor(e,n,r,o){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=_t(this.buffer)}update(e){De(this);const{view:n,buffer:r,blockLen:o}=this;e=de(e);const s=e.length;for(let a=0;ao-a&&(this.process(r,0),a=0);for(let l=a;lc.length)throw new Error(\"_sha2: outputLen bigger than state\");for(let l=0;l>St&wt)}:{h:Number(t>>St&wt)|0,l:Number(t&wt)|0}}function mn(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let o=0;oBigInt(t>>>0)<>>0),Sn=(t,e,n)=>t>>>n,vn=(t,e,n)=>t<<32-n|e>>>n,In=(t,e,n)=>t>>>n|e<<32-n,Un=(t,e,n)=>t<<32-n|e>>>n,Tn=(t,e,n)=>t<<64-n|e>>>n-32,Fn=(t,e,n)=>t>>>n-32|e<<64-n,Nn=(t,e)=>e,Ln=(t,e)=>t,On=(t,e,n)=>t<>>32-n,Hn=(t,e,n)=>e<>>32-n,zn=(t,e,n)=>e<>>64-n,Mn=(t,e,n)=>t<>>64-n;function qn(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const $n=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),kn=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Rn=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),jn=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,Zn=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),Gn=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,x={fromBig:le,split:mn,toBig:_n,shrSH:Sn,shrSL:vn,rotrSH:In,rotrSL:Un,rotrBH:Tn,rotrBL:Fn,rotr32H:Nn,rotr32L:Ln,rotlSH:On,rotlSL:Hn,rotlBH:zn,rotlBL:Mn,add:qn,add3L:$n,add3H:kn,add4L:Rn,add4H:jn,add5H:Gn,add5L:Zn},[Vn,Yn]=(()=>x.split([\"0x428a2f98d728ae22\",\"0x7137449123ef65cd\",\"0xb5c0fbcfec4d3b2f\",\"0xe9b5dba58189dbbc\",\"0x3956c25bf348b538\",\"0x59f111f1b605d019\",\"0x923f82a4af194f9b\",\"0xab1c5ed5da6d8118\",\"0xd807aa98a3030242\",\"0x12835b0145706fbe\",\"0x243185be4ee4b28c\",\"0x550c7dc3d5ffb4e2\",\"0x72be5d74f27b896f\",\"0x80deb1fe3b1696b1\",\"0x9bdc06a725c71235\",\"0xc19bf174cf692694\",\"0xe49b69c19ef14ad2\",\"0xefbe4786384f25e3\",\"0x0fc19dc68b8cd5b5\",\"0x240ca1cc77ac9c65\",\"0x2de92c6f592b0275\",\"0x4a7484aa6ea6e483\",\"0x5cb0a9dcbd41fbd4\",\"0x76f988da831153b5\",\"0x983e5152ee66dfab\",\"0xa831c66d2db43210\",\"0xb00327c898fb213f\",\"0xbf597fc7beef0ee4\",\"0xc6e00bf33da88fc2\",\"0xd5a79147930aa725\",\"0x06ca6351e003826f\",\"0x142929670a0e6e70\",\"0x27b70a8546d22ffc\",\"0x2e1b21385c26c926\",\"0x4d2c6dfc5ac42aed\",\"0x53380d139d95b3df\",\"0x650a73548baf63de\",\"0x766a0abb3c77b2a8\",\"0x81c2c92e47edaee6\",\"0x92722c851482353b\",\"0xa2bfe8a14cf10364\",\"0xa81a664bbc423001\",\"0xc24b8b70d0f89791\",\"0xc76c51a30654be30\",\"0xd192e819d6ef5218\",\"0xd69906245565a910\",\"0xf40e35855771202a\",\"0x106aa07032bbd1b8\",\"0x19a4c116b8d2d0c8\",\"0x1e376c085141ab53\",\"0x2748774cdf8eeb99\",\"0x34b0bcb5e19b48a8\",\"0x391c0cb3c5c95a63\",\"0x4ed8aa4ae3418acb\",\"0x5b9cca4f7763e373\",\"0x682e6ff3d6b2b8a3\",\"0x748f82ee5defb2fc\",\"0x78a5636f43172f60\",\"0x84c87814a1f0ab72\",\"0x8cc702081a6439ec\",\"0x90befffa23631e28\",\"0xa4506cebde82bde9\",\"0xbef9a3f7b2c67915\",\"0xc67178f2e372532b\",\"0xca273eceea26619c\",\"0xd186b8c721c0c207\",\"0xeada7dd6cde0eb1e\",\"0xf57d4f7fee6ed178\",\"0x06f067aa72176fba\",\"0x0a637dc5a2c898a6\",\"0x113f9804bef90dae\",\"0x1b710b35131c471b\",\"0x28db77f523047d84\",\"0x32caab7b40c72493\",\"0x3c9ebe0a15c9bebc\",\"0x431d67c49c100d4c\",\"0x4cc5d4becb3e42b6\",\"0x597f299cfc657e2a\",\"0x5fcb6fab3ad6faec\",\"0x6c44198c4a475817\"].map(t=>BigInt(t))))(),P=new Uint32Array(80),Q=new Uint32Array(80);class Jn extends An{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:a,Dh:u,Dl:i,Eh:D,El:c,Fh:l,Fl:p,Gh:w,Gl:h,Hh:g,Hl:S}=this;return[e,n,r,o,s,a,u,i,D,c,l,p,w,h,g,S]}set(e,n,r,o,s,a,u,i,D,c,l,p,w,h,g,S){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=a|0,this.Dh=u|0,this.Dl=i|0,this.Eh=D|0,this.El=c|0,this.Fh=l|0,this.Fl=p|0,this.Gh=w|0,this.Gl=h|0,this.Hh=g|0,this.Hl=S|0}process(e,n){for(let d=0;d<16;d++,n+=4)P[d]=e.getUint32(n),Q[d]=e.getUint32(n+=4);for(let d=16;d<80;d++){const m=P[d-15]|0,F=Q[d-15]|0,q=x.rotrSH(m,F,1)^x.rotrSH(m,F,8)^x.shrSH(m,F,7),z=x.rotrSL(m,F,1)^x.rotrSL(m,F,8)^x.shrSL(m,F,7),I=P[d-2]|0,O=Q[d-2]|0,ot=x.rotrSH(I,O,19)^x.rotrBH(I,O,61)^x.shrSH(I,O,6),tt=x.rotrSL(I,O,19)^x.rotrBL(I,O,61)^x.shrSL(I,O,6),st=x.add4L(z,tt,Q[d-7],Q[d-16]),at=x.add4H(st,q,ot,P[d-7],P[d-16]);P[d]=at|0,Q[d]=st|0}let{Ah:r,Al:o,Bh:s,Bl:a,Ch:u,Cl:i,Dh:D,Dl:c,Eh:l,El:p,Fh:w,Fl:h,Gh:g,Gl:S,Hh:v,Hl:L}=this;for(let d=0;d<80;d++){const m=x.rotrSH(l,p,14)^x.rotrSH(l,p,18)^x.rotrBH(l,p,41),F=x.rotrSL(l,p,14)^x.rotrSL(l,p,18)^x.rotrBL(l,p,41),q=l&w^~l&g,z=p&h^~p&S,I=x.add5L(L,F,z,Yn[d],Q[d]),O=x.add5H(I,v,m,q,Vn[d],P[d]),ot=I|0,tt=x.rotrSH(r,o,28)^x.rotrBH(r,o,34)^x.rotrBH(r,o,39),st=x.rotrSL(r,o,28)^x.rotrBL(r,o,34)^x.rotrBL(r,o,39),at=r&s^r&u^s&u,Ct=o&a^o&i^a&i;v=g|0,L=S|0,g=w|0,S=h|0,w=l|0,h=p|0,{h:l,l:p}=x.add(D|0,c|0,O|0,ot|0),D=u|0,c=i|0,u=s|0,i=a|0,s=r|0,a=o|0;const At=x.add3L(ot,st,Ct);r=x.add3H(At,O,tt,at),o=At|0}({h:r,l:o}=x.add(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:a}=x.add(this.Bh|0,this.Bl|0,s|0,a|0),{h:u,l:i}=x.add(this.Ch|0,this.Cl|0,u|0,i|0),{h:D,l:c}=x.add(this.Dh|0,this.Dl|0,D|0,c|0),{h:l,l:p}=x.add(this.Eh|0,this.El|0,l|0,p|0),{h:w,l:h}=x.add(this.Fh|0,this.Fl|0,w|0,h|0),{h:g,l:S}=x.add(this.Gh|0,this.Gl|0,g|0,S|0),{h:v,l:L}=x.add(this.Hh|0,this.Hl|0,v|0,L|0),this.set(r,o,s,a,u,i,D,c,l,p,w,h,g,S,v,L)}roundClean(){P.fill(0),Q.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const Kn=Bn(()=>new Jn);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const vt=BigInt(0),be=BigInt(1),Wn=BigInt(2);function It(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\"Uint8Array\"}function Ut(t){if(!It(t))throw new Error(\"Uint8Array expected\")}function Tt(t,e){if(typeof e!=\"boolean\")throw new Error(t+\" boolean expected, got \"+e)}const Xn=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,\"0\"));function Ft(t){Ut(t);let e=\"\";for(let n=0;n=K._0&&t<=K._9)return t-K._0;if(t>=K.A&&t<=K.F)return t-(K.A-10);if(t>=K.a&&t<=K.f)return t-(K.a-10)}function Ee(t){if(typeof t!=\"string\")throw new Error(\"hex string expected, got \"+typeof t);const e=t.length,n=e/2;if(e%2)throw new Error(\"hex string expected, got unpadded hex of length \"+e);const r=new Uint8Array(n);for(let o=0,s=0;otypeof t==\"bigint\"&&vt<=t;function Qn(t,e,n){return Lt(t)&&Lt(e)&&Lt(n)&&e<=t&&tvt;t>>=be,e+=1);return e}const er=t=>(Wn<typeof t==\"bigint\",function:t=>typeof t==\"function\",boolean:t=>typeof t==\"boolean\",string:t=>typeof t==\"string\",stringOrUint8Array:t=>typeof t==\"string\"||It(t),isSafeInteger:t=>Number.isSafeInteger(t),array:t=>Array.isArray(t),field:(t,e)=>e.Fp.isValid(t),hash:t=>typeof t==\"function\"&&Number.isSafeInteger(t.outputLen)};function Ot(t,e,n={}){const r=(o,s,a)=>{const u=nr[s];if(typeof u!=\"function\")throw new Error(\"invalid validator function\");const i=t[o];if(!(a&&i===void 0)&&!u(i,t))throw new Error(\"param \"+String(o)+\" is invalid. Expected \"+s+\", got \"+i)};for(const[o,s]of Object.entries(e))r(o,s,!1);for(const[o,s]of Object.entries(n))r(o,s,!0);return t}function xe(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const M=BigInt(0),N=BigInt(1),nt=BigInt(2),rr=BigInt(3),Ht=BigInt(4),Be=BigInt(5),Ce=BigInt(8);function H(t,e){const n=t%e;return n>=M?n:e+n}function or(t,e,n){if(eM;)e&N&&(r=r*t%n),t=t*t%n,e>>=N;return r}function J(t,e,n){let r=t;for(;e-- >M;)r*=r,r%=n;return r}function Ae(t,e){if(t===M)throw new Error(\"invert: expected non-zero number\");if(e<=M)throw new Error(\"invert: expected positive modulus, got \"+e);let n=H(t,e),r=e,o=M,s=N;for(;n!==M;){const u=r/n,i=r%n,D=o-s*u;r=n,n=i,o=s,s=D}if(r!==N)throw new Error(\"invert: does not exist\");return H(o,e)}function sr(t){const e=(t-N)/nt;let n,r,o;for(n=t-N,r=0;n%nt===M;n/=nt,r++);for(o=nt;o1e3)throw new Error(\"Cannot find square root: likely non-prime P\");if(r===1){const a=(t+N)/Ht;return function(i,D){const c=i.pow(D,a);if(!i.eql(i.sqr(c),D))throw new Error(\"Cannot find square root\");return c}}const s=(n+N)/nt;return function(u,i){if(u.pow(i,e)===u.neg(u.ONE))throw new Error(\"Cannot find square root\");let D=r,c=u.pow(u.mul(u.ONE,o),n),l=u.pow(i,s),p=u.pow(i,n);for(;!u.eql(p,u.ONE);){if(u.eql(p,u.ZERO))return u.ZERO;let w=1;for(let g=u.sqr(p);w(H(t,e)&N)===N,cr=[\"create\",\"isValid\",\"is0\",\"neg\",\"inv\",\"sqrt\",\"sqr\",\"eql\",\"add\",\"sub\",\"mul\",\"pow\",\"div\",\"addN\",\"subN\",\"mulN\",\"sqrN\"];function ar(t){const e={ORDER:\"bigint\",MASK:\"bigint\",BYTES:\"isSafeInteger\",BITS:\"isSafeInteger\"},n=cr.reduce((r,o)=>(r[o]=\"function\",r),e);return Ot(t,n)}function fr(t,e,n){if(nM;)n&N&&(r=t.mul(r,o)),o=t.sqr(o),n>>=N;return r}function Dr(t,e){const n=new Array(e.length),r=e.reduce((s,a,u)=>t.is0(a)?s:(n[u]=s,t.mul(s,a)),t.ONE),o=t.inv(r);return e.reduceRight((s,a,u)=>t.is0(a)?s:(n[u]=t.mul(s,n[u]),t.mul(s,a)),o),n}function me(t,e){const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function _e(t,e,n=!1,r={}){if(t<=M)throw new Error(\"invalid field: expected ORDER > 0, got \"+t);const{nBitLength:o,nByteLength:s}=me(t,e);if(s>2048)throw new Error(\"invalid field: expected ORDER of <= 2048 bytes\");let a;const u=Object.freeze({ORDER:t,isLE:n,BITS:o,BYTES:s,MASK:er(o),ZERO:M,ONE:N,create:i=>H(i,t),isValid:i=>{if(typeof i!=\"bigint\")throw new Error(\"invalid field element: expected bigint, got \"+typeof i);return M<=i&&ii===M,isOdd:i=>(i&N)===N,neg:i=>H(-i,t),eql:(i,D)=>i===D,sqr:i=>H(i*i,t),add:(i,D)=>H(i+D,t),sub:(i,D)=>H(i-D,t),mul:(i,D)=>H(i*D,t),pow:(i,D)=>fr(u,i,D),div:(i,D)=>H(i*Ae(D,t),t),sqrN:i=>i*i,addN:(i,D)=>i+D,subN:(i,D)=>i-D,mulN:(i,D)=>i*D,inv:i=>Ae(i,t),sqrt:r.sqrt||(i=>(a||(a=ir(t)),a(u,i))),invertBatch:i=>Dr(u,i),cmov:(i,D,c)=>c?D:i,toBytes:i=>n?Nt(i,s):ge(i,s),fromBytes:i=>{if(i.length!==s)throw new Error(\"Field.fromBytes: expected \"+s+\" bytes, got \"+i.length);return n?Et(i):Pn(i)}});return Object.freeze(u)}const Se=BigInt(0),gt=BigInt(1);function zt(t,e){const n=e.negate();return t?n:e}function ve(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error(\"invalid window size, expected [1..\"+e+\"], got W=\"+t)}function Mt(t,e){ve(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1);return{windows:n,windowSize:r}}function dr(t,e){if(!Array.isArray(t))throw new Error(\"array expected\");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error(\"invalid point at index \"+r)})}function hr(t,e){if(!Array.isArray(t))throw new Error(\"array of scalars expected\");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error(\"invalid scalar at index \"+r)})}const qt=new WeakMap,Ie=new WeakMap;function $t(t){return Ie.get(t)||1}function lr(t,e){return{constTimeNegate:zt,hasPrecomputes(n){return $t(n)!==1},unsafeLadder(n,r,o=t.ZERO){let s=n;for(;r>Se;)r>&&(o=o.add(s)),s=s.double(),r>>=gt;return o},precomputeWindow(n,r){const{windows:o,windowSize:s}=Mt(r,e),a=[];let u=n,i=u;for(let D=0;D>=l,h>a&&(h-=c,o+=gt);const g=w,S=w+Math.abs(h)-1,v=p%2!==0,L=h<0;h===0?i=i.add(zt(v,r[g])):u=u.add(zt(L,r[S]))}return{p:u,f:i}},wNAFUnsafe(n,r,o,s=t.ZERO){const{windows:a,windowSize:u}=Mt(n,e),i=BigInt(2**n-1),D=2**n,c=BigInt(n);for(let l=0;l>=c,w>u&&(w-=D,o+=gt),w===0)continue;let h=r[p+Math.abs(w)-1];w<0&&(h=h.negate()),s=s.add(h)}return s},getPrecomputes(n,r,o){let s=qt.get(r);return s||(s=this.precomputeWindow(r,n),n!==1&&qt.set(r,o(s))),s},wNAFCached(n,r,o){const s=$t(n);return this.wNAF(s,this.getPrecomputes(s,n,o),r)},wNAFCachedUnsafe(n,r,o,s){const a=$t(n);return a===1?this.unsafeLadder(n,r,s):this.wNAFUnsafe(a,this.getPrecomputes(a,n,o),r,s)},setWindowSize(n,r){ve(r,e),Ie.set(n,r),qt.delete(n)}}}function br(t,e,n,r){if(dr(n,t),hr(r,e),n.length!==r.length)throw new Error(\"arrays of points and scalars must have equal length\");const o=t.ZERO,s=tr(BigInt(n.length)),a=s>12?s-3:s>4?s-2:s?2:1,u=(1<=0;l-=a){i.fill(o);for(let w=0;w>BigInt(l)&BigInt(u));i[g]=i[g].add(n[w])}let p=o;for(let w=i.length-1,h=o;w>0;w--)h=h.add(i[w]),p=p.add(h);if(c=c.add(p),l!==0)for(let w=0;w{try{return{isValid:!0,value:n.sqrt(y*n.inv(f))}}catch{return{isValid:!1,value:G}}}),w=e.adjustScalarBytes||(y=>y),h=e.domain||((y,f,b)=>{if(Tt(\"phflag\",b),f.length||b)throw new Error(\"Contexts/pre-hash are not supported\");return y});function g(y,f){ft(\"coordinate \"+y,f,G,D)}function S(y){if(!(y instanceof d))throw new Error(\"ExtendedPoint expected\")}const v=xe((y,f)=>{const{ex:b,ey:E,ez:B}=y,C=y.is0();f==null&&(f=C?wr:n.inv(B));const A=c(b*f),U=c(E*f),_=c(B*f);if(C)return{x:G,y:j};if(_!==j)throw new Error(\"invZ was invalid\");return{x:A,y:U}}),L=xe(y=>{const{a:f,d:b}=e;if(y.is0())throw new Error(\"bad point: ZERO\");const{ex:E,ey:B,ez:C,et:A}=y,U=c(E*E),_=c(B*B),T=c(C*C),$=c(T*T),R=c(U*f),V=c(T*c(R+_)),Y=c($+c(b*c(U*_)));if(V!==Y)throw new Error(\"bad point: equation left != right (1)\");const Z=c(E*B),X=c(C*A);if(Z!==X)throw new Error(\"bad point: equation left != right (2)\");return!0});class d{constructor(f,b,E,B){this.ex=f,this.ey=b,this.ez=E,this.et=B,g(\"x\",f),g(\"y\",b),g(\"z\",E),g(\"t\",B),Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(f){if(f instanceof d)throw new Error(\"extended point not allowed\");const{x:b,y:E}=f||{};return g(\"x\",b),g(\"y\",E),new d(b,E,j,c(b*E))}static normalizeZ(f){const b=n.invertBatch(f.map(E=>E.ez));return f.map((E,B)=>E.toAffine(b[B])).map(d.fromAffine)}static msm(f,b){return br(d,l,f,b)}_setWindowSize(f){q.setWindowSize(this,f)}assertValidity(){L(this)}equals(f){S(f);const{ex:b,ey:E,ez:B}=this,{ex:C,ey:A,ez:U}=f,_=c(b*U),T=c(C*B),$=c(E*U),R=c(A*B);return _===T&&$===R}is0(){return this.equals(d.ZERO)}negate(){return new d(c(-this.ex),this.ey,this.ez,c(-this.et))}double(){const{a:f}=e,{ex:b,ey:E,ez:B}=this,C=c(b*b),A=c(E*E),U=c(yt*c(B*B)),_=c(f*C),T=b+E,$=c(c(T*T)-C-A),R=_+A,V=R-U,Y=_-A,Z=c($*V),X=c(R*Y),et=c($*Y),pt=c(V*R);return new d(Z,X,pt,et)}add(f){S(f);const{a:b,d:E}=e,{ex:B,ey:C,ez:A,et:U}=this,{ex:_,ey:T,ez:$,et:R}=f;if(b===BigInt(-1)){const re=c((C-B)*(T+_)),oe=c((C+B)*(T-_)),mt=c(oe-re);if(mt===G)return this.double();const se=c(A*yt*R),ie=c(U*yt*$),ue=ie+se,ce=oe+re,ae=ie-se,Dn=c(ue*mt),dn=c(ce*ae),hn=c(ue*ae),ln=c(mt*ce);return new d(Dn,dn,ln,hn)}const V=c(B*_),Y=c(C*T),Z=c(U*E*R),X=c(A*$),et=c((B+C)*(_+T)-V-Y),pt=X-Z,ee=X+Z,ne=c(Y-b*V),un=c(et*pt),cn=c(ee*ne),an=c(et*ne),fn=c(pt*ee);return new d(un,cn,fn,an)}subtract(f){return this.add(f.negate())}wNAF(f){return q.wNAFCached(this,f,d.normalizeZ)}multiply(f){const b=f;ft(\"scalar\",b,j,r);const{p:E,f:B}=this.wNAF(b);return d.normalizeZ([E,B])[0]}multiplyUnsafe(f,b=d.ZERO){const E=f;return ft(\"scalar\",E,G,r),E===G?F:this.is0()||E===j?this:q.wNAFCachedUnsafe(this,E,d.normalizeZ,b)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return q.unsafeLadder(this,r).is0()}toAffine(f){return v(this,f)}clearCofactor(){const{h:f}=e;return f===j?this:this.multiplyUnsafe(f)}static fromHex(f,b=!1){const{d:E,a:B}=e,C=n.BYTES;f=W(\"pointHex\",f,C),Tt(\"zip215\",b);const A=f.slice(),U=f[C-1];A[C-1]=U&-129;const _=Et(A),T=b?D:n.ORDER;ft(\"pointHex.y\",_,G,T);const $=c(_*_),R=c($-j),V=c(E*$-B);let{isValid:Y,value:Z}=p(R,V);if(!Y)throw new Error(\"Point.fromHex: invalid y coordinate\");const X=(Z&j)===j,et=(U&128)!==0;if(!b&&Z===G&&et)throw new Error(\"Point.fromHex: x=0 and x_0=1\");return et!==X&&(Z=c(-Z)),d.fromAffine({x:Z,y:_})}static fromPrivateKey(f){return O(f).point}toRawBytes(){const{x:f,y:b}=this.toAffine(),E=Nt(b,n.BYTES);return E[E.length-1]|=f&j?128:0,E}toHex(){return Ft(this.toRawBytes())}}d.BASE=new d(e.Gx,e.Gy,j,c(e.Gx*e.Gy)),d.ZERO=new d(G,j,j,G);const{BASE:m,ZERO:F}=d,q=lr(d,u*8);function z(y){return H(y,r)}function I(y){return z(Et(y))}function O(y){const f=n.BYTES;y=W(\"private key\",y,f);const b=W(\"hashed private key\",s(y),2*f),E=w(b.slice(0,f)),B=b.slice(f,2*f),C=I(E),A=m.multiply(C),U=A.toRawBytes();return{head:E,prefix:B,scalar:C,point:A,pointBytes:U}}function ot(y){return O(y).pointBytes}function tt(y=new Uint8Array,...f){const b=ye(...f);return I(s(h(b,W(\"context\",y),!!o)))}function st(y,f,b={}){y=W(\"message\",y),o&&(y=o(y));const{prefix:E,scalar:B,pointBytes:C}=O(f),A=tt(b.context,E,y),U=m.multiply(A).toRawBytes(),_=tt(b.context,U,C,y),T=z(A+_*B);ft(\"signature.s\",T,G,r);const $=ye(U,Nt(T,n.BYTES));return W(\"result\",$,n.BYTES*2)}const at=Er;function Ct(y,f,b,E=at){const{context:B,zip215:C}=E,A=n.BYTES;y=W(\"signature\",y,2*A),f=W(\"message\",f),b=W(\"publicKey\",b,A),C!==void 0&&Tt(\"zip215\",C),o&&(f=o(f));const U=Et(y.slice(A,2*A));let _,T,$;try{_=d.fromHex(b,C),T=d.fromHex(y.slice(0,A),C),$=m.multiplyUnsafe(U)}catch{return!1}if(!C&&_.isSmallOrder())return!1;const R=tt(B,T.toRawBytes(),_.toRawBytes(),f);return T.add(_.multiplyUnsafe(R)).subtract($).clearCofactor().equals(d.ZERO)}return m._setWindowSize(8),{CURVE:e,getPublicKey:ot,sign:st,verify:Ct,ExtendedPoint:d,utils:{getExtendedPublicKey:O,randomPrivateKey:()=>a(n.BYTES),precompute(y=8,f=d.BASE){return f._setWindowSize(y),f.multiply(BigInt(3)),f}}}}BigInt(0),BigInt(1);const kt=BigInt(\"57896044618658097711785492504343953926634992332820282019728792003956564819949\"),Ue=BigInt(\"19681161376707505956807079304988542015446066515923890162744021073123829784752\");BigInt(0);const xr=BigInt(1),Te=BigInt(2);BigInt(3);const Br=BigInt(5),Cr=BigInt(8);function Ar(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=kt,u=t*t%s*t%s,i=J(u,Te,s)*u%s,D=J(i,xr,s)*t%s,c=J(D,Br,s)*D%s,l=J(c,e,s)*c%s,p=J(l,n,s)*l%s,w=J(p,r,s)*p%s,h=J(w,o,s)*w%s,g=J(h,o,s)*w%s,S=J(g,e,s)*c%s;return{pow_p_5_8:J(S,Te,s)*t%s,b2:u}}function mr(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}function _r(t,e){const n=kt,r=H(e*e*e,n),o=H(r*r*e,n),s=Ar(t*o).pow_p_5_8;let a=H(t*r*s,n);const u=H(e*a*a,n),i=a,D=H(a*Ue,n),c=u===t,l=u===H(-t,n),p=u===H(-t*Ue,n);return c&&(a=i),(l||p)&&(a=D),ur(a,n)&&(a=H(-a,n)),{isValid:c||l,value:a}}const Sr=(()=>_e(kt,void 0,!0))(),vr=(()=>({a:BigInt(-1),d:BigInt(\"37095705934669439343138083508754565189542113879843219016388785533085940283555\"),Fp:Sr,n:BigInt(\"7237005577332262213973186563042994240857116359379907606001950938285454250989\"),h:Cr,Gx:BigInt(\"15112221349535400772501151409588531511454012693041857206046113283949847762202\"),Gy:BigInt(\"46316835694926478169428394003475163141307993866256225615783033603165251855960\"),hash:Kn,randomBytes:he,adjustScalarBytes:mr,uvRatio:_r}))(),Rt=(()=>yr(vr))(),jt=\"EdDSA\",Zt=\"JWT\",ut=\".\",Dt=\"base64url\",Gt=\"utf8\",xt=\"utf8\",Vt=\":\",Yt=\"did\",Jt=\"key\",dt=\"base58btc\",Kt=\"z\",Wt=\"K36\",Fe=32,Ne=32;function Xt(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function Le(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Xt(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function Oe(t,e){e||(e=t.reduce((o,s)=>o+s.length,0));const n=Le(e);let r=0;for(const o of t)n.set(o,r),r+=o.length;return Xt(n)}function Ir(t,e){if(t.length>=255)throw new TypeError(\"Alphabet too long\");for(var n=new Uint8Array(256),r=0;r>>0,m=new Uint8Array(d);v!==L;){for(var F=h[v],q=0,z=d-1;(F!==0||q>>0,m[z]=F%u>>>0,F=F/u>>>0;if(F!==0)throw new Error(\"Non-zero carry\");S=q,v++}for(var I=d-S;I!==d&&m[I]===0;)I++;for(var O=i.repeat(g);I>>0,d=new Uint8Array(L);h[g];){var m=n[h.charCodeAt(g)];if(m===255)return;for(var F=0,q=L-1;(m!==0||F>>0,d[q]=m%256>>>0,m=m/256>>>0;if(m!==0)throw new Error(\"Non-zero carry\");v=F,g++}if(h[g]!==\" \"){for(var z=L-v;z!==L&&d[z]===0;)z++;for(var I=new Uint8Array(S+(L-z)),O=S;z!==L;)I[O++]=d[z++];return I}}}function w(h){var g=p(h);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:l,decodeUnsafe:p,decode:w}}var Ur=Ir,Tr=Ur;const He=t=>{if(t instanceof Uint8Array&&t.constructor.name===\"Uint8Array\")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error(\"Unknown type, must be binary type\")},Fr=t=>new TextEncoder().encode(t),Nr=t=>new TextDecoder().decode(t);class Lr{constructor(e,n,r){this.name=e,this.prefix=n,this.baseEncode=r}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error(\"Unknown type, must be binary type\")}}class Or{constructor(e,n,r){if(this.name=e,this.prefix=n,n.codePointAt(0)===void 0)throw new Error(\"Invalid prefix character\");this.prefixCodePoint=n.codePointAt(0),this.baseDecode=r}decode(e){if(typeof e==\"string\"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error(\"Can only multibase decode strings\")}or(e){return ze(this,e)}}class Hr{constructor(e){this.decoders=e}or(e){return ze(this,e)}decode(e){const n=e[0],r=this.decoders[n];if(r)return r.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const ze=(t,e)=>new Hr({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class zr{constructor(e,n,r,o){this.name=e,this.prefix=n,this.baseEncode=r,this.baseDecode=o,this.encoder=new Lr(e,n,r),this.decoder=new Or(e,n,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Bt=({name:t,prefix:e,encode:n,decode:r})=>new zr(t,e,n,r),ht=({prefix:t,name:e,alphabet:n})=>{const{encode:r,decode:o}=Tr(n,e);return Bt({prefix:t,name:e,encode:r,decode:s=>He(o(s))})},Mr=(t,e,n,r)=>{const o={};for(let c=0;c=8&&(u-=8,a[D++]=255&i>>u)}if(u>=n||255&i<<8-u)throw new SyntaxError(\"Unexpected end of data\");return a},qr=(t,e,n)=>{const r=e[e.length-1]===\"=\",o=(1<n;)a-=n,s+=e[o&u>>a];if(a&&(s+=e[o&u<Bt({prefix:e,name:t,encode(o){return qr(o,r,n)},decode(o){return Mr(o,r,n,t)}}),$r=Bt({prefix:\"\\0\",name:\"identity\",encode:t=>Nr(t),decode:t=>Fr(t)});var kr=Object.freeze({__proto__:null,identity:$r});const Rr=k({prefix:\"0\",name:\"base2\",alphabet:\"01\",bitsPerChar:1});var jr=Object.freeze({__proto__:null,base2:Rr});const Zr=k({prefix:\"7\",name:\"base8\",alphabet:\"01234567\",bitsPerChar:3});var Gr=Object.freeze({__proto__:null,base8:Zr});const Vr=ht({prefix:\"9\",name:\"base10\",alphabet:\"0123456789\"});var Yr=Object.freeze({__proto__:null,base10:Vr});const Jr=k({prefix:\"f\",name:\"base16\",alphabet:\"0123456789abcdef\",bitsPerChar:4}),Kr=k({prefix:\"F\",name:\"base16upper\",alphabet:\"0123456789ABCDEF\",bitsPerChar:4});var Wr=Object.freeze({__proto__:null,base16:Jr,base16upper:Kr});const Xr=k({prefix:\"b\",name:\"base32\",alphabet:\"abcdefghijklmnopqrstuvwxyz234567\",bitsPerChar:5}),Pr=k({prefix:\"B\",name:\"base32upper\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",bitsPerChar:5}),Qr=k({prefix:\"c\",name:\"base32pad\",alphabet:\"abcdefghijklmnopqrstuvwxyz234567=\",bitsPerChar:5}),to=k({prefix:\"C\",name:\"base32padupper\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=\",bitsPerChar:5}),eo=k({prefix:\"v\",name:\"base32hex\",alphabet:\"0123456789abcdefghijklmnopqrstuv\",bitsPerChar:5}),no=k({prefix:\"V\",name:\"base32hexupper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUV\",bitsPerChar:5}),ro=k({prefix:\"t\",name:\"base32hexpad\",alphabet:\"0123456789abcdefghijklmnopqrstuv=\",bitsPerChar:5}),oo=k({prefix:\"T\",name:\"base32hexpadupper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUV=\",bitsPerChar:5}),so=k({prefix:\"h\",name:\"base32z\",alphabet:\"ybndrfg8ejkmcpqxot1uwisza345h769\",bitsPerChar:5});var io=Object.freeze({__proto__:null,base32:Xr,base32upper:Pr,base32pad:Qr,base32padupper:to,base32hex:eo,base32hexupper:no,base32hexpad:ro,base32hexpadupper:oo,base32z:so});const uo=ht({prefix:\"k\",name:\"base36\",alphabet:\"0123456789abcdefghijklmnopqrstuvwxyz\"}),co=ht({prefix:\"K\",name:\"base36upper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"});var ao=Object.freeze({__proto__:null,base36:uo,base36upper:co});const fo=ht({name:\"base58btc\",prefix:\"z\",alphabet:\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\"}),Do=ht({name:\"base58flickr\",prefix:\"Z\",alphabet:\"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\"});var ho=Object.freeze({__proto__:null,base58btc:fo,base58flickr:Do});const lo=k({prefix:\"m\",name:\"base64\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",bitsPerChar:6}),bo=k({prefix:\"M\",name:\"base64pad\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",bitsPerChar:6}),po=k({prefix:\"u\",name:\"base64url\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\",bitsPerChar:6}),wo=k({prefix:\"U\",name:\"base64urlpad\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\",bitsPerChar:6});var Eo=Object.freeze({__proto__:null,base64:lo,base64pad:bo,base64url:po,base64urlpad:wo});const Me=Array.from(\"\\u{1F680}\\u{1FA90}\\u2604\\u{1F6F0}\\u{1F30C}\\u{1F311}\\u{1F312}\\u{1F313}\\u{1F314}\\u{1F315}\\u{1F316}\\u{1F317}\\u{1F318}\\u{1F30D}\\u{1F30F}\\u{1F30E}\\u{1F409}\\u2600\\u{1F4BB}\\u{1F5A5}\\u{1F4BE}\\u{1F4BF}\\u{1F602}\\u2764\\u{1F60D}\\u{1F923}\\u{1F60A}\\u{1F64F}\\u{1F495}\\u{1F62D}\\u{1F618}\\u{1F44D}\\u{1F605}\\u{1F44F}\\u{1F601}\\u{1F525}\\u{1F970}\\u{1F494}\\u{1F496}\\u{1F499}\\u{1F622}\\u{1F914}\\u{1F606}\\u{1F644}\\u{1F4AA}\\u{1F609}\\u263A\\u{1F44C}\\u{1F917}\\u{1F49C}\\u{1F614}\\u{1F60E}\\u{1F607}\\u{1F339}\\u{1F926}\\u{1F389}\\u{1F49E}\\u270C\\u2728\\u{1F937}\\u{1F631}\\u{1F60C}\\u{1F338}\\u{1F64C}\\u{1F60B}\\u{1F497}\\u{1F49A}\\u{1F60F}\\u{1F49B}\\u{1F642}\\u{1F493}\\u{1F929}\\u{1F604}\\u{1F600}\\u{1F5A4}\\u{1F603}\\u{1F4AF}\\u{1F648}\\u{1F447}\\u{1F3B6}\\u{1F612}\\u{1F92D}\\u2763\\u{1F61C}\\u{1F48B}\\u{1F440}\\u{1F62A}\\u{1F611}\\u{1F4A5}\\u{1F64B}\\u{1F61E}\\u{1F629}\\u{1F621}\\u{1F92A}\\u{1F44A}\\u{1F973}\\u{1F625}\\u{1F924}\\u{1F449}\\u{1F483}\\u{1F633}\\u270B\\u{1F61A}\\u{1F61D}\\u{1F634}\\u{1F31F}\\u{1F62C}\\u{1F643}\\u{1F340}\\u{1F337}\\u{1F63B}\\u{1F613}\\u2B50\\u2705\\u{1F97A}\\u{1F308}\\u{1F608}\\u{1F918}\\u{1F4A6}\\u2714\\u{1F623}\\u{1F3C3}\\u{1F490}\\u2639\\u{1F38A}\\u{1F498}\\u{1F620}\\u261D\\u{1F615}\\u{1F33A}\\u{1F382}\\u{1F33B}\\u{1F610}\\u{1F595}\\u{1F49D}\\u{1F64A}\\u{1F639}\\u{1F5E3}\\u{1F4AB}\\u{1F480}\\u{1F451}\\u{1F3B5}\\u{1F91E}\\u{1F61B}\\u{1F534}\\u{1F624}\\u{1F33C}\\u{1F62B}\\u26BD\\u{1F919}\\u2615\\u{1F3C6}\\u{1F92B}\\u{1F448}\\u{1F62E}\\u{1F646}\\u{1F37B}\\u{1F343}\\u{1F436}\\u{1F481}\\u{1F632}\\u{1F33F}\\u{1F9E1}\\u{1F381}\\u26A1\\u{1F31E}\\u{1F388}\\u274C\\u270A\\u{1F44B}\\u{1F630}\\u{1F928}\\u{1F636}\\u{1F91D}\\u{1F6B6}\\u{1F4B0}\\u{1F353}\\u{1F4A2}\\u{1F91F}\\u{1F641}\\u{1F6A8}\\u{1F4A8}\\u{1F92C}\\u2708\\u{1F380}\\u{1F37A}\\u{1F913}\\u{1F619}\\u{1F49F}\\u{1F331}\\u{1F616}\\u{1F476}\\u{1F974}\\u25B6\\u27A1\\u2753\\u{1F48E}\\u{1F4B8}\\u2B07\\u{1F628}\\u{1F31A}\\u{1F98B}\\u{1F637}\\u{1F57A}\\u26A0\\u{1F645}\\u{1F61F}\\u{1F635}\\u{1F44E}\\u{1F932}\\u{1F920}\\u{1F927}\\u{1F4CC}\\u{1F535}\\u{1F485}\\u{1F9D0}\\u{1F43E}\\u{1F352}\\u{1F617}\\u{1F911}\\u{1F30A}\\u{1F92F}\\u{1F437}\\u260E\\u{1F4A7}\\u{1F62F}\\u{1F486}\\u{1F446}\\u{1F3A4}\\u{1F647}\\u{1F351}\\u2744\\u{1F334}\\u{1F4A3}\\u{1F438}\\u{1F48C}\\u{1F4CD}\\u{1F940}\\u{1F922}\\u{1F445}\\u{1F4A1}\\u{1F4A9}\\u{1F450}\\u{1F4F8}\\u{1F47B}\\u{1F910}\\u{1F92E}\\u{1F3BC}\\u{1F975}\\u{1F6A9}\\u{1F34E}\\u{1F34A}\\u{1F47C}\\u{1F48D}\\u{1F4E3}\\u{1F942}\"),go=Me.reduce((t,e,n)=>(t[n]=e,t),[]),yo=Me.reduce((t,e,n)=>(t[e.codePointAt(0)]=n,t),[]);function xo(t){return t.reduce((e,n)=>(e+=go[n],e),\"\")}function Bo(t){const e=[];for(const n of t){const r=yo[n.codePointAt(0)];if(r===void 0)throw new Error(`Non-base256emoji character: ${n}`);e.push(r)}return new Uint8Array(e)}const Co=Bt({prefix:\"\\u{1F680}\",name:\"base256emoji\",encode:xo,decode:Bo});var Ao=Object.freeze({__proto__:null,base256emoji:Co}),mo=$e,qe=128,_o=127,So=~_o,vo=Math.pow(2,31);function $e(t,e,n){e=e||[],n=n||0;for(var r=n;t>=vo;)e[n++]=t&255|qe,t/=128;for(;t&So;)e[n++]=t&255|qe,t>>>=7;return e[n]=t|0,$e.bytes=n-r+1,e}var Io=Pt,Uo=128,ke=127;function Pt(t,r){var n=0,r=r||0,o=0,s=r,a,u=t.length;do{if(s>=u)throw Pt.bytes=0,new RangeError(\"Could not decode varint\");a=t[s++],n+=o<28?(a&ke)<=Uo);return Pt.bytes=s-r,n}var To=Math.pow(2,7),Fo=Math.pow(2,14),No=Math.pow(2,21),Lo=Math.pow(2,28),Oo=Math.pow(2,35),Ho=Math.pow(2,42),zo=Math.pow(2,49),Mo=Math.pow(2,56),qo=Math.pow(2,63),$o=function(t){return t(Re.encode(t,e,n),e),Ze=t=>Re.encodingLength(t),Qt=(t,e)=>{const n=e.byteLength,r=Ze(t),o=r+Ze(n),s=new Uint8Array(o+n);return je(t,s,0),je(n,s,r),s.set(e,o),new Ro(t,n,e,s)};class Ro{constructor(e,n,r,o){this.code=e,this.size=n,this.digest=r,this.bytes=o}}const Ge=({name:t,code:e,encode:n})=>new jo(t,e,n);class jo{constructor(e,n,r){this.name=e,this.code=n,this.encode=r}digest(e){if(e instanceof Uint8Array){const n=this.encode(e);return n instanceof Uint8Array?Qt(this.code,n):n.then(r=>Qt(this.code,r))}else throw Error(\"Unknown type, must be binary type\")}}const Ve=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),Zo=Ge({name:\"sha2-256\",code:18,encode:Ve(\"SHA-256\")}),Go=Ge({name:\"sha2-512\",code:19,encode:Ve(\"SHA-512\")});var Vo=Object.freeze({__proto__:null,sha256:Zo,sha512:Go});const Ye=0,Yo=\"identity\",Je=He,Jo=t=>Qt(Ye,Je(t)),Ko={code:Ye,name:Yo,encode:Je,digest:Jo};var Wo=Object.freeze({__proto__:null,identity:Ko});new TextEncoder,new TextDecoder;const Ke={...kr,...jr,...Gr,...Yr,...Wr,...io,...ao,...ho,...Eo,...Ao};({...Vo,...Wo});function We(t,e,n,r){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:n},decoder:{decode:r}}}const Xe=We(\"utf8\",\"u\",t=>\"u\"+new TextDecoder(\"utf8\").decode(t),t=>new TextEncoder().encode(t.substring(1))),te=We(\"ascii\",\"a\",t=>{let e=\"a\";for(let n=0;n{t=t.substring(1);const e=Le(t.length);for(let n=0;n -1) {\n const href = link.getAttribute(\"href\");\n if (href) {\n if (href.toLowerCase().indexOf(\"https:\") === -1 &&\n href.toLowerCase().indexOf(\"http:\") === -1 &&\n href.indexOf(\"//\") !== 0) {\n let absoluteHref = loc.protocol + \"//\" + loc.host;\n if (href.indexOf(\"/\") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split(\"/\");\n path.pop();\n const finalPath = path.join(\"/\");\n absoluteHref += finalPath + \"/\" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf(\"//\") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName(\"meta\");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = [\"itemprop\", \"property\", \"name\"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute(\"content\");\n if (content) {\n return content;\n }\n }\n }\n return \"\";\n }\n function getName() {\n let name = getWindowMetadataOfAny(\"name\", \"og:site_name\", \"og:title\", \"twitter:title\");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny(\"description\", \"og:description\", \"twitter:description\", \"keywords\");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map","export function isHex(value, { strict = true } = {}) {\n if (!value)\n return false;\n if (typeof value !== 'string')\n return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n if (isHex(value, { strict: false }))\n return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n//# sourceMappingURL=size.js.map","export const version = '2.31.0';\n//# sourceMappingURL=version.js.map","import { version } from './version.js';\nlet errorConfig = {\n getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`\n : undefined,\n version: `viem@${version}`,\n};\nexport function setErrorConfig(config) {\n errorConfig = config;\n}\nexport class BaseError extends Error {\n constructor(shortMessage, args = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.details;\n if (args.cause?.message)\n return args.cause.message;\n return args.details;\n })();\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n');\n super(message, args.cause ? { cause: args.cause } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BaseError'\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = version;\n }\n walk(fn) {\n return walk(this, fn);\n }\n}\nfunction walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined)\n return walk(err.cause, fn);\n return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, { name: 'SliceOffsetOutOfBoundsError' });\n }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, { name: 'SizeExceedsPaddingSizeError' });\n }\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, { name: 'InvalidBytesLengthError' });\n }\n}\n//# sourceMappingURL=data.js.map","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size });\n return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n if (size === null)\n return hex_;\n const hex = hex_.replace('0x', '');\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n });\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n if (size === null)\n return bytes;\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({ max, min, signed, size, value, }) {\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: 'IntegerOutOfRangeError' });\n }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes) {\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: 'InvalidBytesBooleanError',\n });\n }\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex) {\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, { name: 'InvalidHexBooleanError' });\n }\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value) {\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, { name: 'InvalidHexValueError' });\n }\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: 'SizeOverflowError' });\n }\n}\n//# sourceMappingURL=encoding.js.map","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return hexToNumber(hex, opts);\n if (to === 'bigint')\n return hexToBigInt(hex, opts);\n if (to === 'string')\n return hexToString(hex, opts);\n if (to === 'boolean')\n return hexToBool(hex, opts);\n return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n const { signed } = opts;\n if (opts.size)\n assertSize(hex, { size: opts.size });\n const value = BigInt(hex);\n if (!signed)\n return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n if (value <= max)\n return value;\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = trim(hex);\n }\n if (trim(hex) === '0x00')\n return false;\n if (trim(hex) === '0x01')\n return true;\n throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n let bytes = hexToBytes(hex);\n if (opts.size) {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts);\n if (typeof value === 'string') {\n return stringToHex(value, opts);\n }\n if (typeof value === 'boolean')\n return boolToHex(value, opts);\n return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n let string = '';\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]];\n }\n const hex = `0x${string}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { dir: 'right', size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n const { signed, size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed)\n maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n else\n maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n }\n else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n }\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : '';\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n });\n }\n const hex = `0x${(signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value).toString(16)}`;\n if (size)\n return pad(hex, { size });\n return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n const value = encoder.encode(value_);\n return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","import { BaseError } from '../../errors/base.js';\nimport { isHex } from '../data/isHex.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nimport { numberToHex, } from './toHex.js';\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string, hex value, bigint, number or boolean to a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes\n * - Example: https://viem.sh/docs/utilities/toBytes#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes('Hello world')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { toBytes } from 'viem'\n * const data = toBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function toBytes(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToBytes(value, opts);\n if (typeof value === 'boolean')\n return boolToBytes(value, opts);\n if (isHex(value))\n return hexToBytes(value, opts);\n return stringToBytes(value, opts);\n}\n/**\n * Encodes a boolean into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#booltobytes\n *\n * @param value Boolean value to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true)\n * // Uint8Array([1])\n *\n * @example\n * import { boolToBytes } from 'viem'\n * const data = boolToBytes(true, { size: 32 })\n * // Uint8Array([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])\n */\nexport function boolToBytes(value, opts = {}) {\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { size: opts.size });\n }\n return bytes;\n}\n// We use very optimized technique to convert hex string to byte array\nconst charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n};\nfunction charCodeToBase16(char) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero;\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10);\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10);\n return undefined;\n}\n/**\n * Encodes a hex string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#hextobytes\n *\n * @param hex Hex string to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n *\n * @example\n * import { hexToBytes } from 'viem'\n * const data = hexToBytes('0x48656c6c6f20776f726c6421', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function hexToBytes(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = pad(hex, { dir: 'right', size: opts.size });\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\n/**\n * Encodes a number into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#numbertobytes\n *\n * @param value Number to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420)\n * // Uint8Array([1, 164])\n *\n * @example\n * import { numberToBytes } from 'viem'\n * const data = numberToBytes(420, { size: 4 })\n * // Uint8Array([0, 0, 1, 164])\n */\nexport function numberToBytes(value, opts) {\n const hex = numberToHex(value, opts);\n return hexToBytes(hex);\n}\n/**\n * Encodes a UTF-8 string into a byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/toBytes#stringtobytes\n *\n * @param value String to encode.\n * @param opts Options.\n * @returns Byte array value.\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!')\n * // Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n *\n * @example\n * import { stringToBytes } from 'viem'\n * const data = stringToBytes('Hello world!', { size: 32 })\n * // Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n */\nexport function stringToBytes(value, opts = {}) {\n const bytes = encoder.encode(value);\n if (typeof opts.size === 'number') {\n assertSize(bytes, { size: opts.size });\n return pad(bytes, { dir: 'right', size: opts.size });\n }\n return bytes;\n}\n//# sourceMappingURL=toBytes.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n this.enableXOF = false;\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n clone() {\n return this._cloneInto();\n }\n keccak() {\n swap32IfBE(this.state32);\n keccakP(this.state32, this.rounds);\n swap32IfBE(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n aoutput(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n clean(this.state);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","import { keccak_256 } from '@noble/hashes/sha3';\nimport { isHex } from '../data/isHex.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { toHex } from '../encoding/toHex.js';\nexport function keccak256(value, to_) {\n const to = to_ || 'hex';\n const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);\n if (to === 'bytes')\n return bytes;\n return toHex(bytes);\n}\n//# sourceMappingURL=keccak256.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n get(key) {\n const value = super.get(key);\n if (super.has(key) && value !== undefined) {\n this.delete(key);\n super.set(key, value);\n }\n return value;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value;\n if (firstKey)\n this.delete(firstKey);\n }\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","import { InvalidAddressError } from '../../errors/address.js';\nimport { stringToBytes, } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { LruMap } from '../lru.js';\nimport { isAddress } from './isAddress.js';\nconst checksumAddressCache = /*#__PURE__*/ new LruMap(8192);\nexport function checksumAddress(address_, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (checksumAddressCache.has(`${address_}.${chainId}`))\n return checksumAddressCache.get(`${address_}.${chainId}`);\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak256(stringToBytes(hexAddress), 'bytes');\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n const result = `0x${address.join('')}`;\n checksumAddressCache.set(`${address_}.${chainId}`, result);\n return result;\n}\nexport function getAddress(address, \n/**\n * Warning: EIP-1191 checksum addresses are generally not backwards compatible with the\n * wider Ethereum ecosystem, meaning it will break when validated against an application/tool\n * that relies on EIP-55 checksum encoding (checksum without chainId).\n *\n * It is highly recommended to not use this feature unless you\n * know what you are doing.\n *\n * See more: https://github.com/ethereum/EIPs/issues/1121\n */\nchainId) {\n if (!isAddress(address, { strict: false }))\n throw new InvalidAddressError({ address });\n return checksumAddress(address, chainId);\n}\n//# sourceMappingURL=getAddress.js.map","import { checksumAddress, } from '../../utils/address/getAddress.js';\nimport { keccak256, } from '../../utils/hash/keccak256.js';\n/**\n * @description Converts an ECDSA public key to an address.\n *\n * @param publicKey The public key to convert.\n *\n * @returns The address.\n */\nexport function publicKeyToAddress(publicKey) {\n const address = keccak256(`0x${publicKey.substring(4)}`).substring(26);\n return checksumAddress(`0x${address}`);\n}\n//# sourceMappingURL=publicKeyToAddress.js.map","import { isHex } from '../data/isHex.js';\nimport { size } from '../data/size.js';\nimport { hexToBigInt, hexToNumber, } from '../encoding/fromHex.js';\nimport { toHex } from '../encoding/toHex.js';\nexport async function recoverPublicKey({ hash, signature, }) {\n const hashHex = isHex(hash) ? hash : toHex(hash);\n const { secp256k1 } = await import('@noble/curves/secp256k1');\n const signature_ = (() => {\n // typeof signature: `Signature`\n if (typeof signature === 'object' && 'r' in signature && 's' in signature) {\n const { r, s, v, yParity } = signature;\n const yParityOrV = Number(yParity ?? v);\n const recoveryBit = toRecoveryBit(yParityOrV);\n return new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).addRecoveryBit(recoveryBit);\n }\n // typeof signature: `Hex | ByteArray`\n const signatureHex = isHex(signature) ? signature : toHex(signature);\n if (size(signatureHex) !== 65)\n throw new Error('invalid signature length');\n const yParityOrV = hexToNumber(`0x${signatureHex.slice(130)}`);\n const recoveryBit = toRecoveryBit(yParityOrV);\n return secp256k1.Signature.fromCompact(signatureHex.substring(2, 130)).addRecoveryBit(recoveryBit);\n })();\n const publicKey = signature_\n .recoverPublicKey(hashHex.substring(2))\n .toHex(false);\n return `0x${publicKey}`;\n}\nfunction toRecoveryBit(yParityOrV) {\n if (yParityOrV === 0 || yParityOrV === 1)\n return yParityOrV;\n if (yParityOrV === 27)\n return 0;\n if (yParityOrV === 28)\n return 1;\n throw new Error('Invalid yParityOrV value');\n}\n//# sourceMappingURL=recoverPublicKey.js.map","import { publicKeyToAddress } from '../../accounts/utils/publicKeyToAddress.js';\nimport { recoverPublicKey } from './recoverPublicKey.js';\nexport async function recoverAddress({ hash, signature, }) {\n return publicKeyToAddress(await recoverPublicKey({ hash, signature }));\n}\n//# sourceMappingURL=recoverAddress.js.map","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n const BASE_MAP = new Uint8Array(256)\n for (let j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i)\n const xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n const BASE = ALPHABET.length\n const LEADER = ALPHABET.charAt(0)\n const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n // eslint-disable-next-line no-empty\n if (source instanceof Uint8Array) { } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n let zeroes = 0\n let length = 0\n let pbegin = 0\n const pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n const b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n let carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n let i = 0\n for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n let it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n let str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n let psz = 0\n // Skip and count leading '1's.\n let zeroes = 0\n let length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n const charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n let carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n let i = 0\n for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n let it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n const vch = new Uint8Array(zeroes + (size - it4))\n let j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n const buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode,\n decodeUnsafe,\n decode\n }\n}\nexport default base\n","import basex from 'base-x';\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport default basex(ALPHABET);\n","export function utf8Count(str) {\n const strLength = str.length;\n let byteLength = 0;\n let pos = 0;\n while (pos < strLength) {\n let value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n byteLength++;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n byteLength += 2;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n const extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n byteLength += 3;\n }\n else {\n // 4-byte\n byteLength += 4;\n }\n }\n }\n return byteLength;\n}\nexport function utf8EncodeJs(str, output, outputOffset) {\n const strLength = str.length;\n let offset = outputOffset;\n let pos = 0;\n while (pos < strLength) {\n let value = str.charCodeAt(pos++);\n if ((value & 0xffffff80) === 0) {\n // 1-byte\n output[offset++] = value;\n continue;\n }\n else if ((value & 0xfffff800) === 0) {\n // 2-bytes\n output[offset++] = ((value >> 6) & 0x1f) | 0xc0;\n }\n else {\n // handle surrogate pair\n if (value >= 0xd800 && value <= 0xdbff) {\n // high surrogate\n if (pos < strLength) {\n const extra = str.charCodeAt(pos);\n if ((extra & 0xfc00) === 0xdc00) {\n ++pos;\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n }\n }\n }\n if ((value & 0xffff0000) === 0) {\n // 3-byte\n output[offset++] = ((value >> 12) & 0x0f) | 0xe0;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n else {\n // 4-byte\n output[offset++] = ((value >> 18) & 0x07) | 0xf0;\n output[offset++] = ((value >> 12) & 0x3f) | 0x80;\n output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n }\n }\n output[offset++] = (value & 0x3f) | 0x80;\n }\n}\n// TextEncoder and TextDecoder are standardized in whatwg encoding:\n// https://encoding.spec.whatwg.org/\n// and available in all the modern browsers:\n// https://caniuse.com/textencoder\n// They are available in Node.js since v12 LTS as well:\n// https://nodejs.org/api/globals.html#textencoder\nconst sharedTextEncoder = new TextEncoder();\n// This threshold should be determined by benchmarking, which might vary in engines and input data.\n// Run `npx ts-node benchmark/encode-string.ts` for details.\nconst TEXT_ENCODER_THRESHOLD = 50;\nexport function utf8EncodeTE(str, output, outputOffset) {\n sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nexport function utf8Encode(str, output, outputOffset) {\n if (str.length > TEXT_ENCODER_THRESHOLD) {\n utf8EncodeTE(str, output, outputOffset);\n }\n else {\n utf8EncodeJs(str, output, outputOffset);\n }\n}\nconst CHUNK_SIZE = 4096;\nexport function utf8DecodeJs(bytes, inputOffset, byteLength) {\n let offset = inputOffset;\n const end = offset + byteLength;\n const units = [];\n let result = \"\";\n while (offset < end) {\n const byte1 = bytes[offset++];\n if ((byte1 & 0x80) === 0) {\n // 1 byte\n units.push(byte1);\n }\n else if ((byte1 & 0xe0) === 0xc0) {\n // 2 bytes\n const byte2 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 6) | byte2);\n }\n else if ((byte1 & 0xf0) === 0xe0) {\n // 3 bytes\n const byte2 = bytes[offset++] & 0x3f;\n const byte3 = bytes[offset++] & 0x3f;\n units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n }\n else if ((byte1 & 0xf8) === 0xf0) {\n // 4 bytes\n const byte2 = bytes[offset++] & 0x3f;\n const byte3 = bytes[offset++] & 0x3f;\n const byte4 = bytes[offset++] & 0x3f;\n let unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n if (unit > 0xffff) {\n unit -= 0x10000;\n units.push(((unit >>> 10) & 0x3ff) | 0xd800);\n unit = 0xdc00 | (unit & 0x3ff);\n }\n units.push(unit);\n }\n else {\n units.push(byte1);\n }\n if (units.length >= CHUNK_SIZE) {\n result += String.fromCharCode(...units);\n units.length = 0;\n }\n }\n if (units.length > 0) {\n result += String.fromCharCode(...units);\n }\n return result;\n}\nconst sharedTextDecoder = new TextDecoder();\n// This threshold should be determined by benchmarking, which might vary in engines and input data.\n// Run `npx ts-node benchmark/decode-string.ts` for details.\nconst TEXT_DECODER_THRESHOLD = 200;\nexport function utf8DecodeTD(bytes, inputOffset, byteLength) {\n const stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);\n return sharedTextDecoder.decode(stringBytes);\n}\nexport function utf8Decode(bytes, inputOffset, byteLength) {\n if (byteLength > TEXT_DECODER_THRESHOLD) {\n return utf8DecodeTD(bytes, inputOffset, byteLength);\n }\n else {\n return utf8DecodeJs(bytes, inputOffset, byteLength);\n }\n}\n//# sourceMappingURL=utf8.mjs.map","/**\n * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n */\nexport class ExtData {\n constructor(type, data) {\n this.type = type;\n this.data = data;\n }\n}\n//# sourceMappingURL=ExtData.mjs.map","export class DecodeError extends Error {\n constructor(message) {\n super(message);\n // fix the prototype chain in a cross-platform way\n const proto = Object.create(DecodeError.prototype);\n Object.setPrototypeOf(this, proto);\n Object.defineProperty(this, \"name\", {\n configurable: true,\n enumerable: false,\n value: DecodeError.name,\n });\n }\n}\n//# sourceMappingURL=DecodeError.mjs.map","// Integer Utility\nexport const UINT32_MAX = 4294967295;\n// DataView extension to handle int64 / uint64,\n// where the actual range is 53-bits integer (a.k.a. safe integer)\nexport function setUint64(view, offset, value) {\n const high = value / 4294967296;\n const low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function setInt64(view, offset, value) {\n const high = Math.floor(value / 4294967296);\n const low = value; // high bits are truncated by DataView\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n}\nexport function getInt64(view, offset) {\n const high = view.getInt32(offset);\n const low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\nexport function getUint64(view, offset) {\n const high = view.getUint32(offset);\n const low = view.getUint32(offset + 4);\n return high * 4294967296 + low;\n}\n//# sourceMappingURL=int.mjs.map","// https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type\nimport { DecodeError } from \"./DecodeError.mjs\";\nimport { getInt64, setInt64 } from \"./utils/int.mjs\";\nexport const EXT_TIMESTAMP = -1;\nconst TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int\nconst TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int\nexport function encodeTimeSpecToTimestamp({ sec, nsec }) {\n if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n // Here sec >= 0 && nsec >= 0\n if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n // timestamp 32 = { sec32 (unsigned) }\n const rv = new Uint8Array(4);\n const view = new DataView(rv.buffer);\n view.setUint32(0, sec);\n return rv;\n }\n else {\n // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }\n const secHigh = sec / 0x100000000;\n const secLow = sec & 0xffffffff;\n const rv = new Uint8Array(8);\n const view = new DataView(rv.buffer);\n // nsec30 | secHigh2\n view.setUint32(0, (nsec << 2) | (secHigh & 0x3));\n // secLow32\n view.setUint32(4, secLow);\n return rv;\n }\n }\n else {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n const rv = new Uint8Array(12);\n const view = new DataView(rv.buffer);\n view.setUint32(0, nsec);\n setInt64(view, 4, sec);\n return rv;\n }\n}\nexport function encodeDateToTimeSpec(date) {\n const msec = date.getTime();\n const sec = Math.floor(msec / 1e3);\n const nsec = (msec - sec * 1e3) * 1e6;\n // Normalizes { sec, nsec } to ensure nsec is unsigned.\n const nsecInSec = Math.floor(nsec / 1e9);\n return {\n sec: sec + nsecInSec,\n nsec: nsec - nsecInSec * 1e9,\n };\n}\nexport function encodeTimestampExtension(object) {\n if (object instanceof Date) {\n const timeSpec = encodeDateToTimeSpec(object);\n return encodeTimeSpecToTimestamp(timeSpec);\n }\n else {\n return null;\n }\n}\nexport function decodeTimestampToTimeSpec(data) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n // data may be 32, 64, or 96 bits\n switch (data.byteLength) {\n case 4: {\n // timestamp 32 = { sec32 }\n const sec = view.getUint32(0);\n const nsec = 0;\n return { sec, nsec };\n }\n case 8: {\n // timestamp 64 = { nsec30, sec34 }\n const nsec30AndSecHigh2 = view.getUint32(0);\n const secLow32 = view.getUint32(4);\n const sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;\n const nsec = nsec30AndSecHigh2 >>> 2;\n return { sec, nsec };\n }\n case 12: {\n // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n const sec = getInt64(view, 4);\n const nsec = view.getUint32(0);\n return { sec, nsec };\n }\n default:\n throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${data.length}`);\n }\n}\nexport function decodeTimestampExtension(data) {\n const timeSpec = decodeTimestampToTimeSpec(data);\n return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nexport const timestampExtension = {\n type: EXT_TIMESTAMP,\n encode: encodeTimestampExtension,\n decode: decodeTimestampExtension,\n};\n//# sourceMappingURL=timestamp.mjs.map","// ExtensionCodec to handle MessagePack extensions\nimport { ExtData } from \"./ExtData.mjs\";\nimport { timestampExtension } from \"./timestamp.mjs\";\nexport class ExtensionCodec {\n constructor() {\n // built-in extensions\n this.builtInEncoders = [];\n this.builtInDecoders = [];\n // custom extensions\n this.encoders = [];\n this.decoders = [];\n this.register(timestampExtension);\n }\n register({ type, encode, decode, }) {\n if (type >= 0) {\n // custom extensions\n this.encoders[type] = encode;\n this.decoders[type] = decode;\n }\n else {\n // built-in extensions\n const index = -1 - type;\n this.builtInEncoders[index] = encode;\n this.builtInDecoders[index] = decode;\n }\n }\n tryToEncode(object, context) {\n // built-in extensions\n for (let i = 0; i < this.builtInEncoders.length; i++) {\n const encodeExt = this.builtInEncoders[i];\n if (encodeExt != null) {\n const data = encodeExt(object, context);\n if (data != null) {\n const type = -1 - i;\n return new ExtData(type, data);\n }\n }\n }\n // custom extensions\n for (let i = 0; i < this.encoders.length; i++) {\n const encodeExt = this.encoders[i];\n if (encodeExt != null) {\n const data = encodeExt(object, context);\n if (data != null) {\n const type = i;\n return new ExtData(type, data);\n }\n }\n }\n if (object instanceof ExtData) {\n // to keep ExtData as is\n return object;\n }\n return null;\n }\n decode(data, type, context) {\n const decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n if (decodeExt) {\n return decodeExt(data, type, context);\n }\n else {\n // decode() does not fail, returns ExtData instead.\n return new ExtData(type, data);\n }\n }\n}\nExtensionCodec.defaultCodec = new ExtensionCodec();\n//# sourceMappingURL=ExtensionCodec.mjs.map","function isArrayBufferLike(buffer) {\n return (buffer instanceof ArrayBuffer || (typeof SharedArrayBuffer !== \"undefined\" && buffer instanceof SharedArrayBuffer));\n}\nexport function ensureUint8Array(buffer) {\n if (buffer instanceof Uint8Array) {\n return buffer;\n }\n else if (ArrayBuffer.isView(buffer)) {\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n else if (isArrayBufferLike(buffer)) {\n return new Uint8Array(buffer);\n }\n else {\n // ArrayLike\n return Uint8Array.from(buffer);\n }\n}\n//# sourceMappingURL=typedArrays.mjs.map","import { utf8Count, utf8Encode } from \"./utils/utf8.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { setInt64, setUint64 } from \"./utils/int.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nexport const DEFAULT_MAX_DEPTH = 100;\nexport const DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nexport class Encoder {\n constructor(options) {\n this.entered = false;\n this.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n this.context = options?.context; // needs a type assertion because EncoderOptions has no context property when ContextType is undefined\n this.useBigInt64 = options?.useBigInt64 ?? false;\n this.maxDepth = options?.maxDepth ?? DEFAULT_MAX_DEPTH;\n this.initialBufferSize = options?.initialBufferSize ?? DEFAULT_INITIAL_BUFFER_SIZE;\n this.sortKeys = options?.sortKeys ?? false;\n this.forceFloat32 = options?.forceFloat32 ?? false;\n this.ignoreUndefined = options?.ignoreUndefined ?? false;\n this.forceIntegerToFloat = options?.forceIntegerToFloat ?? false;\n this.pos = 0;\n this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n this.bytes = new Uint8Array(this.view.buffer);\n }\n clone() {\n // Because of slightly special argument `context`,\n // type assertion is needed.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Encoder({\n extensionCodec: this.extensionCodec,\n context: this.context,\n useBigInt64: this.useBigInt64,\n maxDepth: this.maxDepth,\n initialBufferSize: this.initialBufferSize,\n sortKeys: this.sortKeys,\n forceFloat32: this.forceFloat32,\n ignoreUndefined: this.ignoreUndefined,\n forceIntegerToFloat: this.forceIntegerToFloat,\n });\n }\n reinitializeState() {\n this.pos = 0;\n }\n /**\n * This is almost equivalent to {@link Encoder#encode}, but it returns an reference of the encoder's internal buffer and thus much faster than {@link Encoder#encode}.\n *\n * @returns Encodes the object and returns a shared reference the encoder's internal buffer.\n */\n encodeSharedRef(object) {\n if (this.entered) {\n const instance = this.clone();\n return instance.encodeSharedRef(object);\n }\n try {\n this.entered = true;\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.subarray(0, this.pos);\n }\n finally {\n this.entered = false;\n }\n }\n /**\n * @returns Encodes the object and returns a copy of the encoder's internal buffer.\n */\n encode(object) {\n if (this.entered) {\n const instance = this.clone();\n return instance.encode(object);\n }\n try {\n this.entered = true;\n this.reinitializeState();\n this.doEncode(object, 1);\n return this.bytes.slice(0, this.pos);\n }\n finally {\n this.entered = false;\n }\n }\n doEncode(object, depth) {\n if (depth > this.maxDepth) {\n throw new Error(`Too deep objects in depth ${depth}`);\n }\n if (object == null) {\n this.encodeNil();\n }\n else if (typeof object === \"boolean\") {\n this.encodeBoolean(object);\n }\n else if (typeof object === \"number\") {\n if (!this.forceIntegerToFloat) {\n this.encodeNumber(object);\n }\n else {\n this.encodeNumberAsFloat(object);\n }\n }\n else if (typeof object === \"string\") {\n this.encodeString(object);\n }\n else if (this.useBigInt64 && typeof object === \"bigint\") {\n this.encodeBigInt64(object);\n }\n else {\n this.encodeObject(object, depth);\n }\n }\n ensureBufferSizeToWrite(sizeToWrite) {\n const requiredSize = this.pos + sizeToWrite;\n if (this.view.byteLength < requiredSize) {\n this.resizeBuffer(requiredSize * 2);\n }\n }\n resizeBuffer(newSize) {\n const newBuffer = new ArrayBuffer(newSize);\n const newBytes = new Uint8Array(newBuffer);\n const newView = new DataView(newBuffer);\n newBytes.set(this.bytes);\n this.view = newView;\n this.bytes = newBytes;\n }\n encodeNil() {\n this.writeU8(0xc0);\n }\n encodeBoolean(object) {\n if (object === false) {\n this.writeU8(0xc2);\n }\n else {\n this.writeU8(0xc3);\n }\n }\n encodeNumber(object) {\n if (!this.forceIntegerToFloat && Number.isSafeInteger(object)) {\n if (object >= 0) {\n if (object < 0x80) {\n // positive fixint\n this.writeU8(object);\n }\n else if (object < 0x100) {\n // uint 8\n this.writeU8(0xcc);\n this.writeU8(object);\n }\n else if (object < 0x10000) {\n // uint 16\n this.writeU8(0xcd);\n this.writeU16(object);\n }\n else if (object < 0x100000000) {\n // uint 32\n this.writeU8(0xce);\n this.writeU32(object);\n }\n else if (!this.useBigInt64) {\n // uint 64\n this.writeU8(0xcf);\n this.writeU64(object);\n }\n else {\n this.encodeNumberAsFloat(object);\n }\n }\n else {\n if (object >= -0x20) {\n // negative fixint\n this.writeU8(0xe0 | (object + 0x20));\n }\n else if (object >= -0x80) {\n // int 8\n this.writeU8(0xd0);\n this.writeI8(object);\n }\n else if (object >= -0x8000) {\n // int 16\n this.writeU8(0xd1);\n this.writeI16(object);\n }\n else if (object >= -0x80000000) {\n // int 32\n this.writeU8(0xd2);\n this.writeI32(object);\n }\n else if (!this.useBigInt64) {\n // int 64\n this.writeU8(0xd3);\n this.writeI64(object);\n }\n else {\n this.encodeNumberAsFloat(object);\n }\n }\n }\n else {\n this.encodeNumberAsFloat(object);\n }\n }\n encodeNumberAsFloat(object) {\n if (this.forceFloat32) {\n // float 32\n this.writeU8(0xca);\n this.writeF32(object);\n }\n else {\n // float 64\n this.writeU8(0xcb);\n this.writeF64(object);\n }\n }\n encodeBigInt64(object) {\n if (object >= BigInt(0)) {\n // uint 64\n this.writeU8(0xcf);\n this.writeBigUint64(object);\n }\n else {\n // int 64\n this.writeU8(0xd3);\n this.writeBigInt64(object);\n }\n }\n writeStringHeader(byteLength) {\n if (byteLength < 32) {\n // fixstr\n this.writeU8(0xa0 + byteLength);\n }\n else if (byteLength < 0x100) {\n // str 8\n this.writeU8(0xd9);\n this.writeU8(byteLength);\n }\n else if (byteLength < 0x10000) {\n // str 16\n this.writeU8(0xda);\n this.writeU16(byteLength);\n }\n else if (byteLength < 0x100000000) {\n // str 32\n this.writeU8(0xdb);\n this.writeU32(byteLength);\n }\n else {\n throw new Error(`Too long string: ${byteLength} bytes in UTF-8`);\n }\n }\n encodeString(object) {\n const maxHeaderSize = 1 + 4;\n const byteLength = utf8Count(object);\n this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n this.writeStringHeader(byteLength);\n utf8Encode(object, this.bytes, this.pos);\n this.pos += byteLength;\n }\n encodeObject(object, depth) {\n // try to encode objects with custom codec first of non-primitives\n const ext = this.extensionCodec.tryToEncode(object, this.context);\n if (ext != null) {\n this.encodeExtension(ext);\n }\n else if (Array.isArray(object)) {\n this.encodeArray(object, depth);\n }\n else if (ArrayBuffer.isView(object)) {\n this.encodeBinary(object);\n }\n else if (typeof object === \"object\") {\n this.encodeMap(object, depth);\n }\n else {\n // symbol, function and other special object come here unless extensionCodec handles them.\n throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(object)}`);\n }\n }\n encodeBinary(object) {\n const size = object.byteLength;\n if (size < 0x100) {\n // bin 8\n this.writeU8(0xc4);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // bin 16\n this.writeU8(0xc5);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // bin 32\n this.writeU8(0xc6);\n this.writeU32(size);\n }\n else {\n throw new Error(`Too large binary: ${size}`);\n }\n const bytes = ensureUint8Array(object);\n this.writeU8a(bytes);\n }\n encodeArray(object, depth) {\n const size = object.length;\n if (size < 16) {\n // fixarray\n this.writeU8(0x90 + size);\n }\n else if (size < 0x10000) {\n // array 16\n this.writeU8(0xdc);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // array 32\n this.writeU8(0xdd);\n this.writeU32(size);\n }\n else {\n throw new Error(`Too large array: ${size}`);\n }\n for (const item of object) {\n this.doEncode(item, depth + 1);\n }\n }\n countWithoutUndefined(object, keys) {\n let count = 0;\n for (const key of keys) {\n if (object[key] !== undefined) {\n count++;\n }\n }\n return count;\n }\n encodeMap(object, depth) {\n const keys = Object.keys(object);\n if (this.sortKeys) {\n keys.sort();\n }\n const size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n if (size < 16) {\n // fixmap\n this.writeU8(0x80 + size);\n }\n else if (size < 0x10000) {\n // map 16\n this.writeU8(0xde);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // map 32\n this.writeU8(0xdf);\n this.writeU32(size);\n }\n else {\n throw new Error(`Too large map object: ${size}`);\n }\n for (const key of keys) {\n const value = object[key];\n if (!(this.ignoreUndefined && value === undefined)) {\n this.encodeString(key);\n this.doEncode(value, depth + 1);\n }\n }\n }\n encodeExtension(ext) {\n if (typeof ext.data === \"function\") {\n const data = ext.data(this.pos + 6);\n const size = data.length;\n if (size >= 0x100000000) {\n throw new Error(`Too large extension object: ${size}`);\n }\n this.writeU8(0xc9);\n this.writeU32(size);\n this.writeI8(ext.type);\n this.writeU8a(data);\n return;\n }\n const size = ext.data.length;\n if (size === 1) {\n // fixext 1\n this.writeU8(0xd4);\n }\n else if (size === 2) {\n // fixext 2\n this.writeU8(0xd5);\n }\n else if (size === 4) {\n // fixext 4\n this.writeU8(0xd6);\n }\n else if (size === 8) {\n // fixext 8\n this.writeU8(0xd7);\n }\n else if (size === 16) {\n // fixext 16\n this.writeU8(0xd8);\n }\n else if (size < 0x100) {\n // ext 8\n this.writeU8(0xc7);\n this.writeU8(size);\n }\n else if (size < 0x10000) {\n // ext 16\n this.writeU8(0xc8);\n this.writeU16(size);\n }\n else if (size < 0x100000000) {\n // ext 32\n this.writeU8(0xc9);\n this.writeU32(size);\n }\n else {\n throw new Error(`Too large extension object: ${size}`);\n }\n this.writeI8(ext.type);\n this.writeU8a(ext.data);\n }\n writeU8(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setUint8(this.pos, value);\n this.pos++;\n }\n writeU8a(values) {\n const size = values.length;\n this.ensureBufferSizeToWrite(size);\n this.bytes.set(values, this.pos);\n this.pos += size;\n }\n writeI8(value) {\n this.ensureBufferSizeToWrite(1);\n this.view.setInt8(this.pos, value);\n this.pos++;\n }\n writeU16(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setUint16(this.pos, value);\n this.pos += 2;\n }\n writeI16(value) {\n this.ensureBufferSizeToWrite(2);\n this.view.setInt16(this.pos, value);\n this.pos += 2;\n }\n writeU32(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setUint32(this.pos, value);\n this.pos += 4;\n }\n writeI32(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setInt32(this.pos, value);\n this.pos += 4;\n }\n writeF32(value) {\n this.ensureBufferSizeToWrite(4);\n this.view.setFloat32(this.pos, value);\n this.pos += 4;\n }\n writeF64(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setFloat64(this.pos, value);\n this.pos += 8;\n }\n writeU64(value) {\n this.ensureBufferSizeToWrite(8);\n setUint64(this.view, this.pos, value);\n this.pos += 8;\n }\n writeI64(value) {\n this.ensureBufferSizeToWrite(8);\n setInt64(this.view, this.pos, value);\n this.pos += 8;\n }\n writeBigUint64(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigUint64(this.pos, value);\n this.pos += 8;\n }\n writeBigInt64(value) {\n this.ensureBufferSizeToWrite(8);\n this.view.setBigInt64(this.pos, value);\n this.pos += 8;\n }\n}\n//# sourceMappingURL=Encoder.mjs.map","import { Encoder } from \"./Encoder.mjs\";\n/**\n * It encodes `value` in the MessagePack format and\n * returns a byte buffer.\n *\n * The returned buffer is a slice of a larger `ArrayBuffer`, so you have to use its `#byteOffset` and `#byteLength` in order to convert it to another typed arrays including NodeJS `Buffer`.\n */\nexport function encode(value, options) {\n const encoder = new Encoder(options);\n return encoder.encodeSharedRef(value);\n}\n//# sourceMappingURL=encode.mjs.map","export function prettyByte(byte) {\n return `${byte < 0 ? \"-\" : \"\"}0x${Math.abs(byte).toString(16).padStart(2, \"0\")}`;\n}\n//# sourceMappingURL=prettyByte.mjs.map","import { utf8DecodeJs } from \"./utils/utf8.mjs\";\nconst DEFAULT_MAX_KEY_LENGTH = 16;\nconst DEFAULT_MAX_LENGTH_PER_KEY = 16;\nexport class CachedKeyDecoder {\n constructor(maxKeyLength = DEFAULT_MAX_KEY_LENGTH, maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY) {\n this.hit = 0;\n this.miss = 0;\n this.maxKeyLength = maxKeyLength;\n this.maxLengthPerKey = maxLengthPerKey;\n // avoid `new Array(N)`, which makes a sparse array,\n // because a sparse array is typically slower than a non-sparse array.\n this.caches = [];\n for (let i = 0; i < this.maxKeyLength; i++) {\n this.caches.push([]);\n }\n }\n canBeCached(byteLength) {\n return byteLength > 0 && byteLength <= this.maxKeyLength;\n }\n find(bytes, inputOffset, byteLength) {\n const records = this.caches[byteLength - 1];\n FIND_CHUNK: for (const record of records) {\n const recordBytes = record.bytes;\n for (let j = 0; j < byteLength; j++) {\n if (recordBytes[j] !== bytes[inputOffset + j]) {\n continue FIND_CHUNK;\n }\n }\n return record.str;\n }\n return null;\n }\n store(bytes, value) {\n const records = this.caches[bytes.length - 1];\n const record = { bytes, str: value };\n if (records.length >= this.maxLengthPerKey) {\n // `records` are full!\n // Set `record` to an arbitrary position.\n records[(Math.random() * records.length) | 0] = record;\n }\n else {\n records.push(record);\n }\n }\n decode(bytes, inputOffset, byteLength) {\n const cachedValue = this.find(bytes, inputOffset, byteLength);\n if (cachedValue != null) {\n this.hit++;\n return cachedValue;\n }\n this.miss++;\n const str = utf8DecodeJs(bytes, inputOffset, byteLength);\n // Ensure to copy a slice of bytes because the bytes may be a NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.\n const slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);\n this.store(slicedCopyOfBytes, str);\n return str;\n }\n}\n//# sourceMappingURL=CachedKeyDecoder.mjs.map","import { prettyByte } from \"./utils/prettyByte.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { getInt64, getUint64, UINT32_MAX } from \"./utils/int.mjs\";\nimport { utf8Decode } from \"./utils/utf8.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nimport { CachedKeyDecoder } from \"./CachedKeyDecoder.mjs\";\nimport { DecodeError } from \"./DecodeError.mjs\";\nconst STATE_ARRAY = \"array\";\nconst STATE_MAP_KEY = \"map_key\";\nconst STATE_MAP_VALUE = \"map_value\";\nconst mapKeyConverter = (key) => {\n if (typeof key === \"string\" || typeof key === \"number\") {\n return key;\n }\n throw new DecodeError(\"The type of key must be string or number but \" + typeof key);\n};\nclass StackPool {\n constructor() {\n this.stack = [];\n this.stackHeadPosition = -1;\n }\n get length() {\n return this.stackHeadPosition + 1;\n }\n top() {\n return this.stack[this.stackHeadPosition];\n }\n pushArrayState(size) {\n const state = this.getUninitializedStateFromPool();\n state.type = STATE_ARRAY;\n state.position = 0;\n state.size = size;\n state.array = new Array(size);\n }\n pushMapState(size) {\n const state = this.getUninitializedStateFromPool();\n state.type = STATE_MAP_KEY;\n state.readCount = 0;\n state.size = size;\n state.map = {};\n }\n getUninitializedStateFromPool() {\n this.stackHeadPosition++;\n if (this.stackHeadPosition === this.stack.length) {\n const partialState = {\n type: undefined,\n size: 0,\n array: undefined,\n position: 0,\n readCount: 0,\n map: undefined,\n key: null,\n };\n this.stack.push(partialState);\n }\n return this.stack[this.stackHeadPosition];\n }\n release(state) {\n const topStackState = this.stack[this.stackHeadPosition];\n if (topStackState !== state) {\n throw new Error(\"Invalid stack state. Released state is not on top of the stack.\");\n }\n if (state.type === STATE_ARRAY) {\n const partialState = state;\n partialState.size = 0;\n partialState.array = undefined;\n partialState.position = 0;\n partialState.type = undefined;\n }\n if (state.type === STATE_MAP_KEY || state.type === STATE_MAP_VALUE) {\n const partialState = state;\n partialState.size = 0;\n partialState.map = undefined;\n partialState.readCount = 0;\n partialState.type = undefined;\n }\n this.stackHeadPosition--;\n }\n reset() {\n this.stack.length = 0;\n this.stackHeadPosition = -1;\n }\n}\nconst HEAD_BYTE_REQUIRED = -1;\nconst EMPTY_VIEW = new DataView(new ArrayBuffer(0));\nconst EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);\ntry {\n // IE11: The spec says it should throw RangeError,\n // IE11: but in IE11 it throws TypeError.\n EMPTY_VIEW.getInt8(0);\n}\ncatch (e) {\n if (!(e instanceof RangeError)) {\n throw new Error(\"This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access\");\n }\n}\nconst MORE_DATA = new RangeError(\"Insufficient data\");\nconst sharedCachedKeyDecoder = new CachedKeyDecoder();\nexport class Decoder {\n constructor(options) {\n this.totalPos = 0;\n this.pos = 0;\n this.view = EMPTY_VIEW;\n this.bytes = EMPTY_BYTES;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack = new StackPool();\n this.entered = false;\n this.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n this.context = options?.context; // needs a type assertion because EncoderOptions has no context property when ContextType is undefined\n this.useBigInt64 = options?.useBigInt64 ?? false;\n this.rawStrings = options?.rawStrings ?? false;\n this.maxStrLength = options?.maxStrLength ?? UINT32_MAX;\n this.maxBinLength = options?.maxBinLength ?? UINT32_MAX;\n this.maxArrayLength = options?.maxArrayLength ?? UINT32_MAX;\n this.maxMapLength = options?.maxMapLength ?? UINT32_MAX;\n this.maxExtLength = options?.maxExtLength ?? UINT32_MAX;\n this.keyDecoder = options?.keyDecoder !== undefined ? options.keyDecoder : sharedCachedKeyDecoder;\n this.mapKeyConverter = options?.mapKeyConverter ?? mapKeyConverter;\n }\n clone() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Decoder({\n extensionCodec: this.extensionCodec,\n context: this.context,\n useBigInt64: this.useBigInt64,\n rawStrings: this.rawStrings,\n maxStrLength: this.maxStrLength,\n maxBinLength: this.maxBinLength,\n maxArrayLength: this.maxArrayLength,\n maxMapLength: this.maxMapLength,\n maxExtLength: this.maxExtLength,\n keyDecoder: this.keyDecoder,\n });\n }\n reinitializeState() {\n this.totalPos = 0;\n this.headByte = HEAD_BYTE_REQUIRED;\n this.stack.reset();\n // view, bytes, and pos will be re-initialized in setBuffer()\n }\n setBuffer(buffer) {\n const bytes = ensureUint8Array(buffer);\n this.bytes = bytes;\n this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n this.pos = 0;\n }\n appendBuffer(buffer) {\n if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {\n this.setBuffer(buffer);\n }\n else {\n const remainingData = this.bytes.subarray(this.pos);\n const newData = ensureUint8Array(buffer);\n // concat remainingData + newData\n const newBuffer = new Uint8Array(remainingData.length + newData.length);\n newBuffer.set(remainingData);\n newBuffer.set(newData, remainingData.length);\n this.setBuffer(newBuffer);\n }\n }\n hasRemaining(size) {\n return this.view.byteLength - this.pos >= size;\n }\n createExtraByteError(posToShow) {\n const { view, pos } = this;\n return new RangeError(`Extra ${view.byteLength - pos} of ${view.byteLength} byte(s) found at buffer[${posToShow}]`);\n }\n /**\n * @throws {@link DecodeError}\n * @throws {@link RangeError}\n */\n decode(buffer) {\n if (this.entered) {\n const instance = this.clone();\n return instance.decode(buffer);\n }\n try {\n this.entered = true;\n this.reinitializeState();\n this.setBuffer(buffer);\n const object = this.doDecodeSync();\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.pos);\n }\n return object;\n }\n finally {\n this.entered = false;\n }\n }\n *decodeMulti(buffer) {\n if (this.entered) {\n const instance = this.clone();\n yield* instance.decodeMulti(buffer);\n return;\n }\n try {\n this.entered = true;\n this.reinitializeState();\n this.setBuffer(buffer);\n while (this.hasRemaining(1)) {\n yield this.doDecodeSync();\n }\n }\n finally {\n this.entered = false;\n }\n }\n async decodeAsync(stream) {\n if (this.entered) {\n const instance = this.clone();\n return instance.decodeAsync(stream);\n }\n try {\n this.entered = true;\n let decoded = false;\n let object;\n for await (const buffer of stream) {\n if (decoded) {\n this.entered = false;\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n try {\n object = this.doDecodeSync();\n decoded = true;\n }\n catch (e) {\n if (!(e instanceof RangeError)) {\n throw e; // rethrow\n }\n // fallthrough\n }\n this.totalPos += this.pos;\n }\n if (decoded) {\n if (this.hasRemaining(1)) {\n throw this.createExtraByteError(this.totalPos);\n }\n return object;\n }\n const { headByte, pos, totalPos } = this;\n throw new RangeError(`Insufficient data in parsing ${prettyByte(headByte)} at ${totalPos} (${pos} in the current buffer)`);\n }\n finally {\n this.entered = false;\n }\n }\n decodeArrayStream(stream) {\n return this.decodeMultiAsync(stream, true);\n }\n decodeStream(stream) {\n return this.decodeMultiAsync(stream, false);\n }\n async *decodeMultiAsync(stream, isArray) {\n if (this.entered) {\n const instance = this.clone();\n yield* instance.decodeMultiAsync(stream, isArray);\n return;\n }\n try {\n this.entered = true;\n let isArrayHeaderRequired = isArray;\n let arrayItemsLeft = -1;\n for await (const buffer of stream) {\n if (isArray && arrayItemsLeft === 0) {\n throw this.createExtraByteError(this.totalPos);\n }\n this.appendBuffer(buffer);\n if (isArrayHeaderRequired) {\n arrayItemsLeft = this.readArraySize();\n isArrayHeaderRequired = false;\n this.complete();\n }\n try {\n while (true) {\n yield this.doDecodeSync();\n if (--arrayItemsLeft === 0) {\n break;\n }\n }\n }\n catch (e) {\n if (!(e instanceof RangeError)) {\n throw e; // rethrow\n }\n // fallthrough\n }\n this.totalPos += this.pos;\n }\n }\n finally {\n this.entered = false;\n }\n }\n doDecodeSync() {\n DECODE: while (true) {\n const headByte = this.readHeadByte();\n let object;\n if (headByte >= 0xe0) {\n // negative fixint (111x xxxx) 0xe0 - 0xff\n object = headByte - 0x100;\n }\n else if (headByte < 0xc0) {\n if (headByte < 0x80) {\n // positive fixint (0xxx xxxx) 0x00 - 0x7f\n object = headByte;\n }\n else if (headByte < 0x90) {\n // fixmap (1000 xxxx) 0x80 - 0x8f\n const size = headByte - 0x80;\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte < 0xa0) {\n // fixarray (1001 xxxx) 0x90 - 0x9f\n const size = headByte - 0x90;\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else {\n // fixstr (101x xxxx) 0xa0 - 0xbf\n const byteLength = headByte - 0xa0;\n object = this.decodeString(byteLength, 0);\n }\n }\n else if (headByte === 0xc0) {\n // nil\n object = null;\n }\n else if (headByte === 0xc2) {\n // false\n object = false;\n }\n else if (headByte === 0xc3) {\n // true\n object = true;\n }\n else if (headByte === 0xca) {\n // float 32\n object = this.readF32();\n }\n else if (headByte === 0xcb) {\n // float 64\n object = this.readF64();\n }\n else if (headByte === 0xcc) {\n // uint 8\n object = this.readU8();\n }\n else if (headByte === 0xcd) {\n // uint 16\n object = this.readU16();\n }\n else if (headByte === 0xce) {\n // uint 32\n object = this.readU32();\n }\n else if (headByte === 0xcf) {\n // uint 64\n if (this.useBigInt64) {\n object = this.readU64AsBigInt();\n }\n else {\n object = this.readU64();\n }\n }\n else if (headByte === 0xd0) {\n // int 8\n object = this.readI8();\n }\n else if (headByte === 0xd1) {\n // int 16\n object = this.readI16();\n }\n else if (headByte === 0xd2) {\n // int 32\n object = this.readI32();\n }\n else if (headByte === 0xd3) {\n // int 64\n if (this.useBigInt64) {\n object = this.readI64AsBigInt();\n }\n else {\n object = this.readI64();\n }\n }\n else if (headByte === 0xd9) {\n // str 8\n const byteLength = this.lookU8();\n object = this.decodeString(byteLength, 1);\n }\n else if (headByte === 0xda) {\n // str 16\n const byteLength = this.lookU16();\n object = this.decodeString(byteLength, 2);\n }\n else if (headByte === 0xdb) {\n // str 32\n const byteLength = this.lookU32();\n object = this.decodeString(byteLength, 4);\n }\n else if (headByte === 0xdc) {\n // array 16\n const size = this.readU16();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xdd) {\n // array 32\n const size = this.readU32();\n if (size !== 0) {\n this.pushArrayState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = [];\n }\n }\n else if (headByte === 0xde) {\n // map 16\n const size = this.readU16();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xdf) {\n // map 32\n const size = this.readU32();\n if (size !== 0) {\n this.pushMapState(size);\n this.complete();\n continue DECODE;\n }\n else {\n object = {};\n }\n }\n else if (headByte === 0xc4) {\n // bin 8\n const size = this.lookU8();\n object = this.decodeBinary(size, 1);\n }\n else if (headByte === 0xc5) {\n // bin 16\n const size = this.lookU16();\n object = this.decodeBinary(size, 2);\n }\n else if (headByte === 0xc6) {\n // bin 32\n const size = this.lookU32();\n object = this.decodeBinary(size, 4);\n }\n else if (headByte === 0xd4) {\n // fixext 1\n object = this.decodeExtension(1, 0);\n }\n else if (headByte === 0xd5) {\n // fixext 2\n object = this.decodeExtension(2, 0);\n }\n else if (headByte === 0xd6) {\n // fixext 4\n object = this.decodeExtension(4, 0);\n }\n else if (headByte === 0xd7) {\n // fixext 8\n object = this.decodeExtension(8, 0);\n }\n else if (headByte === 0xd8) {\n // fixext 16\n object = this.decodeExtension(16, 0);\n }\n else if (headByte === 0xc7) {\n // ext 8\n const size = this.lookU8();\n object = this.decodeExtension(size, 1);\n }\n else if (headByte === 0xc8) {\n // ext 16\n const size = this.lookU16();\n object = this.decodeExtension(size, 2);\n }\n else if (headByte === 0xc9) {\n // ext 32\n const size = this.lookU32();\n object = this.decodeExtension(size, 4);\n }\n else {\n throw new DecodeError(`Unrecognized type byte: ${prettyByte(headByte)}`);\n }\n this.complete();\n const stack = this.stack;\n while (stack.length > 0) {\n // arrays and maps\n const state = stack.top();\n if (state.type === STATE_ARRAY) {\n state.array[state.position] = object;\n state.position++;\n if (state.position === state.size) {\n object = state.array;\n stack.release(state);\n }\n else {\n continue DECODE;\n }\n }\n else if (state.type === STATE_MAP_KEY) {\n if (object === \"__proto__\") {\n throw new DecodeError(\"The key __proto__ is not allowed\");\n }\n state.key = this.mapKeyConverter(object);\n state.type = STATE_MAP_VALUE;\n continue DECODE;\n }\n else {\n // it must be `state.type === State.MAP_VALUE` here\n state.map[state.key] = object;\n state.readCount++;\n if (state.readCount === state.size) {\n object = state.map;\n stack.release(state);\n }\n else {\n state.key = null;\n state.type = STATE_MAP_KEY;\n continue DECODE;\n }\n }\n }\n return object;\n }\n }\n readHeadByte() {\n if (this.headByte === HEAD_BYTE_REQUIRED) {\n this.headByte = this.readU8();\n // console.log(\"headByte\", prettyByte(this.headByte));\n }\n return this.headByte;\n }\n complete() {\n this.headByte = HEAD_BYTE_REQUIRED;\n }\n readArraySize() {\n const headByte = this.readHeadByte();\n switch (headByte) {\n case 0xdc:\n return this.readU16();\n case 0xdd:\n return this.readU32();\n default: {\n if (headByte < 0xa0) {\n return headByte - 0x90;\n }\n else {\n throw new DecodeError(`Unrecognized array type byte: ${prettyByte(headByte)}`);\n }\n }\n }\n }\n pushMapState(size) {\n if (size > this.maxMapLength) {\n throw new DecodeError(`Max length exceeded: map length (${size}) > maxMapLengthLength (${this.maxMapLength})`);\n }\n this.stack.pushMapState(size);\n }\n pushArrayState(size) {\n if (size > this.maxArrayLength) {\n throw new DecodeError(`Max length exceeded: array length (${size}) > maxArrayLength (${this.maxArrayLength})`);\n }\n this.stack.pushArrayState(size);\n }\n decodeString(byteLength, headerOffset) {\n if (!this.rawStrings || this.stateIsMapKey()) {\n return this.decodeUtf8String(byteLength, headerOffset);\n }\n return this.decodeBinary(byteLength, headerOffset);\n }\n /**\n * @throws {@link RangeError}\n */\n decodeUtf8String(byteLength, headerOffset) {\n if (byteLength > this.maxStrLength) {\n throw new DecodeError(`Max length exceeded: UTF-8 byte length (${byteLength}) > maxStrLength (${this.maxStrLength})`);\n }\n if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {\n throw MORE_DATA;\n }\n const offset = this.pos + headerOffset;\n let object;\n if (this.stateIsMapKey() && this.keyDecoder?.canBeCached(byteLength)) {\n object = this.keyDecoder.decode(this.bytes, offset, byteLength);\n }\n else {\n object = utf8Decode(this.bytes, offset, byteLength);\n }\n this.pos += headerOffset + byteLength;\n return object;\n }\n stateIsMapKey() {\n if (this.stack.length > 0) {\n const state = this.stack.top();\n return state.type === STATE_MAP_KEY;\n }\n return false;\n }\n /**\n * @throws {@link RangeError}\n */\n decodeBinary(byteLength, headOffset) {\n if (byteLength > this.maxBinLength) {\n throw new DecodeError(`Max length exceeded: bin length (${byteLength}) > maxBinLength (${this.maxBinLength})`);\n }\n if (!this.hasRemaining(byteLength + headOffset)) {\n throw MORE_DATA;\n }\n const offset = this.pos + headOffset;\n const object = this.bytes.subarray(offset, offset + byteLength);\n this.pos += headOffset + byteLength;\n return object;\n }\n decodeExtension(size, headOffset) {\n if (size > this.maxExtLength) {\n throw new DecodeError(`Max length exceeded: ext length (${size}) > maxExtLength (${this.maxExtLength})`);\n }\n const extType = this.view.getInt8(this.pos + headOffset);\n const data = this.decodeBinary(size, headOffset + 1 /* extType */);\n return this.extensionCodec.decode(data, extType, this.context);\n }\n lookU8() {\n return this.view.getUint8(this.pos);\n }\n lookU16() {\n return this.view.getUint16(this.pos);\n }\n lookU32() {\n return this.view.getUint32(this.pos);\n }\n readU8() {\n const value = this.view.getUint8(this.pos);\n this.pos++;\n return value;\n }\n readI8() {\n const value = this.view.getInt8(this.pos);\n this.pos++;\n return value;\n }\n readU16() {\n const value = this.view.getUint16(this.pos);\n this.pos += 2;\n return value;\n }\n readI16() {\n const value = this.view.getInt16(this.pos);\n this.pos += 2;\n return value;\n }\n readU32() {\n const value = this.view.getUint32(this.pos);\n this.pos += 4;\n return value;\n }\n readI32() {\n const value = this.view.getInt32(this.pos);\n this.pos += 4;\n return value;\n }\n readU64() {\n const value = getUint64(this.view, this.pos);\n this.pos += 8;\n return value;\n }\n readI64() {\n const value = getInt64(this.view, this.pos);\n this.pos += 8;\n return value;\n }\n readU64AsBigInt() {\n const value = this.view.getBigUint64(this.pos);\n this.pos += 8;\n return value;\n }\n readI64AsBigInt() {\n const value = this.view.getBigInt64(this.pos);\n this.pos += 8;\n return value;\n }\n readF32() {\n const value = this.view.getFloat32(this.pos);\n this.pos += 4;\n return value;\n }\n readF64() {\n const value = this.view.getFloat64(this.pos);\n this.pos += 8;\n return value;\n }\n}\n//# sourceMappingURL=Decoder.mjs.map","import { Decoder } from \"./Decoder.mjs\";\n/**\n * It decodes a single MessagePack object in a buffer.\n *\n * This is a synchronous decoding function.\n * See other variants for asynchronous decoding: {@link decodeAsync}, {@link decodeMultiStream}, or {@link decodeArrayStream}.\n *\n * @throws {@link RangeError} if the buffer is incomplete, including the case where the buffer is empty.\n * @throws {@link DecodeError} if the buffer contains invalid data.\n */\nexport function decode(buffer, options) {\n const decoder = new Decoder(options);\n return decoder.decode(buffer);\n}\n/**\n * It decodes multiple MessagePack objects in a buffer.\n * This is corresponding to {@link decodeMultiStream}.\n *\n * @throws {@link RangeError} if the buffer is incomplete, including the case where the buffer is empty.\n * @throws {@link DecodeError} if the buffer contains invalid data.\n */\nexport function decodeMulti(buffer, options) {\n const decoder = new Decoder(options);\n return decoder.decodeMulti(buffer);\n}\n//# sourceMappingURL=decode.mjs.map","export function asUint8Array(buf) {\n if (globalThis.Buffer != null) {\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n return buf;\n}","import { asUint8Array } from './util/as-uint8array.js';\nexport function alloc(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.alloc != null) {\n return asUint8Array(globalThis.Buffer.alloc(size));\n }\n return new Uint8Array(size);\n}\nexport function allocUnsafe(size = 0) {\n if (globalThis.Buffer != null && globalThis.Buffer.allocUnsafe != null) {\n return asUint8Array(globalThis.Buffer.allocUnsafe(size));\n }\n return new Uint8Array(size);\n}","import { allocUnsafe } from './alloc.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function concat(arrays, length) {\n if (!length) {\n length = arrays.reduce((acc, curr) => acc + curr.length, 0);\n }\n const output = allocUnsafe(length);\n let offset = 0;\n for (const arr of arrays) {\n output.set(arr, offset);\n offset += arr.length;\n }\n return asUint8Array(output);\n}","function base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) {\n throw new TypeError(x + ' is ambiguous');\n }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256);\n var iFACTOR = Math.log(256) / Math.log(BASE);\n function encode(source) {\n if (source instanceof Uint8Array);\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n var size = (pend - pbegin) * iFACTOR + 1 >>> 0;\n var b58 = new Uint8Array(size);\n while (pbegin !== pend) {\n var carry = source[pbegin];\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) {\n carry += 256 * b58[it1] >>> 0;\n b58[it1] = carry % BASE >>> 0;\n carry = carry / BASE >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n pbegin++;\n }\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n if (source[psz] === ' ') {\n return;\n }\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n var size = (source.length - psz) * FACTOR + 1 >>> 0;\n var b256 = new Uint8Array(size);\n while (source[psz]) {\n var carry = BASE_MAP[source.charCodeAt(psz)];\n if (carry === 255) {\n return;\n }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) {\n carry += BASE * b256[it3] >>> 0;\n b256[it3] = carry % 256 >>> 0;\n carry = carry / 256 >>> 0;\n }\n if (carry !== 0) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n if (source[psz] === ' ') {\n return;\n }\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch;\n }\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${ name } character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;","const empty = new Uint8Array(0);\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\nconst fromHex = hex => {\n const hexes = hex.match(/../g);\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n};\nconst equals = (aa, bb) => {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n};\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n return new Uint8Array(o);\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n};\nconst isBinary = o => o instanceof ArrayBuffer || ArrayBuffer.isView(o);\nconst fromString = str => new TextEncoder().encode(str);\nconst toString = b => new TextDecoder().decode(b);\nexport {\n equals,\n coerce,\n isBinary,\n fromHex,\n toHex,\n fromString,\n toString,\n empty\n};","import basex from '../../vendor/base-x.js';\nimport { coerce } from '../bytes.js';\nclass Encoder {\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${ this.prefix }${ this.baseEncode(bytes) }`;\n } else {\n throw Error('Unknown type, must be binary type');\n }\n }\n}\nclass Decoder {\n constructor(name, prefix, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character');\n }\n this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\n }\n decode(text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${ JSON.stringify(text) }, ${ this.name } decoder only supports inputs prefixed with ${ this.prefix }`);\n }\n return this.baseDecode(text.slice(this.prefix.length));\n } else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder) {\n return decoder.decode(input);\n } else {\n throw RangeError(`Unable to decode multibase string ${ JSON.stringify(input) }, only inputs prefixed with ${ Object.keys(this.decoders) } are supported`);\n }\n }\n}\nexport const or = (left, right) => new ComposedDecoder({\n ...left.decoders || { [left.prefix]: left },\n ...right.decoders || { [right.prefix]: right }\n});\nexport class Codec {\n constructor(name, prefix, baseEncode, baseDecode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n this.baseDecode = baseDecode;\n this.encoder = new Encoder(name, prefix, baseEncode);\n this.decoder = new Decoder(name, prefix, baseDecode);\n }\n encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport const from = ({name, prefix, encode, decode}) => new Codec(name, prefix, encode, decode);\nexport const baseX = ({prefix, name, alphabet}) => {\n const {encode, decode} = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: text => coerce(decode(text))\n });\n};\nconst decode = (string, alphabet, bitsPerChar, name) => {\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n const out = new Uint8Array(end * bitsPerChar / 8 | 0);\n let bits = 0;\n let buffer = 0;\n let written = 0;\n for (let i = 0; i < end; ++i) {\n const value = codes[string[i]];\n if (value === undefined) {\n throw new SyntaxError(`Non-${ name } character`);\n }\n buffer = buffer << bitsPerChar | value;\n bits += bitsPerChar;\n if (bits >= 8) {\n bits -= 8;\n out[written++] = 255 & buffer >> bits;\n }\n }\n if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n};\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\n let bits = 0;\n let buffer = 0;\n for (let i = 0; i < data.length; ++i) {\n buffer = buffer << 8 | data[i];\n bits += 8;\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & buffer >> bits];\n }\n }\n if (bits) {\n out += alphabet[mask & buffer << bitsPerChar - bits];\n }\n if (pad) {\n while (out.length * bitsPerChar & 7) {\n out += '=';\n }\n }\n return out;\n};\nexport const rfc4648 = ({name, prefix, bitsPerChar, alphabet}) => {\n return from({\n prefix,\n name,\n encode(input) {\n return encode(input, alphabet, bitsPerChar);\n },\n decode(input) {\n return decode(input, alphabet, bitsPerChar, name);\n }\n });\n};","import { from } from './base.js';\nimport {\n fromString,\n toString\n} from '../bytes.js';\nexport const identity = from({\n prefix: '\\0',\n name: 'identity',\n encode: buf => toString(buf),\n decode: str => fromString(str)\n});","import { rfc4648 } from './base.js';\nexport const base2 = rfc4648({\n prefix: '0',\n name: 'base2',\n alphabet: '01',\n bitsPerChar: 1\n});","import { rfc4648 } from './base.js';\nexport const base8 = rfc4648({\n prefix: '7',\n name: 'base8',\n alphabet: '01234567',\n bitsPerChar: 3\n});","import { baseX } from './base.js';\nexport const base10 = baseX({\n prefix: '9',\n name: 'base10',\n alphabet: '0123456789'\n});","import { rfc4648 } from './base.js';\nexport const base16 = rfc4648({\n prefix: 'f',\n name: 'base16',\n alphabet: '0123456789abcdef',\n bitsPerChar: 4\n});\nexport const base16upper = rfc4648({\n prefix: 'F',\n name: 'base16upper',\n alphabet: '0123456789ABCDEF',\n bitsPerChar: 4\n});","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});","import { baseX } from './base.js';\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n});\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n});","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});","import { rfc4648 } from './base.js';\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n});\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n});\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n});\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n});","import { from } from './base.js';\nconst alphabet = Array.from('\\uD83D\\uDE80\\uD83E\\uDE90\\u2604\\uD83D\\uDEF0\\uD83C\\uDF0C\\uD83C\\uDF11\\uD83C\\uDF12\\uD83C\\uDF13\\uD83C\\uDF14\\uD83C\\uDF15\\uD83C\\uDF16\\uD83C\\uDF17\\uD83C\\uDF18\\uD83C\\uDF0D\\uD83C\\uDF0F\\uD83C\\uDF0E\\uD83D\\uDC09\\u2600\\uD83D\\uDCBB\\uD83D\\uDDA5\\uD83D\\uDCBE\\uD83D\\uDCBF\\uD83D\\uDE02\\u2764\\uD83D\\uDE0D\\uD83E\\uDD23\\uD83D\\uDE0A\\uD83D\\uDE4F\\uD83D\\uDC95\\uD83D\\uDE2D\\uD83D\\uDE18\\uD83D\\uDC4D\\uD83D\\uDE05\\uD83D\\uDC4F\\uD83D\\uDE01\\uD83D\\uDD25\\uD83E\\uDD70\\uD83D\\uDC94\\uD83D\\uDC96\\uD83D\\uDC99\\uD83D\\uDE22\\uD83E\\uDD14\\uD83D\\uDE06\\uD83D\\uDE44\\uD83D\\uDCAA\\uD83D\\uDE09\\u263A\\uD83D\\uDC4C\\uD83E\\uDD17\\uD83D\\uDC9C\\uD83D\\uDE14\\uD83D\\uDE0E\\uD83D\\uDE07\\uD83C\\uDF39\\uD83E\\uDD26\\uD83C\\uDF89\\uD83D\\uDC9E\\u270C\\u2728\\uD83E\\uDD37\\uD83D\\uDE31\\uD83D\\uDE0C\\uD83C\\uDF38\\uD83D\\uDE4C\\uD83D\\uDE0B\\uD83D\\uDC97\\uD83D\\uDC9A\\uD83D\\uDE0F\\uD83D\\uDC9B\\uD83D\\uDE42\\uD83D\\uDC93\\uD83E\\uDD29\\uD83D\\uDE04\\uD83D\\uDE00\\uD83D\\uDDA4\\uD83D\\uDE03\\uD83D\\uDCAF\\uD83D\\uDE48\\uD83D\\uDC47\\uD83C\\uDFB6\\uD83D\\uDE12\\uD83E\\uDD2D\\u2763\\uD83D\\uDE1C\\uD83D\\uDC8B\\uD83D\\uDC40\\uD83D\\uDE2A\\uD83D\\uDE11\\uD83D\\uDCA5\\uD83D\\uDE4B\\uD83D\\uDE1E\\uD83D\\uDE29\\uD83D\\uDE21\\uD83E\\uDD2A\\uD83D\\uDC4A\\uD83E\\uDD73\\uD83D\\uDE25\\uD83E\\uDD24\\uD83D\\uDC49\\uD83D\\uDC83\\uD83D\\uDE33\\u270B\\uD83D\\uDE1A\\uD83D\\uDE1D\\uD83D\\uDE34\\uD83C\\uDF1F\\uD83D\\uDE2C\\uD83D\\uDE43\\uD83C\\uDF40\\uD83C\\uDF37\\uD83D\\uDE3B\\uD83D\\uDE13\\u2B50\\u2705\\uD83E\\uDD7A\\uD83C\\uDF08\\uD83D\\uDE08\\uD83E\\uDD18\\uD83D\\uDCA6\\u2714\\uD83D\\uDE23\\uD83C\\uDFC3\\uD83D\\uDC90\\u2639\\uD83C\\uDF8A\\uD83D\\uDC98\\uD83D\\uDE20\\u261D\\uD83D\\uDE15\\uD83C\\uDF3A\\uD83C\\uDF82\\uD83C\\uDF3B\\uD83D\\uDE10\\uD83D\\uDD95\\uD83D\\uDC9D\\uD83D\\uDE4A\\uD83D\\uDE39\\uD83D\\uDDE3\\uD83D\\uDCAB\\uD83D\\uDC80\\uD83D\\uDC51\\uD83C\\uDFB5\\uD83E\\uDD1E\\uD83D\\uDE1B\\uD83D\\uDD34\\uD83D\\uDE24\\uD83C\\uDF3C\\uD83D\\uDE2B\\u26BD\\uD83E\\uDD19\\u2615\\uD83C\\uDFC6\\uD83E\\uDD2B\\uD83D\\uDC48\\uD83D\\uDE2E\\uD83D\\uDE46\\uD83C\\uDF7B\\uD83C\\uDF43\\uD83D\\uDC36\\uD83D\\uDC81\\uD83D\\uDE32\\uD83C\\uDF3F\\uD83E\\uDDE1\\uD83C\\uDF81\\u26A1\\uD83C\\uDF1E\\uD83C\\uDF88\\u274C\\u270A\\uD83D\\uDC4B\\uD83D\\uDE30\\uD83E\\uDD28\\uD83D\\uDE36\\uD83E\\uDD1D\\uD83D\\uDEB6\\uD83D\\uDCB0\\uD83C\\uDF53\\uD83D\\uDCA2\\uD83E\\uDD1F\\uD83D\\uDE41\\uD83D\\uDEA8\\uD83D\\uDCA8\\uD83E\\uDD2C\\u2708\\uD83C\\uDF80\\uD83C\\uDF7A\\uD83E\\uDD13\\uD83D\\uDE19\\uD83D\\uDC9F\\uD83C\\uDF31\\uD83D\\uDE16\\uD83D\\uDC76\\uD83E\\uDD74\\u25B6\\u27A1\\u2753\\uD83D\\uDC8E\\uD83D\\uDCB8\\u2B07\\uD83D\\uDE28\\uD83C\\uDF1A\\uD83E\\uDD8B\\uD83D\\uDE37\\uD83D\\uDD7A\\u26A0\\uD83D\\uDE45\\uD83D\\uDE1F\\uD83D\\uDE35\\uD83D\\uDC4E\\uD83E\\uDD32\\uD83E\\uDD20\\uD83E\\uDD27\\uD83D\\uDCCC\\uD83D\\uDD35\\uD83D\\uDC85\\uD83E\\uDDD0\\uD83D\\uDC3E\\uD83C\\uDF52\\uD83D\\uDE17\\uD83E\\uDD11\\uD83C\\uDF0A\\uD83E\\uDD2F\\uD83D\\uDC37\\u260E\\uD83D\\uDCA7\\uD83D\\uDE2F\\uD83D\\uDC86\\uD83D\\uDC46\\uD83C\\uDFA4\\uD83D\\uDE47\\uD83C\\uDF51\\u2744\\uD83C\\uDF34\\uD83D\\uDCA3\\uD83D\\uDC38\\uD83D\\uDC8C\\uD83D\\uDCCD\\uD83E\\uDD40\\uD83E\\uDD22\\uD83D\\uDC45\\uD83D\\uDCA1\\uD83D\\uDCA9\\uD83D\\uDC50\\uD83D\\uDCF8\\uD83D\\uDC7B\\uD83E\\uDD10\\uD83E\\uDD2E\\uD83C\\uDFBC\\uD83E\\uDD75\\uD83D\\uDEA9\\uD83C\\uDF4E\\uD83C\\uDF4A\\uD83D\\uDC7C\\uD83D\\uDC8D\\uD83D\\uDCE3\\uD83E\\uDD42');\nconst alphabetBytesToChars = alphabet.reduce((p, c, i) => {\n p[i] = c;\n return p;\n}, []);\nconst alphabetCharsToBytes = alphabet.reduce((p, c, i) => {\n p[c.codePointAt(0)] = i;\n return p;\n}, []);\nfunction encode(data) {\n return data.reduce((p, c) => {\n p += alphabetBytesToChars[c];\n return p;\n }, '');\n}\nfunction decode(str) {\n const byts = [];\n for (const char of str) {\n const byt = alphabetCharsToBytes[char.codePointAt(0)];\n if (byt === undefined) {\n throw new Error(`Non-base256emoji character: ${ char }`);\n }\n byts.push(byt);\n }\n return new Uint8Array(byts);\n}\nexport const base256emoji = from({\n prefix: '\\uD83D\\uDE80',\n name: 'base256emoji',\n encode,\n decode\n});","const textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nexport const name = 'json';\nexport const code = 512;\nexport const encode = node => textEncoder.encode(JSON.stringify(node));\nexport const decode = data => JSON.parse(textDecoder.decode(data));","import * as identityBase from './bases/identity.js';\nimport * as base2 from './bases/base2.js';\nimport * as base8 from './bases/base8.js';\nimport * as base10 from './bases/base10.js';\nimport * as base16 from './bases/base16.js';\nimport * as base32 from './bases/base32.js';\nimport * as base36 from './bases/base36.js';\nimport * as base58 from './bases/base58.js';\nimport * as base64 from './bases/base64.js';\nimport * as base256emoji from './bases/base256emoji.js';\nimport * as sha2 from './hashes/sha2.js';\nimport * as identity from './hashes/identity.js';\nimport * as raw from './codecs/raw.js';\nimport * as json from './codecs/json.js';\nimport {\n CID,\n hasher,\n digest,\n varint,\n bytes\n} from './index.js';\nconst bases = {\n ...identityBase,\n ...base2,\n ...base8,\n ...base10,\n ...base16,\n ...base32,\n ...base36,\n ...base58,\n ...base64,\n ...base256emoji\n};\nconst hashes = {\n ...sha2,\n ...identity\n};\nconst codecs = {\n raw,\n json\n};\nexport {\n CID,\n hasher,\n digest,\n varint,\n bytes,\n hashes,\n bases,\n codecs\n};","import { bases } from 'multiformats/basics';\nimport { allocUnsafe } from '../alloc.js';\nfunction createCodec(name, prefix, encode, decode) {\n return {\n name,\n prefix,\n encoder: {\n name,\n prefix,\n encode\n },\n decoder: { decode }\n };\n}\nconst string = createCodec('utf8', 'u', buf => {\n const decoder = new TextDecoder('utf8');\n return 'u' + decoder.decode(buf);\n}, str => {\n const encoder = new TextEncoder();\n return encoder.encode(str.substring(1));\n});\nconst ascii = createCodec('ascii', 'a', buf => {\n let string = 'a';\n for (let i = 0; i < buf.length; i++) {\n string += String.fromCharCode(buf[i]);\n }\n return string;\n}, str => {\n str = str.substring(1);\n const buf = allocUnsafe(str.length);\n for (let i = 0; i < str.length; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n});\nconst BASES = {\n utf8: string,\n 'utf-8': string,\n hex: bases.base16,\n latin1: ascii,\n ascii: ascii,\n binary: ascii,\n ...bases\n};\nexport default BASES;","import bases from './util/bases.js';\nimport { asUint8Array } from './util/as-uint8array.js';\nexport function fromString(string, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return asUint8Array(globalThis.Buffer.from(string, 'utf-8'));\n }\n return base.decoder.decode(`${ base.prefix }${ string }`);\n}","import bases from './util/bases.js';\nexport function toString(array, encoding = 'utf8') {\n const base = bases[encoding];\n if (!base) {\n throw new Error(`Unsupported encoding \"${ encoding }\"`);\n }\n if ((encoding === 'utf8' || encoding === 'utf-8') && globalThis.Buffer != null && globalThis.Buffer.from != null) {\n return globalThis.Buffer.from(array.buffer, array.byteOffset, array.byteLength).toString('utf8');\n }\n return base.encoder.encode(array).substring(1);\n}","function e(s,r,i=\"string\"){if(!s[r]||typeof s[r]!==i)throw new Error(`Missing or invalid \"${r}\" param`)}function l(s,r){let i=!0;return r.forEach(t=>{t in s||(i=!1)}),i}function f(s,r){return Array.isArray(s)?s.length===r:Object.keys(s).length===r}function w(s,r){return Array.isArray(s)?s.length>=r:Object.keys(s).length>=r}function u(s,r,i){return(i.length?w(s,r.length):f(s,r.length))?l(s,r):!1}function n(s,r,i=\"_\"){const t=s.split(i);return t[t.length-1].trim().toLowerCase()===r.trim().toLowerCase()}function R(s){return b(s.method)&&a(s.params)}function b(s){return n(s,\"subscribe\")}function a(s){return u(s,[\"topic\"],[])}function P(s){return c(s.method)&&h(s.params)}function c(s){return n(s,\"publish\")}function h(s){return u(s,[\"message\",\"topic\",\"ttl\"],[\"prompt\",\"tag\"])}function _(s){return o(s.method)&&p(s.params)}function o(s){return n(s,\"unsubscribe\")}function p(s){return u(s,[\"id\",\"topic\"],[])}function S(s){return m(s.method)&&d(s.params)}function m(s){return n(s,\"subscription\")}function d(s){return u(s,[\"id\",\"data\"],[])}function g(s){if(!b(s.method))throw new Error(\"JSON-RPC Request has invalid subscribe method\");if(!a(s.params))throw new Error(\"JSON-RPC Request has invalid subscribe params\");const r=s.params;return e(r,\"topic\"),r}function q(s){if(!c(s.method))throw new Error(\"JSON-RPC Request has invalid publish method\");if(!h(s.params))throw new Error(\"JSON-RPC Request has invalid publish params\");const r=s.params;return e(r,\"topic\"),e(r,\"message\"),e(r,\"ttl\",\"number\"),r}function E(s){if(!o(s.method))throw new Error(\"JSON-RPC Request has invalid unsubscribe method\");if(!p(s.params))throw new Error(\"JSON-RPC Request has invalid unsubscribe params\");const r=s.params;return e(r,\"id\"),r}function k(s){if(!m(s.method))throw new Error(\"JSON-RPC Request has invalid subscription method\");if(!d(s.params))throw new Error(\"JSON-RPC Request has invalid subscription params\");const r=s.params;return e(r,\"id\"),e(r,\"data\"),r}const C={waku:{publish:\"waku_publish\",batchPublish:\"waku_batchPublish\",subscribe:\"waku_subscribe\",batchSubscribe:\"waku_batchSubscribe\",subscription:\"waku_subscription\",unsubscribe:\"waku_unsubscribe\",batchUnsubscribe:\"waku_batchUnsubscribe\",batchFetchMessages:\"waku_batchFetchMessages\"},irn:{publish:\"irn_publish\",batchPublish:\"irn_batchPublish\",subscribe:\"irn_subscribe\",batchSubscribe:\"irn_batchSubscribe\",subscription:\"irn_subscription\",unsubscribe:\"irn_unsubscribe\",batchUnsubscribe:\"irn_batchUnsubscribe\",batchFetchMessages:\"irn_batchFetchMessages\"},iridium:{publish:\"iridium_publish\",batchPublish:\"iridium_batchPublish\",subscribe:\"iridium_subscribe\",batchSubscribe:\"iridium_batchSubscribe\",subscription:\"iridium_subscription\",unsubscribe:\"iridium_unsubscribe\",batchUnsubscribe:\"iridium_batchUnsubscribe\",batchFetchMessages:\"iridium_batchFetchMessages\"}};export{C as RELAY_JSONRPC,c as isPublishMethod,h as isPublishParams,P as isPublishRequest,b as isSubscribeMethod,a as isSubscribeParams,R as isSubscribeRequest,m as isSubscriptionMethod,d as isSubscriptionParams,S as isSubscriptionRequest,o as isUnsubscribeMethod,p as isUnsubscribeParams,_ as isUnsubscribeRequest,q as parsePublishRequest,g as parseSubscribeRequest,k as parseSubscriptionRequest,E as parseUnsubscribeRequest};\n//# sourceMappingURL=index.es.js.map\n","const ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n let ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (typeof input === 'string') {\n const encoder = new TextEncoder()\n ret = encoder.encode(input)\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map\n .call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n })\n .join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n let msg = '\\n' + label + ' = '\n for (let i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n let startMs = new Date().getTime()\n\n const input = new Uint8Array(N)\n for (let i = 0; i < N; i++) {\n input[i] = i % 256\n }\n const genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (let i = 0; i < M; i++) {\n const hashHex = hashFn(input)\n const hashMs = new Date().getTime()\n const ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(\n Math.round((N / (1 << 20) / (ms / 1000)) * 100) / 100 + ' MB PER SECOND'\n )\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n const o0 = v[a] + v[b]\n let o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n let o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n let o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24)\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n const x0 = m[ix]\n const x1 = m[ix + 1]\n const y0 = m[iy]\n const y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = v[d] ^ v[a]\n let xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nconst BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372,\n 0x5f1d36f1, 0xa54ff53a, 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c,\n 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\n])\n\nconst SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13,\n 6, 1, 12, 0, 2, 11, 7, 5, 3, 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1,\n 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5, 7, 2, 4,\n 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5,\n 15, 14, 1, 9, 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7,\n 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11, 3, 0, 8, 12, 2,\n 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0,\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6,\n 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nconst SIGMA82 = new Uint8Array(\n SIGMA8.map(function (x) {\n return x * 2\n })\n)\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nconst v = new Uint32Array(32)\nconst m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n let i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// reusable parameterBlock\nconst parameterBlock = new Uint8Array([\n 0,\n 0,\n 0,\n 0, // 0: outlen, keylen, fanout, depth\n 0,\n 0,\n 0,\n 0, // 4: leaf length, sequential mode\n 0,\n 0,\n 0,\n 0, // 8: node offset\n 0,\n 0,\n 0,\n 0, // 12: node offset\n 0,\n 0,\n 0,\n 0, // 16: node depth, inner length, rfu\n 0,\n 0,\n 0,\n 0, // 20: rfu\n 0,\n 0,\n 0,\n 0, // 24: rfu\n 0,\n 0,\n 0,\n 0, // 28: rfu\n 0,\n 0,\n 0,\n 0, // 32: salt\n 0,\n 0,\n 0,\n 0, // 36: salt\n 0,\n 0,\n 0,\n 0, // 40: salt\n 0,\n 0,\n 0,\n 0, // 44: salt\n 0,\n 0,\n 0,\n 0, // 48: personal\n 0,\n 0,\n 0,\n 0, // 52: personal\n 0,\n 0,\n 0,\n 0, // 56: personal\n 0,\n 0,\n 0,\n 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\n// Takes an optinal Uint8Array salt\n// Takes an optinal Uint8Array personal\nfunction blake2bInit (outlen, key, salt, personal) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n if (salt && salt.length !== 16) {\n throw new Error('Illegal salt, expected Uint8Array with length is 16')\n }\n if (personal && personal.length !== 16) {\n throw new Error('Illegal personal, expected Uint8Array with length is 16')\n }\n\n // state, 'param block'\n const ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize parameterBlock before usage\n parameterBlock.fill(0)\n parameterBlock[0] = outlen\n if (key) parameterBlock[1] = key.length\n parameterBlock[2] = 1 // fanout\n parameterBlock[3] = 1 // depth\n if (salt) parameterBlock.set(salt, 32)\n if (personal) parameterBlock.set(personal, 48)\n\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 128) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2b (input, key, outlen, salt, personal) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n if (salt) {\n salt = util.normalizeInput(salt)\n }\n if (personal) {\n personal = util.normalizeInput(personal)\n }\n\n // do the math\n const ctx = blake2bInit(outlen, key, salt, personal)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2bHex (input, key, outlen, salt, personal) {\n const output = blake2b(input, key, outlen, salt, personal)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","// BLAKE2s hash function in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// Little-endian byte access.\n// Expects a Uint8Array and an index\n// Returns the little-endian uint32 at v[i..i+3]\nfunction B2S_GET32 (v, i) {\n return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24)\n}\n\n// Mixing function G.\nfunction B2S_G (a, b, c, d, x, y) {\n v[a] = v[a] + v[b] + x\n v[d] = ROTR32(v[d] ^ v[a], 16)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 12)\n v[a] = v[a] + v[b] + y\n v[d] = ROTR32(v[d] ^ v[a], 8)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 7)\n}\n\n// 32-bit right rotation\n// x should be a uint32\n// y must be between 1 and 31, inclusive\nfunction ROTR32 (x, y) {\n return (x >>> y) ^ (x << (32 - y))\n}\n\n// Initialization Vector.\nconst BLAKE2S_IV = new Uint32Array([\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n])\n\nconst SIGMA = new Uint8Array([\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3,\n 11,\n 8,\n 12,\n 0,\n 5,\n 2,\n 15,\n 13,\n 10,\n 14,\n 3,\n 6,\n 7,\n 1,\n 9,\n 4,\n 7,\n 9,\n 3,\n 1,\n 13,\n 12,\n 11,\n 14,\n 2,\n 6,\n 5,\n 10,\n 4,\n 0,\n 15,\n 8,\n 9,\n 0,\n 5,\n 7,\n 2,\n 4,\n 10,\n 15,\n 14,\n 1,\n 11,\n 12,\n 6,\n 8,\n 3,\n 13,\n 2,\n 12,\n 6,\n 10,\n 0,\n 11,\n 8,\n 3,\n 4,\n 13,\n 7,\n 5,\n 15,\n 14,\n 1,\n 9,\n 12,\n 5,\n 1,\n 15,\n 14,\n 13,\n 4,\n 10,\n 0,\n 7,\n 6,\n 3,\n 9,\n 2,\n 8,\n 11,\n 13,\n 11,\n 7,\n 14,\n 12,\n 1,\n 3,\n 9,\n 5,\n 0,\n 15,\n 4,\n 8,\n 6,\n 2,\n 10,\n 6,\n 15,\n 14,\n 9,\n 11,\n 3,\n 0,\n 8,\n 12,\n 2,\n 13,\n 7,\n 1,\n 4,\n 10,\n 5,\n 10,\n 2,\n 8,\n 4,\n 7,\n 6,\n 1,\n 5,\n 15,\n 11,\n 9,\n 14,\n 3,\n 12,\n 13,\n 0\n])\n\n// Compression function. \"last\" flag indicates last block\nconst v = new Uint32Array(16)\nconst m = new Uint32Array(16)\nfunction blake2sCompress (ctx, last) {\n let i = 0\n for (i = 0; i < 8; i++) {\n // init work variables\n v[i] = ctx.h[i]\n v[i + 8] = BLAKE2S_IV[i]\n }\n\n v[12] ^= ctx.t // low 32 bits of offset\n v[13] ^= ctx.t / 0x100000000 // high 32 bits\n if (last) {\n // last block flag set ?\n v[14] = ~v[14]\n }\n\n for (i = 0; i < 16; i++) {\n // get little-endian words\n m[i] = B2S_GET32(ctx.b, 4 * i)\n }\n\n // ten rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 32)\n for (i = 0; i < 10; i++) {\n // util.debugPrint(' (i=' + i + ') v[16]', v, 32)\n B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]])\n B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]])\n B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]])\n B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]])\n B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]])\n B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]])\n B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]])\n B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]])\n }\n // util.debugPrint(' (i=10) v[16]', v, 32)\n\n for (i = 0; i < 8; i++) {\n ctx.h[i] ^= v[i] ^ v[i + 8]\n }\n // util.debugPrint('h[8]', ctx.h, 32)\n}\n\n// Creates a BLAKE2s hashing context\n// Requires an output length between 1 and 32 bytes\n// Takes an optional Uint8Array key\nfunction blake2sInit (outlen, key) {\n if (!(outlen > 0 && outlen <= 32)) {\n throw new Error('Incorrect output length, should be in [1, 32]')\n }\n const keylen = key ? key.length : 0\n if (key && !(keylen > 0 && keylen <= 32)) {\n throw new Error('Incorrect key length, should be in [1, 32]')\n }\n\n const ctx = {\n h: new Uint32Array(BLAKE2S_IV), // hash state\n b: new Uint8Array(64), // input block\n c: 0, // pointer within block\n t: 0, // input count\n outlen: outlen // output length in bytes\n }\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n if (keylen > 0) {\n blake2sUpdate(ctx, key)\n ctx.c = 64 // at the end\n }\n\n return ctx\n}\n\n// Updates a BLAKE2s streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2sUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 64) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2sCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2s streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2sFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n while (ctx.c < 64) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2sCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xff\n }\n return out\n}\n\n// Computes the BLAKE2S hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2s (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 32\n input = util.normalizeInput(input)\n\n // do the math\n const ctx = blake2sInit(outlen, key)\n blake2sUpdate(ctx, input)\n return blake2sFinal(ctx)\n}\n\n// Computes the BLAKE2S hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2sHex (input, key, outlen) {\n const output = blake2s(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2s: blake2s,\n blake2sHex: blake2sHex,\n blake2sInit: blake2sInit,\n blake2sUpdate: blake2sUpdate,\n blake2sFinal: blake2sFinal\n}\n","const b2b = require('./blake2b')\nconst b2s = require('./blake2s')\n\nmodule.exports = {\n blake2b: b2b.blake2b,\n blake2bHex: b2b.blake2bHex,\n blake2bInit: b2b.blake2bInit,\n blake2bUpdate: b2b.blake2bUpdate,\n blake2bFinal: b2b.blake2bFinal,\n blake2s: b2s.blake2s,\n blake2sHex: b2s.blake2sHex,\n blake2sInit: b2s.blake2sInit,\n blake2sUpdate: b2s.blake2sUpdate,\n blake2sFinal: b2s.blake2sFinal\n}\n","import{detect as ms}from\"detect-browser\";import{toMiliseconds as Ke,FIVE_MINUTES as Kn,fromMiliseconds as ws}from\"@walletconnect/time\";import{getDocument as ne,getNavigator as Fn,getLocation as zn}from\"@walletconnect/window-getters\";import{getWindowMetadata as xs}from\"@walletconnect/window-metadata\";import{recoverAddress as vs}from\"viem\";import re from\"bs58\";import{decode as Es,encode as Bs}from\"@msgpack/msgpack\";import{base32 as Is}from\"@scure/base\";import{decodeJWT as As}from\"@walletconnect/relay-auth\";import{toString as st,fromString as ft,concat as oe}from\"uint8arrays\";import{RELAY_JSONRPC as Ss}from\"@walletconnect/relay-api\";import{blake2b as Ns}from\"blakejs\";const xe=\":\";function Fe(t){const[e,n]=t.split(xe);return{namespace:e,reference:n}}function Gn(t){const{namespace:e,reference:n}=t;return[e,n].join(xe)}function ze(t){const[e,n,r]=t.split(xe);return{namespace:e,reference:n,address:r}}function Zn(t){const{namespace:e,reference:n,address:r}=t;return[e,n,r].join(xe)}function Ge(t,e){const n=[];return t.forEach(r=>{const o=e(r);n.includes(o)||n.push(o)}),n}function Wn(t){const{address:e}=ze(t);return e}function Yn(t){const{namespace:e,reference:n}=ze(t);return Gn({namespace:e,reference:n})}function Os(t,e){const{namespace:n,reference:r}=Fe(e);return Zn({namespace:n,reference:r,address:t})}function Us(t){return Ge(t,Wn)}function Xn(t){return Ge(t,Yn)}function _s(t,e=[]){const n=[];return Object.keys(t).forEach(r=>{if(e.length&&!e.includes(r))return;const o=t[r];n.push(...o.accounts)}),n}function Ts(t,e=[]){const n=[];return Object.keys(t).forEach(r=>{if(e.length&&!e.includes(r))return;const o=t[r];n.push(...Xn(o.accounts))}),n}function Rs(t,e=[]){const n=[];return Object.keys(t).forEach(r=>{if(e.length&&!e.includes(r))return;const o=t[r];n.push(...ve(r,o))}),n}function ve(t,e){return t.includes(\":\")?[t]:e.chains||[]}var $s=Object.defineProperty,Cs=Object.defineProperties,Ls=Object.getOwnPropertyDescriptors,Jn=Object.getOwnPropertySymbols,js=Object.prototype.hasOwnProperty,ks=Object.prototype.propertyIsEnumerable,Ze=(t,e,n)=>e in t?$s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Qn=(t,e)=>{for(var n in e||(e={}))js.call(e,n)&&Ze(t,n,e[n]);if(Jn)for(var n of Jn(e))ks.call(e,n)&&Ze(t,n,e[n]);return t},Ps=(t,e)=>Cs(t,Ls(e)),tr=(t,e,n)=>Ze(t,typeof e!=\"symbol\"?e+\"\":e,n);const er=\"ReactNative\",J={reactNative:\"react-native\",node:\"node\",browser:\"browser\",unknown:\"unknown\"},Ee=\" \",Hs=\":\",nr=\"/\",We=2,Ds=1e3,rr=\"js\";function Ye(){return typeof process<\"u\"&&typeof process.versions<\"u\"&&typeof process.versions.node<\"u\"}function Bt(){return!ne()&&!!Fn()&&navigator.product===er}function Ms(){return Bt()&&typeof global<\"u\"&&typeof(global==null?void 0:global.Platform)<\"u\"&&(global==null?void 0:global.Platform.OS)===\"android\"}function Vs(){return Bt()&&typeof global<\"u\"&&typeof(global==null?void 0:global.Platform)<\"u\"&&(global==null?void 0:global.Platform.OS)===\"ios\"}function zt(){return!Ye()&&!!Fn()&&!!ne()}function Pt(){return Bt()?J.reactNative:Ye()?J.node:zt()?J.browser:J.unknown}function qs(){var t;try{return Bt()&&typeof global<\"u\"&&typeof(global==null?void 0:global.Application)<\"u\"?(t=global.Application)==null?void 0:t.applicationId:void 0}catch{return}}function or(t,e){const n=new URLSearchParams(t);for(const r of Object.keys(e).sort())if(e.hasOwnProperty(r)){const o=e[r];o!==void 0&&n.set(r,o)}return n.toString()}function Ks(t){var e,n;const r=sr();try{return t!=null&&t.url&&r.url&&new URL(t.url).host!==new URL(r.url).host&&(console.warn(`The configured WalletConnect 'metadata.url':${t.url} differs from the actual page url:${r.url}. This is probably unintended and can lead to issues.`),t.url=r.url),(e=t?.icons)!=null&&e.length&&t.icons.length>0&&(t.icons=t.icons.filter(o=>o!==\"\")),Ps(Qn(Qn({},r),t),{url:t?.url||r.url,name:t?.name||r.name,description:t?.description||r.description,icons:(n=t?.icons)!=null&&n.length&&t.icons.length>0?t.icons:r.icons})}catch(o){return console.warn(\"Error populating app metadata\",o),t||r}}function sr(){return xs()||{name:\"\",description:\"\",url:\"\",icons:[\"\"]}}function Fs(t,e){var n;const r=Pt(),o={protocol:t,version:e,env:r};return r===\"browser\"&&(o.host=((n=zn())==null?void 0:n.host)||\"unknown\"),o}function ir(){if(Pt()===J.reactNative&&typeof global<\"u\"&&typeof(global==null?void 0:global.Platform)<\"u\"){const{OS:n,Version:r}=global.Platform;return[n,r].join(\"-\")}const t=ms();if(t===null)return\"unknown\";const e=t.os?t.os.replace(\" \",\"\").toLowerCase():\"unknown\";return t.type===\"browser\"?[e,t.name,t.version].join(\"-\"):[e,t.version].join(\"-\")}function fr(){var t;const e=Pt();return e===J.browser?[e,((t=zn())==null?void 0:t.host)||\"unknown\"].join(\":\"):e}function cr(t,e,n){const r=ir(),o=fr();return[[t,e].join(\"-\"),[rr,n].join(\"-\"),r,o].join(\"/\")}function zs({protocol:t,version:e,relayUrl:n,sdkVersion:r,auth:o,projectId:s,useOnCloseEvent:i,bundleId:f,packageName:a}){const l=n.split(\"?\"),c=cr(t,e,r),u={auth:o,ua:c,projectId:s,useOnCloseEvent:i||void 0,packageName:a||void 0,bundleId:f||void 0},h=or(l[1]||\"\",u);return l[0]+\"?\"+h}function Gs(t){let e=(t.match(/^[^:]+(?=:\\/\\/)/gi)||[])[0];const n=typeof e<\"u\"?t.split(\"://\")[1]:t;return e=e===\"wss\"?\"https\":\"http\",[e,n].join(\"://\")}function Zs(t,e,n){if(!t[e]||typeof t[e]!==n)throw new Error(`Missing or invalid \"${e}\" param`)}function ar(t,e=We){return ur(t.split(nr),e)}function Ws(t){return ar(t).join(Ee)}function It(t,e){return t.filter(n=>e.includes(n)).length===t.length}function ur(t,e=We){return t.slice(Math.max(t.length-e,0))}function Ys(t){return Object.fromEntries(t.entries())}function Xs(t){return new Map(Object.entries(t))}function Js(t,e){const n={};return Object.keys(t).forEach(r=>{n[r]=e(t[r])}),n}const Qs=t=>t;function lr(t){return t.trim().replace(/^\\w/,e=>e.toUpperCase())}function ti(t){return t.split(Ee).map(e=>lr(e)).join(Ee)}function ei(t=Kn,e){const n=Ke(t||Kn);let r,o,s,i;return{resolve:f=>{s&&r&&(clearTimeout(s),r(f),i=Promise.resolve(f))},reject:f=>{s&&o&&(clearTimeout(s),o(f))},done:()=>new Promise((f,a)=>{if(i)return f(i);s=setTimeout(()=>{const l=new Error(e);i=Promise.reject(l),a(l)},n),r=f,o=a})}}function ni(t,e,n){return new Promise(async(r,o)=>{const s=setTimeout(()=>o(new Error(n)),e);try{const i=await t;r(i)}catch(i){o(i)}clearTimeout(s)})}function Xe(t,e){if(typeof e==\"string\"&&e.startsWith(`${t}:`))return e;if(t.toLowerCase()===\"topic\"){if(typeof e!=\"string\")throw new Error('Value must be \"string\" for expirer target type: topic');return`topic:${e}`}else if(t.toLowerCase()===\"id\"){if(typeof e!=\"number\")throw new Error('Value must be \"number\" for expirer target type: id');return`id:${e}`}throw new Error(`Unknown expirer target type: ${t}`)}function ri(t){return Xe(\"topic\",t)}function oi(t){return Xe(\"id\",t)}function si(t){const[e,n]=t.split(\":\"),r={id:void 0,topic:void 0};if(e===\"topic\"&&typeof n==\"string\")r.topic=n;else if(e===\"id\"&&Number.isInteger(Number(n)))r.id=Number(n);else throw new Error(`Invalid target, expected id:number or topic:string, got ${e}:${n}`);return r}function ii(t,e){return ws((e||Date.now())+Ke(t))}function fi(t){return Date.now()>=Ke(t)}function ci(t,e){return`${t}${e?`:${e}`:\"\"}`}function ct(t=[],e=[]){return[...new Set([...t,...e])]}async function ai({id:t,topic:e,wcDeepLink:n}){var r;try{if(!n)return;const o=typeof n==\"string\"?JSON.parse(n):n,s=o?.href;if(typeof s!=\"string\")return;const i=dr(s,t,e),f=Pt();if(f===J.browser){if(!((r=ne())!=null&&r.hasFocus())){console.warn(\"Document does not have focus, skipping deeplink.\");return}hr(i)}else f===J.reactNative&&typeof(global==null?void 0:global.Linking)<\"u\"&&await global.Linking.openURL(i)}catch(o){console.error(o)}}function dr(t,e,n){const r=`requestId=${e}&sessionTopic=${n}`;t.endsWith(\"/\")&&(t=t.slice(0,-1));let o=`${t}`;if(t.startsWith(\"https://t.me\")){const s=t.includes(\"?\")?\"&startapp=\":\"?startapp=\";o=`${o}${s}${br(r,!0)}`}else o=`${o}/wc?${r}`;return o}function hr(t){let e=\"_self\";gr()?e=\"_top\":(pr()||t.startsWith(\"https://\")||t.startsWith(\"http://\"))&&(e=\"_blank\"),window.open(t,e,\"noreferrer noopener\")}async function ui(t,e){let n=\"\";try{if(zt()&&(n=localStorage.getItem(e),n))return n;n=await t.getItem(e)}catch(r){console.error(r)}return n}function Je(t,e){return t.filter(n=>e.includes(n))}function li(t,e){if(!t.includes(e))return null;const n=t.split(/([&,?,=])/),r=n.indexOf(e);return n[r+2]}function di(){return typeof crypto<\"u\"&&crypto!=null&&crypto.randomUUID?crypto.randomUUID():\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu,t=>{const e=Math.random()*16|0;return(t===\"x\"?e:e&3|8).toString(16)})}function hi(){return typeof process<\"u\"&&process.env.IS_VITEST===\"true\"}function pr(){return typeof window<\"u\"&&(!!window.TelegramWebviewProxy||!!window.Telegram||!!window.TelegramWebviewProxyProto)}function gr(){try{return window.self!==window.top}catch{return!1}}function br(t,e=!1){const n=Buffer.from(t).toString(\"base64\");return e?n.replace(/[=]/g,\"\"):n}function Qe(t){return Buffer.from(t,\"base64\").toString(\"utf-8\")}function pi(t){return new Promise(e=>setTimeout(e,t))}class gi{constructor({limit:e}){tr(this,\"limit\"),tr(this,\"set\"),this.limit=e,this.set=new Set}add(e){if(!this.set.has(e)){if(this.set.size>=this.limit){const n=this.set.values().next().value;n&&this.set.delete(n)}this.set.add(e)}}has(e){return this.set.has(e)}}const Be=BigInt(2**32-1),yr=BigInt(32);function mr(t,e=!1){return e?{h:Number(t&Be),l:Number(t>>yr&Be)}:{h:Number(t>>yr&Be)|0,l:Number(t&Be)|0}}function wr(t,e=!1){const n=t.length;let r=new Uint32Array(n),o=new Uint32Array(n);for(let s=0;st>>>n,vr=(t,e,n)=>t<<32-n|e>>>n,At=(t,e,n)=>t>>>n|e<<32-n,St=(t,e,n)=>t<<32-n|e>>>n,se=(t,e,n)=>t<<64-n|e>>>n-32,ie=(t,e,n)=>t>>>n-32|e<<64-n,bi=(t,e)=>e,yi=(t,e)=>t,mi=(t,e,n)=>t<>>32-n,wi=(t,e,n)=>e<>>32-n,xi=(t,e,n)=>e<>>64-n,vi=(t,e,n)=>t<>>64-n;function dt(t,e,n,r){const o=(e>>>0)+(r>>>0);return{h:t+n+(o/2**32|0)|0,l:o|0}}const tn=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),en=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Ei=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),Bi=(t,e,n,r,o)=>e+n+r+o+(t/2**32|0)|0,Ii=(t,e,n,r,o)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(o>>>0),Ai=(t,e,n,r,o,s)=>e+n+r+o+s+(t/2**32|0)|0,Gt=typeof globalThis==\"object\"&&\"crypto\"in globalThis?globalThis.crypto:void 0;function nn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\"Uint8Array\"}function mt(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(\"positive integer expected, got \"+t)}function at(t,...e){if(!nn(t))throw new Error(\"Uint8Array expected\");if(e.length>0&&!e.includes(t.length))throw new Error(\"Uint8Array expected of length \"+e+\", got length=\"+t.length)}function rn(t){if(typeof t!=\"function\"||typeof t.create!=\"function\")throw new Error(\"Hash should be wrapped by utils.createHasher\");mt(t.outputLen),mt(t.blockLen)}function Nt(t,e=!0){if(t.destroyed)throw new Error(\"Hash instance has been destroyed\");if(e&&t.finished)throw new Error(\"Hash#digest() has already been called\")}function on(t,e){at(t);const n=e.outputLen;if(t.length>>e}const Er=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Br(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}const wt=Er?t=>t:t=>Br(t);function Si(t){for(let e=0;et:Si,Ir=typeof Uint8Array.from([]).toHex==\"function\"&&typeof Uint8Array.fromHex==\"function\",Ni=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,\"0\"));function ce(t){if(at(t),Ir)return t.toHex();let e=\"\";for(let n=0;n=xt._0&&t<=xt._9)return t-xt._0;if(t>=xt.A&&t<=xt.F)return t-(xt.A-10);if(t>=xt.a&&t<=xt.f)return t-(xt.a-10)}function fn(t){if(typeof t!=\"string\")throw new Error(\"hex string expected, got \"+typeof t);if(Ir)return Uint8Array.fromHex(t);const e=t.length,n=e/2;if(e%2)throw new Error(\"hex string expected, got unpadded hex of length \"+e);const r=new Uint8Array(n);for(let o=0,s=0;ot().update(ht(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}function Ui(t){const e=(r,o)=>t(o).update(ht(r)).digest(),n=t({});return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}function Zt(t=32){if(Gt&&typeof Gt.getRandomValues==\"function\")return Gt.getRandomValues(new Uint8Array(t));if(Gt&&typeof Gt.randomBytes==\"function\")return Uint8Array.from(Gt.randomBytes(t));throw new Error(\"crypto.getRandomValues must be defined\")}const _i=BigInt(0),ue=BigInt(1),Ti=BigInt(2),Ri=BigInt(7),$i=BigInt(256),Ci=BigInt(113),Sr=[],Nr=[],Or=[];for(let t=0,e=ue,n=1,r=0;t<24;t++){[n,r]=[r,(2*n+3*r)%5],Sr.push(2*(5*r+n)),Nr.push((t+1)*(t+2)/2%64);let o=_i;for(let s=0;s<7;s++)e=(e<>Ri)*Ci)%$i,e&Ti&&(o^=ue<<(ue<n>32?xi(t,e,n):mi(t,e,n),Tr=(t,e,n)=>n>32?vi(t,e,n):wi(t,e,n);function ki(t,e=24){const n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let i=0;i<10;i++)n[i]=t[i]^t[i+10]^t[i+20]^t[i+30]^t[i+40];for(let i=0;i<10;i+=2){const f=(i+8)%10,a=(i+2)%10,l=n[a],c=n[a+1],u=_r(l,c,1)^n[f],h=Tr(l,c,1)^n[f+1];for(let g=0;g<50;g+=10)t[i+g]^=u,t[i+g+1]^=h}let o=t[2],s=t[3];for(let i=0;i<24;i++){const f=Nr[i],a=_r(o,s,f),l=Tr(o,s,f),c=Sr[i];o=t[c],s=t[c+1],t[c]=a,t[c+1]=l}for(let i=0;i<50;i+=10){for(let f=0;f<10;f++)n[f]=t[i+f];for(let f=0;f<10;f++)t[i+f]^=~n[(f+2)%10]&n[(f+4)%10]}t[0]^=Li[r],t[1]^=ji[r]}ut(n)}class qn extends Ie{constructor(e,n,r,o=!1,s=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=n,this.outputLen=r,this.enableXOF=o,this.rounds=s,mt(r),!(0=r&&this.keccak();const i=Math.min(r-this.posOut,s-o);e.set(n.subarray(this.posOut,this.posOut+i),o),this.posOut+=i,o+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error(\"XOF is not possible for this instance\");return this.writeInto(e)}xof(e){return mt(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(on(e,this),this.finished)throw new Error(\"digest() was already called\");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,ut(this.state)}_cloneInto(e){const{blockLen:n,suffix:r,outputLen:o,rounds:s,enableXOF:i}=this;return e||(e=new qn(n,r,o,i,s)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=s,e.suffix=r,e.outputLen=o,e.enableXOF=i,e.destroyed=this.destroyed,e}}const Pi=(t,e,n)=>ae(()=>new qn(e,t,n)),Hi=Pi(1,136,256/8);function Di(t,e,n,r){if(typeof t.setBigUint64==\"function\")return t.setBigUint64(e,n,r);const o=BigInt(32),s=BigInt(4294967295),i=Number(n>>o&s),f=Number(n&s),a=r?4:0,l=r?0:4;t.setUint32(e+a,i,r),t.setUint32(e+l,f,r)}function Mi(t,e,n){return t&e^~t&n}function Vi(t,e,n){return t&e^t&n^e&n}class Rr extends Ie{constructor(e,n,r,o){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=sn(this.buffer)}update(e){Nt(this),e=ht(e),at(e);const{view:n,buffer:r,blockLen:o}=this,s=e.length;for(let i=0;io-i&&(this.process(r,0),i=0);for(let u=i;uc.length)throw new Error(\"_sha2: outputLen bigger than state\");for(let u=0;u>>3,y=gt(g,17)^gt(g,19)^g>>>10;_t[u]=y+_t[u-7]+w+_t[u-16]|0}let{A:r,B:o,C:s,D:i,E:f,F:a,G:l,H:c}=this;for(let u=0;u<64;u++){const h=gt(f,6)^gt(f,11)^gt(f,25),g=c+h+Mi(f,a,l)+qi[u]+_t[u]|0,y=(gt(r,2)^gt(r,13)^gt(r,22))+Vi(r,o,s)|0;c=l,l=a,a=f,f=i+g|0,i=s,s=o,o=r,r=g+y|0}r=r+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,f=f+this.E|0,a=a+this.F|0,l=l+this.G|0,c=c+this.H|0,this.set(r,o,s,i,f,a,l,c)}roundClean(){ut(_t)}destroy(){this.set(0,0,0,0,0,0,0,0),ut(this.buffer)}}const $r=wr([\"0x428a2f98d728ae22\",\"0x7137449123ef65cd\",\"0xb5c0fbcfec4d3b2f\",\"0xe9b5dba58189dbbc\",\"0x3956c25bf348b538\",\"0x59f111f1b605d019\",\"0x923f82a4af194f9b\",\"0xab1c5ed5da6d8118\",\"0xd807aa98a3030242\",\"0x12835b0145706fbe\",\"0x243185be4ee4b28c\",\"0x550c7dc3d5ffb4e2\",\"0x72be5d74f27b896f\",\"0x80deb1fe3b1696b1\",\"0x9bdc06a725c71235\",\"0xc19bf174cf692694\",\"0xe49b69c19ef14ad2\",\"0xefbe4786384f25e3\",\"0x0fc19dc68b8cd5b5\",\"0x240ca1cc77ac9c65\",\"0x2de92c6f592b0275\",\"0x4a7484aa6ea6e483\",\"0x5cb0a9dcbd41fbd4\",\"0x76f988da831153b5\",\"0x983e5152ee66dfab\",\"0xa831c66d2db43210\",\"0xb00327c898fb213f\",\"0xbf597fc7beef0ee4\",\"0xc6e00bf33da88fc2\",\"0xd5a79147930aa725\",\"0x06ca6351e003826f\",\"0x142929670a0e6e70\",\"0x27b70a8546d22ffc\",\"0x2e1b21385c26c926\",\"0x4d2c6dfc5ac42aed\",\"0x53380d139d95b3df\",\"0x650a73548baf63de\",\"0x766a0abb3c77b2a8\",\"0x81c2c92e47edaee6\",\"0x92722c851482353b\",\"0xa2bfe8a14cf10364\",\"0xa81a664bbc423001\",\"0xc24b8b70d0f89791\",\"0xc76c51a30654be30\",\"0xd192e819d6ef5218\",\"0xd69906245565a910\",\"0xf40e35855771202a\",\"0x106aa07032bbd1b8\",\"0x19a4c116b8d2d0c8\",\"0x1e376c085141ab53\",\"0x2748774cdf8eeb99\",\"0x34b0bcb5e19b48a8\",\"0x391c0cb3c5c95a63\",\"0x4ed8aa4ae3418acb\",\"0x5b9cca4f7763e373\",\"0x682e6ff3d6b2b8a3\",\"0x748f82ee5defb2fc\",\"0x78a5636f43172f60\",\"0x84c87814a1f0ab72\",\"0x8cc702081a6439ec\",\"0x90befffa23631e28\",\"0xa4506cebde82bde9\",\"0xbef9a3f7b2c67915\",\"0xc67178f2e372532b\",\"0xca273eceea26619c\",\"0xd186b8c721c0c207\",\"0xeada7dd6cde0eb1e\",\"0xf57d4f7fee6ed178\",\"0x06f067aa72176fba\",\"0x0a637dc5a2c898a6\",\"0x113f9804bef90dae\",\"0x1b710b35131c471b\",\"0x28db77f523047d84\",\"0x32caab7b40c72493\",\"0x3c9ebe0a15c9bebc\",\"0x431d67c49c100d4c\",\"0x4cc5d4becb3e42b6\",\"0x597f299cfc657e2a\",\"0x5fcb6fab3ad6faec\",\"0x6c44198c4a475817\"].map(t=>BigInt(t))),Fi=$r[0],zi=$r[1],Tt=new Uint32Array(80),Rt=new Uint32Array(80);class cn extends Rr{constructor(e=64){super(128,e,16,!1),this.Ah=Y[0]|0,this.Al=Y[1]|0,this.Bh=Y[2]|0,this.Bl=Y[3]|0,this.Ch=Y[4]|0,this.Cl=Y[5]|0,this.Dh=Y[6]|0,this.Dl=Y[7]|0,this.Eh=Y[8]|0,this.El=Y[9]|0,this.Fh=Y[10]|0,this.Fl=Y[11]|0,this.Gh=Y[12]|0,this.Gl=Y[13]|0,this.Hh=Y[14]|0,this.Hl=Y[15]|0}get(){const{Ah:e,Al:n,Bh:r,Bl:o,Ch:s,Cl:i,Dh:f,Dl:a,Eh:l,El:c,Fh:u,Fl:h,Gh:g,Gl:w,Hh:y,Hl:x}=this;return[e,n,r,o,s,i,f,a,l,c,u,h,g,w,y,x]}set(e,n,r,o,s,i,f,a,l,c,u,h,g,w,y,x){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=f|0,this.Dl=a|0,this.Eh=l|0,this.El=c|0,this.Fh=u|0,this.Fl=h|0,this.Gh=g|0,this.Gl=w|0,this.Hh=y|0,this.Hl=x|0}process(e,n){for(let L=0;L<16;L++,n+=4)Tt[L]=e.getUint32(n),Rt[L]=e.getUint32(n+=4);for(let L=16;L<80;L++){const V=Tt[L-15]|0,_=Rt[L-15]|0,k=At(V,_,1)^At(V,_,8)^xr(V,_,7),j=St(V,_,1)^St(V,_,8)^vr(V,_,7),$=Tt[L-2]|0,d=Rt[L-2]|0,m=At($,d,19)^se($,d,61)^xr($,d,6),p=St($,d,19)^ie($,d,61)^vr($,d,6),b=Ei(j,p,Rt[L-7],Rt[L-16]),v=Bi(b,k,m,Tt[L-7],Tt[L-16]);Tt[L]=v|0,Rt[L]=b|0}let{Ah:r,Al:o,Bh:s,Bl:i,Ch:f,Cl:a,Dh:l,Dl:c,Eh:u,El:h,Fh:g,Fl:w,Gh:y,Gl:x,Hh:R,Hl:M}=this;for(let L=0;L<80;L++){const V=At(u,h,14)^At(u,h,18)^se(u,h,41),_=St(u,h,14)^St(u,h,18)^ie(u,h,41),k=u&g^~u&y,j=h&w^~h&x,$=Ii(M,_,j,zi[L],Rt[L]),d=Ai($,R,V,k,Fi[L],Tt[L]),m=$|0,p=At(r,o,28)^se(r,o,34)^se(r,o,39),b=St(r,o,28)^ie(r,o,34)^ie(r,o,39),v=r&s^r&f^s&f,B=o&i^o&a^i&a;R=y|0,M=x|0,y=g|0,x=w|0,g=u|0,w=h|0,{h:u,l:h}=dt(l|0,c|0,d|0,m|0),l=f|0,c=a|0,f=s|0,a=i|0,s=r|0,i=o|0;const E=tn(m,b,B);r=en(E,d,p,v),o=E|0}({h:r,l:o}=dt(this.Ah|0,this.Al|0,r|0,o|0)),{h:s,l:i}=dt(this.Bh|0,this.Bl|0,s|0,i|0),{h:f,l:a}=dt(this.Ch|0,this.Cl|0,f|0,a|0),{h:l,l:c}=dt(this.Dh|0,this.Dl|0,l|0,c|0),{h:u,l:h}=dt(this.Eh|0,this.El|0,u|0,h|0),{h:g,l:w}=dt(this.Fh|0,this.Fl|0,g|0,w|0),{h:y,l:x}=dt(this.Gh|0,this.Gl|0,y|0,x|0),{h:R,l:M}=dt(this.Hh|0,this.Hl|0,R|0,M|0),this.set(r,o,s,i,f,a,l,c,u,h,g,w,y,x,R,M)}roundClean(){ut(Tt,Rt)}destroy(){ut(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Gi extends cn{constructor(){super(48),this.Ah=W[0]|0,this.Al=W[1]|0,this.Bh=W[2]|0,this.Bl=W[3]|0,this.Ch=W[4]|0,this.Cl=W[5]|0,this.Dh=W[6]|0,this.Dl=W[7]|0,this.Eh=W[8]|0,this.El=W[9]|0,this.Fh=W[10]|0,this.Fl=W[11]|0,this.Gh=W[12]|0,this.Gl=W[13]|0,this.Hh=W[14]|0,this.Hl=W[15]|0}}const X=Uint32Array.from([573645204,4230739756,2673172387,3360449730,596883563,1867755857,2520282905,1497426621,2519219938,2827943907,3193839141,1401305490,721525244,746961066,246885852,2177182882]);class Zi extends cn{constructor(){super(32),this.Ah=X[0]|0,this.Al=X[1]|0,this.Bh=X[2]|0,this.Bl=X[3]|0,this.Ch=X[4]|0,this.Cl=X[5]|0,this.Dh=X[6]|0,this.Dl=X[7]|0,this.Eh=X[8]|0,this.El=X[9]|0,this.Fh=X[10]|0,this.Fl=X[11]|0,this.Gh=X[12]|0,this.Gl=X[13]|0,this.Hh=X[14]|0,this.Hl=X[15]|0}}const Ae=ae(()=>new Ki),Wi=ae(()=>new cn),Yi=ae(()=>new Gi),Xi=ae(()=>new Zi),Ji=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9]),F=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),N=new Uint32Array(32);function $t(t,e,n,r,o,s){const i=o[s],f=o[s+1];let a=N[2*t],l=N[2*t+1],c=N[2*e],u=N[2*e+1],h=N[2*n],g=N[2*n+1],w=N[2*r],y=N[2*r+1],x=tn(a,c,i);l=en(x,l,u,f),a=x|0,{Dh:y,Dl:w}={Dh:y^l,Dl:w^a},{Dh:y,Dl:w}={Dh:bi(y,w),Dl:yi(y)},{h:g,l:h}=dt(g,h,y,w),{Bh:u,Bl:c}={Bh:u^g,Bl:c^h},{Bh:u,Bl:c}={Bh:At(u,c,24),Bl:St(u,c,24)},N[2*t]=a,N[2*t+1]=l,N[2*e]=c,N[2*e+1]=u,N[2*n]=h,N[2*n+1]=g,N[2*r]=w,N[2*r+1]=y}function Ct(t,e,n,r,o,s){const i=o[s],f=o[s+1];let a=N[2*t],l=N[2*t+1],c=N[2*e],u=N[2*e+1],h=N[2*n],g=N[2*n+1],w=N[2*r],y=N[2*r+1],x=tn(a,c,i);l=en(x,l,u,f),a=x|0,{Dh:y,Dl:w}={Dh:y^l,Dl:w^a},{Dh:y,Dl:w}={Dh:At(y,w,16),Dl:St(y,w,16)},{h:g,l:h}=dt(g,h,y,w),{Bh:u,Bl:c}={Bh:u^g,Bl:c^h},{Bh:u,Bl:c}={Bh:se(u,c,63),Bl:ie(u,c,63)},N[2*t]=a,N[2*t+1]=l,N[2*e]=c,N[2*e+1]=u,N[2*n]=h,N[2*n+1]=g,N[2*r]=w,N[2*r+1]=y}function Qi(t,e={},n,r,o){if(mt(n),t<0||t>n)throw new Error(\"outputLen bigger than keyLen\");const{key:s,salt:i,personalization:f}=e;if(s!==void 0&&(s.length<1||s.length>n))throw new Error(\"key length must be undefined or 1..\"+n);if(i!==void 0&&i.length!==r)throw new Error(\"salt must be undefined or \"+r);if(f!==void 0&&f.length!==o)throw new Error(\"personalization must be undefined or \"+o)}class tf extends Ie{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,this.length=0,this.pos=0,mt(e),mt(n),this.blockLen=e,this.outputLen=n,this.buffer=new Uint8Array(e),this.buffer32=fe(this.buffer)}update(e){Nt(this),e=ht(e),at(e);const{blockLen:n,buffer:r,buffer32:o}=this,s=e.length,i=e.byteOffset,f=e.buffer;for(let a=0;ao[i]=wt(s))}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){const{buffer:n,length:r,finished:o,destroyed:s,outputLen:i,pos:f}=this;return e||(e=new this.constructor({dkLen:i})),e.set(...this.get()),e.buffer.set(n),e.destroyed=s,e.finished=o,e.length=r,e.pos=f,e.outputLen=i,e}clone(){return this._cloneInto()}}class ef extends tf{constructor(e={}){const n=e.dkLen===void 0?64:e.dkLen;super(128,n),this.v0l=F[0]|0,this.v0h=F[1]|0,this.v1l=F[2]|0,this.v1h=F[3]|0,this.v2l=F[4]|0,this.v2h=F[5]|0,this.v3l=F[6]|0,this.v3h=F[7]|0,this.v4l=F[8]|0,this.v4h=F[9]|0,this.v5l=F[10]|0,this.v5h=F[11]|0,this.v6l=F[12]|0,this.v6h=F[13]|0,this.v7l=F[14]|0,this.v7h=F[15]|0,Qi(n,e,64,16,16);let{key:r,personalization:o,salt:s}=e,i=0;if(r!==void 0&&(r=ht(r),i=r.length),this.v0l^=this.outputLen|i<<8|65536|1<<24,s!==void 0){s=ht(s);const f=fe(s);this.v4l^=wt(f[0]),this.v4h^=wt(f[1]),this.v5l^=wt(f[2]),this.v5h^=wt(f[3])}if(o!==void 0){o=ht(o);const f=fe(o);this.v6l^=wt(f[0]),this.v6h^=wt(f[1]),this.v7l^=wt(f[2]),this.v7h^=wt(f[3])}if(r!==void 0){const f=new Uint8Array(this.blockLen);f.set(r),this.update(f)}}get(){let{v0l:e,v0h:n,v1l:r,v1h:o,v2l:s,v2h:i,v3l:f,v3h:a,v4l:l,v4h:c,v5l:u,v5h:h,v6l:g,v6h:w,v7l:y,v7h:x}=this;return[e,n,r,o,s,i,f,a,l,c,u,h,g,w,y,x]}set(e,n,r,o,s,i,f,a,l,c,u,h,g,w,y,x){this.v0l=e|0,this.v0h=n|0,this.v1l=r|0,this.v1h=o|0,this.v2l=s|0,this.v2h=i|0,this.v3l=f|0,this.v3h=a|0,this.v4l=l|0,this.v4h=c|0,this.v5l=u|0,this.v5h=h|0,this.v6l=g|0,this.v6h=w|0,this.v7l=y|0,this.v7h=x|0}compress(e,n,r){this.get().forEach((a,l)=>N[l]=a),N.set(F,16);let{h:o,l:s}=mr(BigInt(this.length));N[24]=F[8]^s,N[25]=F[9]^o,r&&(N[28]=~N[28],N[29]=~N[29]);let i=0;const f=Ji;for(let a=0;a<12;a++)$t(0,4,8,12,e,n+2*f[i++]),Ct(0,4,8,12,e,n+2*f[i++]),$t(1,5,9,13,e,n+2*f[i++]),Ct(1,5,9,13,e,n+2*f[i++]),$t(2,6,10,14,e,n+2*f[i++]),Ct(2,6,10,14,e,n+2*f[i++]),$t(3,7,11,15,e,n+2*f[i++]),Ct(3,7,11,15,e,n+2*f[i++]),$t(0,5,10,15,e,n+2*f[i++]),Ct(0,5,10,15,e,n+2*f[i++]),$t(1,6,11,12,e,n+2*f[i++]),Ct(1,6,11,12,e,n+2*f[i++]),$t(2,7,8,13,e,n+2*f[i++]),Ct(2,7,8,13,e,n+2*f[i++]),$t(3,4,9,14,e,n+2*f[i++]),Ct(3,4,9,14,e,n+2*f[i++]);this.v0l^=N[0]^N[16],this.v0h^=N[1]^N[17],this.v1l^=N[2]^N[18],this.v1h^=N[3]^N[19],this.v2l^=N[4]^N[20],this.v2h^=N[5]^N[21],this.v3l^=N[6]^N[22],this.v3h^=N[7]^N[23],this.v4l^=N[8]^N[24],this.v4h^=N[9]^N[25],this.v5l^=N[10]^N[26],this.v5h^=N[11]^N[27],this.v6l^=N[12]^N[28],this.v6h^=N[13]^N[29],this.v7l^=N[14]^N[30],this.v7h^=N[15]^N[31],ut(N)}destroy(){this.destroyed=!0,ut(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const nf=Ui(t=>new ef(t)),rf=\"https://rpc.walletconnect.org/v1\";function an(t){const e=`\u0019Ethereum Signed Message:\n${t.length}`,n=new TextEncoder().encode(e+t);return\"0x\"+Buffer.from(Hi(n)).toString(\"hex\")}async function Cr(t,e,n,r,o,s){switch(n.t){case\"eip191\":return await Lr(t,e,n.s);case\"eip1271\":return await jr(t,e,n.s,r,o,s);default:throw new Error(`verifySignature failed: Attempted to verify CacaoSignature with unknown type: ${n.t}`)}}async function Lr(t,e,n){return(await vs({hash:an(e),signature:n})).toLowerCase()===t.toLowerCase()}async function jr(t,e,n,r,o,s){const i=Fe(r);if(!i.namespace||!i.reference)throw new Error(`isValidEip1271Signature failed: chainId must be in CAIP-2 format, received: ${r}`);try{const f=\"0x1626ba7e\",a=\"0000000000000000000000000000000000000000000000000000000000000040\",l=n.substring(2),c=(l.length/2).toString(16).padStart(64,\"0\"),u=(e.startsWith(\"0x\")?e:an(e)).substring(2),h=f+u+a+c+l,g=await fetch(`${s||rf}/?chainId=${r}&projectId=${o}`,{headers:{\"Content-Type\":\"application/json\"},method:\"POST\",body:JSON.stringify({id:of(),jsonrpc:\"2.0\",method:\"eth_call\",params:[{to:t,data:h},\"latest\"]})}),{result:w}=await g.json();return w?w.slice(0,f.length).toLowerCase()===f.toLowerCase():!1}catch(f){return console.error(\"isValidEip1271Signature: \",f),!1}}function of(){return Date.now()+Math.floor(Math.random()*1e3)}function sf(t){const e=atob(t),n=new Uint8Array(e.length);for(let i=0;is.charCodeAt(0)),r=new Uint8Array(n.length+e.length);r.set(n),r.set(e,n.length);const o=nf(r,{dkLen:32});return re.encode(o)}function cf(t){const e=new Uint8Array(Ae(kr(t)));return re.encode(e)}function kr(t){if(t instanceof Uint8Array)return t;if(Array.isArray(t))return new Uint8Array(t);if(typeof t==\"object\"&&t!=null&&t.data)return new Uint8Array(Object.values(t.data));if(typeof t==\"object\"&&t)return new Uint8Array(Object.values(t));throw new Error(\"getNearUint8ArrayFromBytes: Unexpected result type from bytes array\")}function af(t){const e=Buffer.from(t,\"base64\"),n=Es(e).txn;if(!n)throw new Error(\"Invalid signed transaction: missing 'txn' field\");const r=Bs(n),o=Buffer.from(\"TX\"),s=Buffer.concat([o,Buffer.from(r)]),i=Xi(s);return Is.encode(i).replace(/=+$/,\"\")}function un(t){const e=[];let n=BigInt(t);for(;n>=BigInt(128);)e.push(Number(n&BigInt(127)|BigInt(128))),n>>=BigInt(7);return e.push(Number(n)),Buffer.from(e)}function uf(t){const e=Buffer.from(t.signed.bodyBytes,\"base64\"),n=Buffer.from(t.signed.authInfoBytes,\"base64\"),r=Buffer.from(t.signature.signature,\"base64\"),o=[];o.push(Buffer.from([10])),o.push(un(e.length)),o.push(e),o.push(Buffer.from([18])),o.push(un(n.length)),o.push(n),o.push(Buffer.from([26])),o.push(un(r.length)),o.push(r);const s=Buffer.concat(o),i=Ae(s);return Buffer.from(i).toString(\"hex\").toUpperCase()}var lf=Object.defineProperty,df=Object.defineProperties,hf=Object.getOwnPropertyDescriptors,Pr=Object.getOwnPropertySymbols,pf=Object.prototype.hasOwnProperty,gf=Object.prototype.propertyIsEnumerable,Hr=(t,e,n)=>e in t?lf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ln=(t,e)=>{for(var n in e||(e={}))pf.call(e,n)&&Hr(t,n,e[n]);if(Pr)for(var n of Pr(e))gf.call(e,n)&&Hr(t,n,e[n]);return t},Dr=(t,e)=>df(t,hf(e));const bf=\"did:pkh:\",Se=t=>t?.split(\":\"),Mr=t=>{const e=t&&Se(t);if(e)return t.includes(bf)?e[3]:e[1]},Vr=t=>{const e=t&&Se(t);if(e)return e[2]+\":\"+e[3]},dn=t=>{const e=t&&Se(t);if(e)return e.pop()};async function yf(t){const{cacao:e,projectId:n}=t,{s:r,p:o}=e,s=qr(o,o.iss),i=dn(o.iss);return await Cr(i,s,r,Vr(o.iss),n)}const qr=(t,e)=>{const n=`${t.domain} wants you to sign in with your Ethereum account:`,r=dn(e);if(!t.aud&&!t.uri)throw new Error(\"Either `aud` or `uri` is required to construct the message\");let o=t.statement||void 0;const s=`URI: ${t.aud||t.uri}`,i=`Version: ${t.version}`,f=`Chain ID: ${Mr(e)}`,a=`Nonce: ${t.nonce}`,l=`Issued At: ${t.iat}`,c=t.exp?`Expiration Time: ${t.exp}`:void 0,u=t.nbf?`Not Before: ${t.nbf}`:void 0,h=t.requestId?`Request ID: ${t.requestId}`:void 0,g=t.resources?`Resources:${t.resources.map(y=>`\n- ${y}`).join(\"\")}`:void 0,w=Oe(t.resources);if(w){const y=Lt(w);o=gn(o,y)}return[n,r,\"\",o,\"\",s,i,f,a,l,c,u,h,g].filter(y=>y!=null).join(`\n`)};function mf(t,e,n){return n.includes(\"did:pkh:\")||(n=`did:pkh:${n}`),{h:{t:\"caip122\"},p:{iss:n,domain:t.domain,aud:t.aud,version:t.version,nonce:t.nonce,iat:t.iat,statement:t.statement,requestId:t.requestId,resources:t.resources,nbf:t.nbf,exp:t.exp},s:e}}function wf(t){var e;const{authPayload:n,chains:r,methods:o}=t,s=n.statement||\"\";if(!(r!=null&&r.length))return n;const i=n.chains,f=Je(i,r);if(!(f!=null&&f.length))throw new Error(\"No supported chains\");const a=Kr(n.resources);if(!a)return n;bt(a);const l=Fr(a,\"eip155\");let c=n?.resources||[];if(l!=null&&l.length){const u=zr(l),h=Je(u,o);if(!(h!=null&&h.length))throw new Error(`Supported methods don't satisfy the requested: ${JSON.stringify(u)}, supported: ${JSON.stringify(o)}`);const g=hn(\"request\",h,{chains:f}),w=Yr(a,\"eip155\",g);c=((e=n?.resources)==null?void 0:e.slice(0,-1))||[],c.push(Ne(w))}return Dr(ln({},n),{statement:Jr(s,Oe(c)),chains:f,resources:n!=null&&n.resources||c.length>0?c:void 0})}function Kr(t){const e=Oe(t);if(e&&pn(e))return Lt(e)}function xf(t,e){var n;return(n=t?.att)==null?void 0:n.hasOwnProperty(e)}function Fr(t,e){var n,r;return(n=t?.att)!=null&&n[e]?Object.keys((r=t?.att)==null?void 0:r[e]):[]}function vf(t){return t?.map(e=>Object.keys(e))||[]}function zr(t){return t?.map(e=>{var n;return(n=e.split(\"/\"))==null?void 0:n[1]})||[]}function Gr(t){return Buffer.from(JSON.stringify(t)).toString(\"base64\")}function Zr(t){return JSON.parse(Buffer.from(t,\"base64\").toString(\"utf-8\"))}function bt(t){if(!t)throw new Error(\"No recap provided, value is undefined\");if(!t.att)throw new Error(\"No `att` property found\");const e=Object.keys(t.att);if(!(e!=null&&e.length))throw new Error(\"No resources found in `att` property\");e.forEach(n=>{const r=t.att[n];if(Array.isArray(r))throw new Error(`Resource must be an object: ${n}`);if(typeof r!=\"object\")throw new Error(`Resource must be an object: ${n}`);if(!Object.keys(r).length)throw new Error(`Resource object is empty: ${n}`);Object.keys(r).forEach(o=>{const s=r[o];if(!Array.isArray(s))throw new Error(`Ability limits ${o} must be an array of objects, found: ${s}`);if(!s.length)throw new Error(`Value of ${o} is empty array, must be an array with objects`);s.forEach(i=>{if(typeof i!=\"object\")throw new Error(`Ability limits (${o}) must be an array of objects, found: ${i}`)})})})}function Wr(t,e,n,r={}){return n?.sort((o,s)=>o.localeCompare(s)),{att:{[t]:hn(e,n,r)}}}function Yr(t,e,n){var r;t.att[e]=ln({},n);const o=(r=Object.keys(t.att))==null?void 0:r.sort((i,f)=>i.localeCompare(f)),s={att:{}};return o.reduce((i,f)=>(i.att[f]=t.att[f],i),s)}function hn(t,e,n={}){e=e?.sort((o,s)=>o.localeCompare(s));const r=e.map(o=>({[`${t}/${o}`]:[n]}));return Object.assign({},...r)}function Ne(t){return bt(t),`urn:recap:${Gr(t).replace(/=/g,\"\")}`}function Lt(t){const e=Zr(t.replace(\"urn:recap:\",\"\"));return bt(e),e}function Ef(t,e,n){const r=Wr(t,e,n);return Ne(r)}function pn(t){return t&&t.includes(\"urn:recap:\")}function Bf(t,e){const n=Lt(t),r=Lt(e),o=Xr(n,r);return Ne(o)}function Xr(t,e){bt(t),bt(e);const n=Object.keys(t.att).concat(Object.keys(e.att)).sort((o,s)=>o.localeCompare(s)),r={att:{}};return n.forEach(o=>{var s,i;Object.keys(((s=t.att)==null?void 0:s[o])||{}).concat(Object.keys(((i=e.att)==null?void 0:i[o])||{})).sort((f,a)=>f.localeCompare(a)).forEach(f=>{var a,l;r.att[o]=Dr(ln({},r.att[o]),{[f]:((a=t.att[o])==null?void 0:a[f])||((l=e.att[o])==null?void 0:l[f])})})}),r}function gn(t=\"\",e){bt(e);const n=\"I further authorize the stated URI to perform the following actions on my behalf: \";if(t.includes(n))return t;const r=[];let o=0;Object.keys(e.att).forEach(f=>{const a=Object.keys(e.att[f]).map(u=>({ability:u.split(\"/\")[0],action:u.split(\"/\")[1]}));a.sort((u,h)=>u.action.localeCompare(h.action));const l={};a.forEach(u=>{l[u.ability]||(l[u.ability]=[]),l[u.ability].push(u.action)});const c=Object.keys(l).map(u=>(o++,`(${o}) '${u}': '${l[u].join(\"', '\")}' for '${f}'.`));r.push(c.join(\", \").replace(\".,\",\".\"))});const s=r.join(\" \"),i=`${n}${s}`;return`${t?t+\" \":\"\"}${i}`}function If(t){var e;const n=Lt(t);bt(n);const r=(e=n.att)==null?void 0:e.eip155;return r?Object.keys(r).map(o=>o.split(\"/\")[1]):[]}function Af(t){const e=Lt(t);bt(e);const n=[];return Object.values(e.att).forEach(r=>{Object.values(r).forEach(o=>{var s;(s=o?.[0])!=null&&s.chains&&n.push(o[0].chains)})}),[...new Set(n.flat())]}function Jr(t,e){if(!e)return t;const n=Lt(e);return bt(n),gn(t,n)}function Oe(t){if(!t)return;const e=t?.[t.length-1];return pn(e)?e:void 0}/*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) */function Qr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\"Uint8Array\"}function bn(t){if(typeof t!=\"boolean\")throw new Error(`boolean expected, not ${t}`)}function yn(t){if(!Number.isSafeInteger(t)||t<0)throw new Error(\"positive integer expected, got \"+t)}function nt(t,...e){if(!Qr(t))throw new Error(\"Uint8Array expected\");if(e.length>0&&!e.includes(t.length))throw new Error(\"Uint8Array expected of length \"+e+\", got length=\"+t.length)}function to(t,e=!0){if(t.destroyed)throw new Error(\"Hash instance has been destroyed\");if(e&&t.finished)throw new Error(\"Hash#digest() has already been called\")}function Sf(t,e){nt(t);const n=e.outputLen;if(t.length{function n(r,...o){if(nt(r),!Of)throw new Error(\"Non little-endian hardware is not yet supported\");if(t.nonceLength!==void 0){const c=o[0];if(!c)throw new Error(\"nonce / iv required\");t.varSizeNonce?nt(c):nt(c,t.nonceLength)}const s=t.tagLength;s&&o[1]!==void 0&&nt(o[1]);const i=e(r,...o),f=(c,u)=>{if(u!==void 0){if(c!==2)throw new Error(\"cipher output not supported\");nt(u)}};let a=!1;return{encrypt(c,u){if(a)throw new Error(\"cannot encrypt() twice with same key + nonce\");return a=!0,nt(c),f(i.encrypt.length,u),i.encrypt(c,u)},decrypt(c,u){if(nt(c),s&&c.length>o&s),f=Number(n&s),a=r?4:0,l=r?0:4;t.setUint32(e+a,i,r),t.setUint32(e+l,f,r)}function $f(t,e,n){bn(n);const r=new Uint8Array(16),o=Nf(r);return no(o,0,BigInt(e),n),no(o,8,BigInt(t),n),r}function Cf(t){return t.byteOffset%4===0}function wn(t){return Uint8Array.from(t)}const ro=t=>Uint8Array.from(t.split(\"\").map(e=>e.charCodeAt(0))),Lf=ro(\"expand 16-byte k\"),jf=ro(\"expand 32-byte k\"),kf=jt(Lf),Pf=jt(jf);function D(t,e){return t<>>32-e}function xn(t){return t.byteOffset%4===0}const Ue=64,Hf=16,oo=2**32-1,so=new Uint32Array;function Df(t,e,n,r,o,s,i,f){const a=o.length,l=new Uint8Array(Ue),c=jt(l),u=xn(o)&&xn(s),h=u?jt(o):so,g=u?jt(s):so;for(let w=0;w=oo)throw new Error(\"arx: counter overflow\");const y=Math.min(Ue,a-w);if(u&&y===Ue){const x=w/4;if(w%4!==0)throw new Error(\"arx: invalid block position\");for(let R=0,M;R{nt(f),nt(a),nt(l);const h=l.length;if(c===void 0&&(c=new Uint8Array(h)),nt(c),yn(u),u<0||u>=oo)throw new Error(\"arx: counter overflow\");if(c.lengtht[e++]&255|(t[e++]&255)<<8;class Vf{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=mn(e),nt(e,32);const n=G(e,0),r=G(e,2),o=G(e,4),s=G(e,6),i=G(e,8),f=G(e,10),a=G(e,12),l=G(e,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|f<<2)&8191,this.r[7]=(f>>>11|a<<5)&8065,this.r[8]=(a>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let c=0;c<8;c++)this.pad[c]=G(e,16+2*c)}process(e,n,r=!1){const o=r?0:2048,{h:s,r:i}=this,f=i[0],a=i[1],l=i[2],c=i[3],u=i[4],h=i[5],g=i[6],w=i[7],y=i[8],x=i[9],R=G(e,n+0),M=G(e,n+2),L=G(e,n+4),V=G(e,n+6),_=G(e,n+8),k=G(e,n+10),j=G(e,n+12),$=G(e,n+14);let d=s[0]+(R&8191),m=s[1]+((R>>>13|M<<3)&8191),p=s[2]+((M>>>10|L<<6)&8191),b=s[3]+((L>>>7|V<<9)&8191),v=s[4]+((V>>>4|_<<12)&8191),B=s[5]+(_>>>1&8191),E=s[6]+((_>>>14|k<<2)&8191),I=s[7]+((k>>>11|j<<5)&8191),S=s[8]+((j>>>8|$<<8)&8191),O=s[9]+($>>>5|o),A=0,T=A+d*f+m*(5*x)+p*(5*y)+b*(5*w)+v*(5*g);A=T>>>13,T&=8191,T+=B*(5*h)+E*(5*u)+I*(5*c)+S*(5*l)+O*(5*a),A+=T>>>13,T&=8191;let U=A+d*a+m*f+p*(5*x)+b*(5*y)+v*(5*w);A=U>>>13,U&=8191,U+=B*(5*g)+E*(5*h)+I*(5*u)+S*(5*c)+O*(5*l),A+=U>>>13,U&=8191;let C=A+d*l+m*a+p*f+b*(5*x)+v*(5*y);A=C>>>13,C&=8191,C+=B*(5*w)+E*(5*g)+I*(5*h)+S*(5*u)+O*(5*c),A+=C>>>13,C&=8191;let H=A+d*c+m*l+p*a+b*f+v*(5*x);A=H>>>13,H&=8191,H+=B*(5*y)+E*(5*w)+I*(5*g)+S*(5*h)+O*(5*u),A+=H>>>13,H&=8191;let q=A+d*u+m*c+p*l+b*a+v*f;A=q>>>13,q&=8191,q+=B*(5*x)+E*(5*y)+I*(5*w)+S*(5*g)+O*(5*h),A+=q>>>13,q&=8191;let P=A+d*h+m*u+p*c+b*l+v*a;A=P>>>13,P&=8191,P+=B*f+E*(5*x)+I*(5*y)+S*(5*w)+O*(5*g),A+=P>>>13,P&=8191;let K=A+d*g+m*h+p*u+b*c+v*l;A=K>>>13,K&=8191,K+=B*a+E*f+I*(5*x)+S*(5*y)+O*(5*w),A+=K>>>13,K&=8191;let et=A+d*w+m*g+p*h+b*u+v*c;A=et>>>13,et&=8191,et+=B*l+E*a+I*f+S*(5*x)+O*(5*y),A+=et>>>13,et&=8191;let Z=A+d*y+m*w+p*g+b*h+v*u;A=Z>>>13,Z&=8191,Z+=B*c+E*l+I*a+S*f+O*(5*x),A+=Z>>>13,Z&=8191;let z=A+d*x+m*y+p*w+b*g+v*h;A=z>>>13,z&=8191,z+=B*u+E*c+I*l+S*a+O*f,A+=z>>>13,z&=8191,A=(A<<2)+A|0,A=A+T|0,T=A&8191,A=A>>>13,U+=A,s[0]=T,s[1]=U,s[2]=C,s[3]=H,s[4]=q,s[5]=P,s[6]=K,s[7]=et,s[8]=Z,s[9]=z}finalize(){const{h:e,pad:n}=this,r=new Uint16Array(10);let o=e[1]>>>13;e[1]&=8191;for(let f=2;f<10;f++)e[f]+=o,o=e[f]>>>13,e[f]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,r[0]=e[0]+5,o=r[0]>>>13,r[0]&=8191;for(let f=1;f<10;f++)r[f]=e[f]+o,o=r[f]>>>13,r[f]&=8191;r[9]-=8192;let s=(o^1)-1;for(let f=0;f<10;f++)r[f]&=s;s=~s;for(let f=0;f<10;f++)e[f]=e[f]&s|r[f];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+n[0];e[0]=i&65535;for(let f=1;f<8;f++)i=(e[f]+n[f]|0)+(i>>>16)|0,e[f]=i&65535;Wt(r)}update(e){to(this),e=mn(e),nt(e);const{buffer:n,blockLen:r}=this,o=e.length;for(let s=0;s>>0,e[s++]=r[i]>>>8;return e}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}}function qf(t){const e=(r,o)=>t(o).update(mn(r)).digest(),n=t(new Uint8Array(32));return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=r=>t(r),e}const Kf=qf(t=>new Vf(t));function Ff(t,e,n,r,o,s=20){let i=t[0],f=t[1],a=t[2],l=t[3],c=e[0],u=e[1],h=e[2],g=e[3],w=e[4],y=e[5],x=e[6],R=e[7],M=o,L=n[0],V=n[1],_=n[2],k=i,j=f,$=a,d=l,m=c,p=u,b=h,v=g,B=w,E=y,I=x,S=R,O=M,A=L,T=V,U=_;for(let H=0;H{t.update(e);const n=e.length%16;n&&t.update(Gf.subarray(n))},Zf=new Uint8Array(32);function fo(t,e,n,r,o){const s=t(e,n,Zf),i=Kf.create(s);o&&io(i,o),io(i,r);const f=$f(r.length,o?o.length:0,!0);i.update(f);const a=i.digest();return Wt(s,f),a}const Wf=t=>(e,n,r)=>({encrypt(s,i){const f=s.length;i=eo(f+16,i,!1),i.set(s);const a=i.subarray(0,-16);t(e,n,a,a,1);const l=fo(t,e,n,a,r);return i.set(l,f),Wt(l),i},decrypt(s,i){i=eo(s.length-16,i,!1);const f=s.subarray(0,-16),a=s.subarray(-16),l=fo(t,e,n,f,r);if(!Tf(a,l))throw new Error(\"invalid tag\");return i.set(s.subarray(0,-16)),t(e,n,i,i,1),Wt(l),i}}),co=Rf({blockSize:64,nonceLength:12,tagLength:16},Wf(zf));class ao extends Ie{constructor(e,n){super(),this.finished=!1,this.destroyed=!1,rn(e);const r=ht(n);if(this.iHash=e.create(),typeof this.iHash.update!=\"function\")throw new Error(\"Expected instance of class which extends utils.Hash\");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const o=this.blockLen,s=new Uint8Array(o);s.set(r.length>o?e.create().update(r).digest():r);for(let i=0;inew ao(t,e).update(n).digest();_e.create=(t,e)=>new ao(t,e);function Yf(t,e,n){return rn(t),n===void 0&&(n=new Uint8Array(t.outputLen)),_e(t,ht(n),ht(e))}const vn=Uint8Array.from([0]),uo=Uint8Array.of();function Xf(t,e,n,r=32){rn(t),mt(r);const o=t.outputLen;if(r>255*o)throw new Error(\"Length should be <= 255*HashLen\");const s=Math.ceil(r/o);n===void 0&&(n=uo);const i=new Uint8Array(s*o),f=_e.create(t,e),a=f._cloneInto(),l=new Uint8Array(f.outputLen);for(let c=0;cXf(t,Yf(t,e,n),r,o),Te=Ae,En=BigInt(0),Bn=BigInt(1);function Re(t,e){if(typeof e!=\"boolean\")throw new Error(t+\" boolean expected, got \"+e)}function $e(t){const e=t.toString(16);return e.length&1?\"0\"+e:e}function lo(t){if(typeof t!=\"string\")throw new Error(\"hex string expected, got \"+typeof t);return t===\"\"?En:BigInt(\"0x\"+t)}function Ce(t){return lo(ce(t))}function Le(t){return at(t),lo(ce(Uint8Array.from(t).reverse()))}function In(t,e){return fn(t.toString(16).padStart(e*2,\"0\"))}function An(t,e){return In(t,e).reverse()}function rt(t,e,n){let r;if(typeof e==\"string\")try{r=fn(e)}catch(s){throw new Error(t+\" must be hex string or Uint8Array, cause: \"+s)}else if(nn(e))r=Uint8Array.from(e);else throw new Error(t+\" must be hex string or Uint8Array\");const o=r.length;if(typeof n==\"number\"&&o!==n)throw new Error(t+\" of length \"+n+\" expected, got \"+o);return r}const Sn=t=>typeof t==\"bigint\"&&En<=t;function Qf(t,e,n){return Sn(t)&&Sn(e)&&Sn(n)&&e<=t&&tEn;t>>=Bn,e+=1);return e}const je=t=>(Bn<new Uint8Array(g),o=g=>Uint8Array.of(g);let s=r(t),i=r(t),f=0;const a=()=>{s.fill(1),i.fill(0),f=0},l=(...g)=>n(i,s,...g),c=(g=r(0))=>{i=l(o(0),g),s=l(),g.length!==0&&(i=l(o(1),g),s=l())},u=()=>{if(f++>=1e3)throw new Error(\"drbg: tried 1000 values\");let g=0;const w=[];for(;g{a(),c(g);let y;for(;!(y=w(u()));)c();return a(),y}}function ke(t,e,n={}){if(!t||typeof t!=\"object\")throw new Error(\"expected valid options object\");function r(o,s,i){const f=t[o];if(i&&f===void 0)return;const a=typeof f;if(a!==s||f===null)throw new Error(`param \"${o}\" is invalid: expected ${s}, got ${a}`)}Object.entries(e).forEach(([o,s])=>r(o,s,!1)),Object.entries(n).forEach(([o,s])=>r(o,s,!0))}function ho(t){const e=new WeakMap;return(n,...r)=>{const o=e.get(n);if(o!==void 0)return o;const s=t(n,...r);return e.set(n,s),s}}const ot=BigInt(0),Q=BigInt(1),Dt=BigInt(2),nc=BigInt(3),po=BigInt(4),go=BigInt(5),bo=BigInt(8);function lt(t,e){const n=t%e;return n>=ot?n:e+n}function pt(t,e,n){let r=t;for(;e-- >ot;)r*=r,r%=n;return r}function yo(t,e){if(t===ot)throw new Error(\"invert: expected non-zero number\");if(e<=ot)throw new Error(\"invert: expected positive modulus, got \"+e);let n=lt(t,e),r=e,o=ot,s=Q;for(;n!==ot;){const f=r/n,a=r%n,l=o-s*f;r=n,n=a,o=s,s=l}if(r!==Q)throw new Error(\"invert: does not exist\");return lt(o,e)}function mo(t,e){const n=(t.ORDER+Q)/po,r=t.pow(e,n);if(!t.eql(t.sqr(r),e))throw new Error(\"Cannot find square root\");return r}function rc(t,e){const n=(t.ORDER-go)/bo,r=t.mul(e,Dt),o=t.pow(r,n),s=t.mul(e,o),i=t.mul(t.mul(s,Dt),o),f=t.mul(s,t.sub(i,t.ONE));if(!t.eql(t.sqr(f),e))throw new Error(\"Cannot find square root\");return f}function oc(t){if(t1e3)throw new Error(\"Cannot find square root: probably non-prime P\");if(n===1)return mo;let s=o.pow(r,e);const i=(e+Q)/Dt;return function(a,l){if(a.is0(l))return l;if(xo(a,l)!==1)throw new Error(\"Cannot find square root\");let c=n,u=a.mul(a.ONE,s),h=a.pow(l,e),g=a.pow(l,i);for(;!a.eql(h,a.ONE);){if(a.is0(h))return a.ZERO;let w=1,y=a.sqr(h);for(;!a.eql(y,a.ONE);)if(w++,y=a.sqr(y),w===c)throw new Error(\"Cannot find square root\");const x=Q<(r[o]=\"function\",r),e);return ke(t,n),t}function cc(t,e,n){if(not;)n&Q&&(r=t.mul(r,o)),o=t.sqr(o),n>>=Q;return r}function wo(t,e,n=!1){const r=new Array(e.length).fill(n?t.ZERO:void 0),o=e.reduce((i,f,a)=>t.is0(f)?i:(r[a]=i,t.mul(i,f)),t.ONE),s=t.inv(o);return e.reduceRight((i,f,a)=>t.is0(f)?i:(r[a]=t.mul(i,r[a]),t.mul(i,f)),s),r}function xo(t,e){const n=(t.ORDER-Q)/Dt,r=t.pow(e,n),o=t.eql(r,t.ONE),s=t.eql(r,t.ZERO),i=t.eql(r,t.neg(t.ONE));if(!o&&!s&&!i)throw new Error(\"invalid Legendre symbol result\");return o?1:s?0:-1}function ac(t,e){e!==void 0&&mt(e);const n=e!==void 0?e:t.toString(2).length,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function Yt(t,e,n=!1,r={}){if(t<=ot)throw new Error(\"invalid field: expected ORDER > 0, got \"+t);let o,s;if(typeof e==\"object\"&&e!=null){if(r.sqrt||n)throw new Error(\"cannot specify opts in two arguments\");const c=e;c.BITS&&(o=c.BITS),c.sqrt&&(s=c.sqrt),typeof c.isLE==\"boolean\"&&(n=c.isLE)}else typeof e==\"number\"&&(o=e),r.sqrt&&(s=r.sqrt);const{nBitLength:i,nByteLength:f}=ac(t,o);if(f>2048)throw new Error(\"invalid field: expected ORDER of <= 2048 bytes\");let a;const l=Object.freeze({ORDER:t,isLE:n,BITS:i,BYTES:f,MASK:je(i),ZERO:ot,ONE:Q,create:c=>lt(c,t),isValid:c=>{if(typeof c!=\"bigint\")throw new Error(\"invalid field element: expected bigint, got \"+typeof c);return ot<=c&&cc===ot,isValidNot0:c=>!l.is0(c)&&l.isValid(c),isOdd:c=>(c&Q)===Q,neg:c=>lt(-c,t),eql:(c,u)=>c===u,sqr:c=>lt(c*c,t),add:(c,u)=>lt(c+u,t),sub:(c,u)=>lt(c-u,t),mul:(c,u)=>lt(c*u,t),pow:(c,u)=>cc(l,c,u),div:(c,u)=>lt(c*yo(u,t),t),sqrN:c=>c*c,addN:(c,u)=>c+u,subN:(c,u)=>c-u,mulN:(c,u)=>c*u,inv:c=>yo(c,t),sqrt:s||(c=>(a||(a=sc(t)),a(l,c))),toBytes:c=>n?An(c,f):In(c,f),fromBytes:c=>{if(c.length!==f)throw new Error(\"Field.fromBytes: expected \"+f+\" bytes, got \"+c.length);return n?Le(c):Ce(c)},invertBatch:c=>wo(l,c),cmov:(c,u,h)=>h?u:c});return Object.freeze(l)}function vo(t){if(typeof t!=\"bigint\")throw new Error(\"field order must be bigint\");const e=t.toString(2).length;return Math.ceil(e/8)}function Eo(t){const e=vo(t);return e+Math.ceil(e/2)}function uc(t,e,n=!1){const r=t.length,o=vo(e),s=Eo(e);if(r<16||r1024)throw new Error(\"expected \"+s+\"-1024 bytes of input, got \"+r);const i=n?Le(t):Ce(t),f=lt(i,e-Q)+Q;return n?An(f,o):In(f,o)}const Xt=BigInt(0),Mt=BigInt(1);function le(t,e){const n=e.negate();return t?n:e}function lc(t,e,n){const r=e===\"pz\"?i=>i.pz:i=>i.ez,o=wo(t.Fp,n.map(r));return n.map((i,f)=>i.toAffine(o[f])).map(t.fromAffine)}function Bo(t,e){if(!Number.isSafeInteger(t)||t<=0||t>e)throw new Error(\"invalid window size, expected [1..\"+e+\"], got W=\"+t)}function On(t,e){Bo(t,e);const n=Math.ceil(e/t)+1,r=2**(t-1),o=2**t,s=je(t),i=BigInt(t);return{windows:n,windowSize:r,mask:s,maxNumber:o,shiftBy:i}}function Io(t,e,n){const{windowSize:r,mask:o,maxNumber:s,shiftBy:i}=n;let f=Number(t&o),a=t>>i;f>r&&(f-=s,a+=Mt);const l=e*r,c=l+Math.abs(f)-1,u=f===0,h=f<0,g=e%2!==0;return{nextN:a,offset:c,isZero:u,isNeg:h,isNegF:g,offsetF:l}}function dc(t,e){if(!Array.isArray(t))throw new Error(\"array expected\");t.forEach((n,r)=>{if(!(n instanceof e))throw new Error(\"invalid point at index \"+r)})}function hc(t,e){if(!Array.isArray(t))throw new Error(\"array of scalars expected\");t.forEach((n,r)=>{if(!e.isValid(n))throw new Error(\"invalid scalar at index \"+r)})}const Un=new WeakMap,Ao=new WeakMap;function _n(t){return Ao.get(t)||1}function So(t){if(t!==Xt)throw new Error(\"invalid wNAF\")}function pc(t,e){return{constTimeNegate:le,hasPrecomputes(n){return _n(n)!==1},unsafeLadder(n,r,o=t.ZERO){let s=n;for(;r>Xt;)r&Mt&&(o=o.add(s)),s=s.double(),r>>=Mt;return o},precomputeWindow(n,r){const{windows:o,windowSize:s}=On(r,e),i=[];let f=n,a=f;for(let l=0;lXt||r>Xt;)n&Mt&&(s=s.add(o)),r&Mt&&(i=i.add(o)),o=o.double(),n>>=Mt,r>>=Mt;return{p1:s,p2:i}}function bc(t,e,n,r){dc(n,t),hc(r,e);const o=n.length,s=r.length;if(o!==s)throw new Error(\"arrays of points and scalars must have equal length\");const i=t.ZERO,f=tc(BigInt(o));let a=1;f>12?a=f-3:f>4?a=f-2:f>0&&(a=2);const l=je(a),c=new Array(Number(l)+1).fill(i),u=Math.floor((e.BITS-1)/a)*a;let h=i;for(let g=u;g>=0;g-=a){c.fill(i);for(let y=0;y>BigInt(g)&l);c[R]=c[R].add(n[y])}let w=i;for(let y=c.length-1,x=i;y>0;y--)x=x.add(c[y]),w=w.add(x);if(h=h.add(w),g!==0)for(let y=0;yXt))throw new Error(`CURVE.${f} must be positive bigint`)}const r=No(e.p,n.Fp),o=No(e.n,n.Fn),i=[\"Gx\",\"Gy\",\"a\",t===\"weierstrass\"?\"b\":\"d\"];for(const f of i)if(!r.isValid(e[f]))throw new Error(`CURVE.${f} must be valid field element of CURVE.Fp`);return{Fp:r,Fn:o}}BigInt(0),BigInt(1),BigInt(2),BigInt(8);const de=BigInt(0),Jt=BigInt(1),Pe=BigInt(2);function mc(t){return ke(t,{adjustScalarBytes:\"function\",powPminus2:\"function\"}),Object.freeze({...t})}function wc(t){const e=mc(t),{P:n,type:r,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,f=r===\"x25519\";if(!f&&r!==\"x448\")throw new Error(\"invalid type\");const a=i||Zt,l=f?255:448,c=f?32:56,u=BigInt(f?9:5),h=BigInt(f?121665:39081),g=f?Pe**BigInt(254):Pe**BigInt(447),w=f?BigInt(8)*Pe**BigInt(251)-Jt:BigInt(4)*Pe**BigInt(445)-Jt,y=g+w+Jt,x=d=>lt(d,n),R=M(u);function M(d){return An(x(d),c)}function L(d){const m=rt(\"u coordinate\",d,c);return f&&(m[31]&=127),x(Le(m))}function V(d){return Le(o(rt(\"scalar\",d,c)))}function _(d,m){const p=$(L(m),V(d));if(p===de)throw new Error(\"invalid private or public key received\");return M(p)}function k(d){return _(d,R)}function j(d,m,p){const b=x(d*(m-p));return m=x(m-b),p=x(p+b),{x_2:m,x_3:p}}function $(d,m){Nn(\"u\",d,de,n),Nn(\"scalar\",m,g,y);const p=m,b=d;let v=Jt,B=de,E=d,I=Jt,S=de;for(let A=BigInt(l-1);A>=de;A--){const T=p>>A&Jt;S^=T,{x_2:v,x_3:E}=j(S,v,E),{x_2:B,x_3:I}=j(S,B,I),S=T;const U=v+B,C=x(U*U),H=v-B,q=x(H*H),P=C-q,K=E+I,et=E-I,Z=x(et*U),z=x(K*H),Ft=Z+z,yt=Z-z;E=x(Ft*Ft),I=x(b*x(yt*yt)),v=x(C*q),B=x(P*(C+x(h*P)))}({x_2:v,x_3:E}=j(S,v,E)),{x_2:B,x_3:I}=j(S,B,I);const O=s(B);return x(v*O)}return{scalarMult:_,scalarMultBase:k,getSharedSecret:(d,m)=>_(d,m),getPublicKey:d=>k(d),utils:{randomPrivateKey:()=>a(c)},GuBytes:R.slice()}}BigInt(0);const xc=BigInt(1),Oo=BigInt(2),vc=BigInt(3),Ec=BigInt(5),Bc=BigInt(8),Uo={p:BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed\"),n:BigInt(\"0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed\"),h:Bc,a:BigInt(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec\"),d:BigInt(\"0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3\"),Gx:BigInt(\"0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\"),Gy:BigInt(\"0x6666666666666666666666666666666666666666666666666666666666666658\")};function Ic(t){const e=BigInt(10),n=BigInt(20),r=BigInt(40),o=BigInt(80),s=Uo.p,f=t*t%s*t%s,a=pt(f,Oo,s)*f%s,l=pt(a,xc,s)*t%s,c=pt(l,Ec,s)*l%s,u=pt(c,e,s)*c%s,h=pt(u,n,s)*u%s,g=pt(h,r,s)*h%s,w=pt(g,o,s)*g%s,y=pt(w,o,s)*g%s,x=pt(y,e,s)*c%s;return{pow_p_5_8:pt(x,Oo,s)*t%s,b2:f}}function Ac(t){return t[0]&=248,t[31]&=127,t[31]|=64,t}const Tn=(()=>{const t=Uo.p;return wc({P:t,type:\"x25519\",powPminus2:e=>{const{pow_p_5_8:n,b2:r}=Ic(e);return lt(pt(n,vc,t)*r,t)},adjustScalarBytes:Ac})})();function _o(t){t.lowS!==void 0&&Re(\"lowS\",t.lowS),t.prehash!==void 0&&Re(\"prehash\",t.prehash)}class Sc extends Error{constructor(e=\"\"){super(e)}}const vt={Err:Sc,_tlv:{encode:(t,e)=>{const{Err:n}=vt;if(t<0||t>256)throw new n(\"tlv.encode: wrong tag\");if(e.length&1)throw new n(\"tlv.encode: unpadded data\");const r=e.length/2,o=$e(r);if(o.length/2&128)throw new n(\"tlv.encode: long form length too big\");const s=r>127?$e(o.length/2|128):\"\";return $e(t)+s+o+e},decode(t,e){const{Err:n}=vt;let r=0;if(t<0||t>256)throw new n(\"tlv.encode: wrong tag\");if(e.length<2||e[r++]!==t)throw new n(\"tlv.decode: wrong tlv\");const o=e[r++],s=!!(o&128);let i=0;if(!s)i=o;else{const a=o&127;if(!a)throw new n(\"tlv.decode(long): indefinite length not supported\");if(a>4)throw new n(\"tlv.decode(long): byte length is too big\");const l=e.subarray(r,r+a);if(l.length!==a)throw new n(\"tlv.decode: length bytes not complete\");if(l[0]===0)throw new n(\"tlv.decode(long): zero leftmost byte\");for(const c of l)i=i<<8|c;if(r+=a,i<128)throw new n(\"tlv.decode(long): not minimal encoding\")}const f=e.subarray(r,r+i);if(f.length!==i)throw new n(\"tlv.decode: wrong value length\");return{v:f,l:e.subarray(r+i)}}},_int:{encode(t){const{Err:e}=vt;if(t{const{px:m,py:p,pz:b}=$;if(n.eql(b,n.ONE))return{x:m,y:p};const v=$.is0();d==null&&(d=v?n.ONE:n.inv(b));const B=n.mul(m,d),E=n.mul(p,d),I=n.mul(b,d);if(v)return{x:n.ZERO,y:n.ZERO};if(!n.eql(I,n.ONE))throw new Error(\"invZ was invalid\");return{x:B,y:E}}),L=ho($=>{if($.is0()){if(e.allowInfinityPoint&&!n.is0($.py))return;throw new Error(\"bad point: ZERO\")}const{x:d,y:m}=$.toAffine();if(!n.isValid(d)||!n.isValid(m))throw new Error(\"bad point: x or y not field elements\");if(!g(d,m))throw new Error(\"bad point: equation left != right\");if(!$.isTorsionFree())throw new Error(\"bad point: not in prime-order subgroup\");return!0});function V($,d,m,p,b){return m=new _(n.mul(m.px,$),m.py,m.pz),d=le(p,d),m=le(b,m),d.add(m)}class _{constructor(d,m,p){this.px=x(\"x\",d),this.py=x(\"y\",m,!0),this.pz=x(\"z\",p),Object.freeze(this)}static fromAffine(d){const{x:m,y:p}=d||{};if(!d||!n.isValid(m)||!n.isValid(p))throw new Error(\"invalid affine point\");if(d instanceof _)throw new Error(\"projective point not allowed\");return n.is0(m)&&n.is0(p)?_.ZERO:new _(m,p,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(d){return lc(_,\"pz\",d)}static fromBytes(d){return at(d),_.fromHex(d)}static fromHex(d){const m=_.fromAffine(u(rt(\"pointHex\",d)));return m.assertValidity(),m}static fromPrivateKey(d){const m=To(r,e.allowedPrivateKeyLengths,e.wrapPrivateKey);return _.BASE.multiply(m(d))}static msm(d,m){return bc(_,r,d,m)}precompute(d=8,m=!0){return j.setWindowSize(this,d),m||this.multiply(He),this}_setWindowSize(d){this.precompute(d)}assertValidity(){L(this)}hasEvenY(){const{y:d}=this.toAffine();if(!n.isOdd)throw new Error(\"Field doesn't support isOdd\");return!n.isOdd(d)}equals(d){R(d);const{px:m,py:p,pz:b}=this,{px:v,py:B,pz:E}=d,I=n.eql(n.mul(m,E),n.mul(v,b)),S=n.eql(n.mul(p,E),n.mul(B,b));return I&&S}negate(){return new _(this.px,n.neg(this.py),this.pz)}double(){const{a:d,b:m}=t,p=n.mul(m,He),{px:b,py:v,pz:B}=this;let E=n.ZERO,I=n.ZERO,S=n.ZERO,O=n.mul(b,b),A=n.mul(v,v),T=n.mul(B,B),U=n.mul(b,v);return U=n.add(U,U),S=n.mul(b,B),S=n.add(S,S),E=n.mul(d,S),I=n.mul(p,T),I=n.add(E,I),E=n.sub(A,I),I=n.add(A,I),I=n.mul(E,I),E=n.mul(U,E),S=n.mul(p,S),T=n.mul(d,T),U=n.sub(O,T),U=n.mul(d,U),U=n.add(U,S),S=n.add(O,O),O=n.add(S,O),O=n.add(O,T),O=n.mul(O,U),I=n.add(I,O),T=n.mul(v,B),T=n.add(T,T),O=n.mul(T,U),E=n.sub(E,O),S=n.mul(T,A),S=n.add(S,S),S=n.add(S,S),new _(E,I,S)}add(d){R(d);const{px:m,py:p,pz:b}=this,{px:v,py:B,pz:E}=d;let I=n.ZERO,S=n.ZERO,O=n.ZERO;const A=t.a,T=n.mul(t.b,He);let U=n.mul(m,v),C=n.mul(p,B),H=n.mul(b,E),q=n.add(m,p),P=n.add(v,B);q=n.mul(q,P),P=n.add(U,C),q=n.sub(q,P),P=n.add(m,b);let K=n.add(v,E);return P=n.mul(P,K),K=n.add(U,H),P=n.sub(P,K),K=n.add(p,b),I=n.add(B,E),K=n.mul(K,I),I=n.add(C,H),K=n.sub(K,I),O=n.mul(A,P),I=n.mul(T,H),O=n.add(I,O),I=n.sub(C,O),O=n.add(C,O),S=n.mul(I,O),C=n.add(U,U),C=n.add(C,U),H=n.mul(A,H),P=n.mul(T,P),C=n.add(C,H),H=n.sub(U,H),H=n.mul(A,H),P=n.add(P,H),U=n.mul(C,P),S=n.add(S,U),U=n.mul(K,P),I=n.mul(q,I),I=n.sub(I,U),U=n.mul(q,C),O=n.mul(K,O),O=n.add(O,U),new _(I,S,O)}subtract(d){return this.add(d.negate())}is0(){return this.equals(_.ZERO)}multiply(d){const{endo:m}=e;if(!r.isValidNot0(d))throw new Error(\"invalid scalar: out of range\");let p,b;const v=B=>j.wNAFCached(this,B,_.normalizeZ);if(m){const{k1neg:B,k1:E,k2neg:I,k2:S}=m.splitScalar(d),{p:O,f:A}=v(E),{p:T,f:U}=v(S);b=A.add(U),p=V(m.beta,O,T,B,I)}else{const{p:B,f:E}=v(d);p=B,b=E}return _.normalizeZ([p,b])[0]}multiplyUnsafe(d){const{endo:m}=e,p=this;if(!r.isValid(d))throw new Error(\"invalid scalar: out of range\");if(d===he||p.is0())return _.ZERO;if(d===pe)return p;if(j.hasPrecomputes(this))return this.multiply(d);if(m){const{k1neg:b,k1:v,k2neg:B,k2:E}=m.splitScalar(d),{p1:I,p2:S}=gc(_,p,v,E);return V(m.beta,I,S,b,B)}else return j.wNAFCachedUnsafe(p,d)}multiplyAndAddUnsafe(d,m,p){const b=this.multiplyUnsafe(m).add(d.multiplyUnsafe(p));return b.is0()?void 0:b}toAffine(d){return M(this,d)}isTorsionFree(){const{isTorsionFree:d}=e;return o===pe?!0:d?d(_,this):j.wNAFCachedUnsafe(this,s).is0()}clearCofactor(){const{clearCofactor:d}=e;return o===pe?this:d?d(_,this):this.multiplyUnsafe(o)}toBytes(d=!0){return Re(\"isCompressed\",d),this.assertValidity(),c(_,this,d)}toRawBytes(d=!0){return this.toBytes(d)}toHex(d=!0){return ce(this.toBytes(d))}toString(){return``}}_.BASE=new _(t.Gx,t.Gy,n.ONE),_.ZERO=new _(n.ZERO,n.ONE,n.ZERO),_.Fp=n,_.Fn=r;const k=r.BITS,j=pc(_,e.endo?Math.ceil(k/2):k);return _}function Ro(t){return Uint8Array.of(t?2:3)}function Tc(t,e,n={}){ke(e,{hash:\"function\"},{hmac:\"function\",lowS:\"boolean\",randomBytes:\"function\",bits2int:\"function\",bits2int_modN:\"function\"});const r=e.randomBytes||Zt,o=e.hmac||((p,...b)=>_e(e.hash,p,Ht(...b))),{Fp:s,Fn:i}=t,{ORDER:f,BITS:a}=i;function l(p){const b=f>>pe;return p>b}function c(p){return l(p)?i.neg(p):p}function u(p,b){if(!i.isValidNot0(b))throw new Error(`invalid signature ${p}: out of range 1..CURVE.n`)}class h{constructor(b,v,B){u(\"r\",b),u(\"s\",v),this.r=b,this.s=v,B!=null&&(this.recovery=B),Object.freeze(this)}static fromCompact(b){const v=i.BYTES,B=rt(\"compactSignature\",b,v*2);return new h(i.fromBytes(B.subarray(0,v)),i.fromBytes(B.subarray(v,v*2)))}static fromDER(b){const{r:v,s:B}=vt.toSig(rt(\"DER\",b));return new h(v,B)}assertValidity(){}addRecoveryBit(b){return new h(this.r,this.s,b)}recoverPublicKey(b){const v=s.ORDER,{r:B,s:E,recovery:I}=this;if(I==null||![0,1,2,3].includes(I))throw new Error(\"recovery id invalid\");if(f*Nc1)throw new Error(\"recovery id is ambiguous for h>1 curve\");const O=I===2||I===3?B+f:B;if(!s.isValid(O))throw new Error(\"recovery id 2 or 3 invalid\");const A=s.toBytes(O),T=t.fromHex(Ht(Ro((I&1)===0),A)),U=i.inv(O),C=L(rt(\"msgHash\",b)),H=i.create(-C*U),q=i.create(E*U),P=t.BASE.multiplyUnsafe(H).add(T.multiplyUnsafe(q));if(P.is0())throw new Error(\"point at infinify\");return P.assertValidity(),P}hasHighS(){return l(this.s)}normalizeS(){return this.hasHighS()?new h(this.r,i.neg(this.s),this.recovery):this}toBytes(b){if(b===\"compact\")return Ht(i.toBytes(this.r),i.toBytes(this.s));if(b===\"der\")return fn(vt.hexFromSig(this));throw new Error(\"invalid format\")}toDERRawBytes(){return this.toBytes(\"der\")}toDERHex(){return ce(this.toBytes(\"der\"))}toCompactRawBytes(){return this.toBytes(\"compact\")}toCompactHex(){return ce(this.toBytes(\"compact\"))}}const g=To(i,n.allowedPrivateKeyLengths,n.wrapPrivateKey),w={isValidPrivateKey(p){try{return g(p),!0}catch{return!1}},normPrivateKeyToScalar:g,randomPrivateKey:()=>{const p=f;return uc(r(Eo(p)),p)},precompute(p=8,b=t.BASE){return b.precompute(p,!1)}};function y(p,b=!0){return t.fromPrivateKey(p).toBytes(b)}function x(p){if(typeof p==\"bigint\")return!1;if(p instanceof t)return!0;const v=rt(\"key\",p).length,B=s.BYTES,E=B+1,I=2*B+1;if(!(n.allowedPrivateKeyLengths||i.BYTES===E))return v===E||v===I}function R(p,b,v=!0){if(x(p)===!0)throw new Error(\"first arg must be private key\");if(x(b)===!1)throw new Error(\"second arg must be public key\");return t.fromHex(b).multiply(g(p)).toBytes(v)}const M=e.bits2int||function(p){if(p.length>8192)throw new Error(\"input is too large\");const b=Ce(p),v=p.length*8-a;return v>0?b>>BigInt(v):b},L=e.bits2int_modN||function(p){return i.create(M(p))},V=je(a);function _(p){return Nn(\"num < 2^\"+a,p,he,V),i.toBytes(p)}function k(p,b,v=j){if([\"recovered\",\"canonical\"].some(q=>q in v))throw new Error(\"sign() legacy options not supported\");const{hash:B}=e;let{lowS:E,prehash:I,extraEntropy:S}=v;E==null&&(E=!0),p=rt(\"msgHash\",p),_o(v),I&&(p=rt(\"prehashed msgHash\",B(p)));const O=L(p),A=g(b),T=[_(A),_(O)];if(S!=null&&S!==!1){const q=S===!0?r(s.BYTES):S;T.push(rt(\"extraEntropy\",q))}const U=Ht(...T),C=O;function H(q){const P=M(q);if(!i.isValidNot0(P))return;const K=i.inv(P),et=t.BASE.multiply(P).toAffine(),Z=i.create(et.x);if(Z===he)return;const z=i.create(K*i.create(C+Z*A));if(z===he)return;let Ft=(et.x===Z?0:2)|Number(et.y&pe),yt=z;return E&&l(z)&&(yt=c(z),Ft^=1),new h(Z,yt,Ft)}return{seed:U,k2sig:H}}const j={lowS:e.lowS,prehash:!1},$={lowS:e.lowS,prehash:!1};function d(p,b,v=j){const{seed:B,k2sig:E}=k(p,b,v);return ec(e.hash.outputLen,i.BYTES,o)(B,E)}t.BASE.precompute(8);function m(p,b,v,B=$){const E=p;b=rt(\"msgHash\",b),v=rt(\"publicKey\",v),_o(B);const{lowS:I,prehash:S,format:O}=B;if(\"strict\"in B)throw new Error(\"options.strict was renamed to lowS\");if(O!==void 0&&![\"compact\",\"der\",\"js\"].includes(O))throw new Error('format must be \"compact\", \"der\" or \"js\"');const A=typeof E==\"string\"||nn(E),T=!A&&!O&&typeof E==\"object\"&&E!==null&&typeof E.r==\"bigint\"&&typeof E.s==\"bigint\";if(!A&&!T)throw new Error(\"invalid signature, expected Uint8Array, hex string or Signature instance\");let U,C;try{if(T)if(O===void 0||O===\"js\")U=new h(E.r,E.s);else throw new Error(\"invalid format\");if(A){try{O!==\"compact\"&&(U=h.fromDER(E))}catch(yt){if(!(yt instanceof vt.Err))throw yt}!U&&O!==\"der\"&&(U=h.fromCompact(E))}C=t.fromHex(v)}catch{return!1}if(!U||I&&U.hasHighS())return!1;S&&(b=e.hash(b));const{r:H,s:q}=U,P=L(b),K=i.inv(q),et=i.create(P*K),Z=i.create(H*K),z=t.BASE.multiplyUnsafe(et).add(C.multiplyUnsafe(Z));return z.is0()?!1:i.create(z.x)===H}return Object.freeze({getPublicKey:y,getSharedSecret:R,sign:d,verify:m,utils:w,Point:t,Signature:h})}function Rc(t){const e={a:t.a,b:t.b,p:t.Fp.ORDER,n:t.n,h:t.h,Gx:t.Gx,Gy:t.Gy},n=t.Fp,r=Yt(e.n,t.nBitLength),o={Fp:n,Fn:r,allowedPrivateKeyLengths:t.allowedPrivateKeyLengths,allowInfinityPoint:t.allowInfinityPoint,endo:t.endo,wrapPrivateKey:t.wrapPrivateKey,isTorsionFree:t.isTorsionFree,clearCofactor:t.clearCofactor,fromBytes:t.fromBytes,toBytes:t.toBytes};return{CURVE:e,curveOpts:o}}function $c(t){const{CURVE:e,curveOpts:n}=Rc(t),r={hash:t.hash,hmac:t.hmac,randomBytes:t.randomBytes,lowS:t.lowS,bits2int:t.bits2int,bits2int_modN:t.bits2int_modN};return{CURVE:e,curveOpts:n,ecdsaOpts:r}}function Cc(t,e){return Object.assign({},e,{ProjectivePoint:e.Point,CURVE:t})}function Lc(t){const{CURVE:e,curveOpts:n,ecdsaOpts:r}=$c(t),o=_c(e,n),s=Tc(o,r,n);return Cc(t,s)}function Rn(t,e){const n=r=>Lc({...t,hash:r});return{...n(e),create:n}}const $o={p:BigInt(\"0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff\"),n:BigInt(\"0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551\"),h:BigInt(1),a:BigInt(\"0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc\"),b:BigInt(\"0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b\"),Gx:BigInt(\"0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296\"),Gy:BigInt(\"0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5\")},Co={p:BigInt(\"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff\"),n:BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973\"),h:BigInt(1),a:BigInt(\"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc\"),b:BigInt(\"0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef\"),Gx:BigInt(\"0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7\"),Gy:BigInt(\"0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f\")},Lo={p:BigInt(\"0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"),n:BigInt(\"0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409\"),h:BigInt(1),a:BigInt(\"0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc\"),b:BigInt(\"0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00\"),Gx:BigInt(\"0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66\"),Gy:BigInt(\"0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650\")},jc=Yt($o.p),kc=Yt(Co.p),Pc=Yt(Lo.p),Hc=Rn({...$o,Fp:jc,lowS:!1},Ae);Rn({...Co,Fp:kc,lowS:!1},Yi),Rn({...Lo,Fp:Pc,lowS:!1,allowedPrivateKeyLengths:[130,131,132]},Wi);const Dc=Hc,$n=\"base10\",tt=\"base16\",Qt=\"base64pad\",De=\"base64url\",te=\"utf8\",Cn=0,ee=1,ge=2,Mc=0,jo=1,be=12,Ln=32;function Vc(){const t=Tn.utils.randomPrivateKey(),e=Tn.getPublicKey(t);return{privateKey:st(t,tt),publicKey:st(e,tt)}}function qc(){const t=Zt(Ln);return st(t,tt)}function Kc(t,e){const n=Tn.getSharedSecret(ft(t,tt),ft(e,tt)),r=Jf(Te,n,void 0,void 0,Ln);return st(r,tt)}function Fc(t){const e=Te(ft(t,tt));return st(e,tt)}function zc(t){const e=Te(ft(t,te));return st(e,tt)}function jn(t){return ft(`${t}`,$n)}function Vt(t){return Number(st(t,$n))}function ko(t){return t.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=/g,\"\")}function Po(t){const e=t.replace(/-/g,\"+\").replace(/_/g,\"/\"),n=(4-e.length%4)%4;return e+\"=\".repeat(n)}function Gc(t){const e=jn(typeof t.type<\"u\"?t.type:Cn);if(Vt(e)===ee&&typeof t.senderPublicKey>\"u\")throw new Error(\"Missing sender public key for type 1 envelope\");const n=typeof t.senderPublicKey<\"u\"?ft(t.senderPublicKey,tt):void 0,r=typeof t.iv<\"u\"?ft(t.iv,tt):Zt(be),o=ft(t.symKey,tt),s=co(o,r).encrypt(ft(t.message,te)),i=kn({type:e,sealed:s,iv:r,senderPublicKey:n});return t.encoding===De?ko(i):i}function Zc(t){const e=ft(t.symKey,tt),{sealed:n,iv:r}=Me({encoded:t.encoded,encoding:t.encoding}),o=co(e,r).decrypt(n);if(o===null)throw new Error(\"Failed to decrypt\");return st(o,te)}function Wc(t,e){const n=jn(ge),r=Zt(be),o=ft(t,te),s=kn({type:n,sealed:o,iv:r});return e===De?ko(s):s}function Yc(t,e){const{sealed:n}=Me({encoded:t,encoding:e});return st(n,te)}function kn(t){if(Vt(t.type)===ge)return st(oe([t.type,t.sealed]),Qt);if(Vt(t.type)===ee){if(typeof t.senderPublicKey>\"u\")throw new Error(\"Missing sender public key for type 1 envelope\");return st(oe([t.type,t.senderPublicKey,t.iv,t.sealed]),Qt)}return st(oe([t.type,t.iv,t.sealed]),Qt)}function Me(t){const e=(t.encoding||Qt)===De?Po(t.encoded):t.encoded,n=ft(e,Qt),r=n.slice(Mc,jo),o=jo;if(Vt(r)===ee){const a=o+Ln,l=a+be,c=n.slice(o,a),u=n.slice(a,l),h=n.slice(l);return{type:r,sealed:h,iv:u,senderPublicKey:c}}if(Vt(r)===ge){const a=n.slice(o),l=Zt(be);return{type:r,sealed:a,iv:l}}const s=o+be,i=n.slice(o,s),f=n.slice(s);return{type:r,sealed:f,iv:i}}function Xc(t,e){const n=Me({encoded:t,encoding:e?.encoding});return Ho({type:Vt(n.type),senderPublicKey:typeof n.senderPublicKey<\"u\"?st(n.senderPublicKey,tt):void 0,receiverPublicKey:e?.receiverPublicKey})}function Ho(t){const e=t?.type||Cn;if(e===ee){if(typeof t?.senderPublicKey>\"u\")throw new Error(\"missing sender public key\");if(typeof t?.receiverPublicKey>\"u\")throw new Error(\"missing receiver public key\")}return{type:e,senderPublicKey:t?.senderPublicKey,receiverPublicKey:t?.receiverPublicKey}}function Jc(t){return t.type===ee&&typeof t.senderPublicKey==\"string\"&&typeof t.receiverPublicKey==\"string\"}function Qc(t){return t.type===ge}function Do(t){const e=Buffer.from(t.x,\"base64\"),n=Buffer.from(t.y,\"base64\");return oe([new Uint8Array([4]),e,n])}function ta(t,e){const[n,r,o]=t.split(\".\"),s=Buffer.from(Po(o),\"base64\");if(s.length!==64)throw new Error(\"Invalid signature length\");const i=s.slice(0,32),f=s.slice(32,64),a=`${n}.${r}`,l=Te(a),c=Do(e);if(!Dc.verify(oe([i,f]),l,c))throw new Error(\"Invalid signature\");return As(t).payload}const Mo=\"irn\";function ea(t){return t?.relay||{protocol:Mo}}function na(t){const e=Ss[t];if(typeof e>\"u\")throw new Error(`Relay Protocol not supported: ${t}`);return e}function Vo(t,e=\"-\"){const n={},r=\"relay\"+e;return Object.keys(t).forEach(o=>{if(o.startsWith(r)){const s=o.replace(r,\"\"),i=t[o];n[s]=i}}),n}function ra(t){if(!t.includes(\"wc:\")){const l=Qe(t);l!=null&&l.includes(\"wc:\")&&(t=l)}t=t.includes(\"wc://\")?t.replace(\"wc://\",\"\"):t,t=t.includes(\"wc:\")?t.replace(\"wc:\",\"\"):t;const e=t.indexOf(\":\"),n=t.indexOf(\"?\")!==-1?t.indexOf(\"?\"):void 0,r=t.substring(0,e),o=t.substring(e+1,n).split(\"@\"),s=typeof n<\"u\"?t.substring(n):\"\",i=new URLSearchParams(s),f={};i.forEach((l,c)=>{f[c]=l});const a=typeof f.methods==\"string\"?f.methods.split(\",\"):void 0;return{protocol:r,topic:qo(o[0]),version:parseInt(o[1],10),symKey:f.symKey,relay:Vo(f),methods:a,expiryTimestamp:f.expiryTimestamp?parseInt(f.expiryTimestamp,10):void 0}}function qo(t){return t.startsWith(\"//\")?t.substring(2):t}function Ko(t,e=\"-\"){const n=\"relay\",r={};return Object.keys(t).forEach(o=>{const s=o,i=n+e+s;t[s]&&(r[i]=t[s])}),r}function oa(t){const e=new URLSearchParams,n=Ko(t.relay);Object.keys(n).sort().forEach(o=>{e.set(o,n[o])}),e.set(\"symKey\",t.symKey),t.expiryTimestamp&&e.set(\"expiryTimestamp\",t.expiryTimestamp.toString()),t.methods&&e.set(\"methods\",t.methods.join(\",\"));const r=e.toString();return`${t.protocol}:${t.topic}@${t.version}?${r}`}function sa(t,e,n){return`${t}?wc_ev=${n}&topic=${e}`}var ia=Object.defineProperty,fa=Object.defineProperties,ca=Object.getOwnPropertyDescriptors,Fo=Object.getOwnPropertySymbols,aa=Object.prototype.hasOwnProperty,ua=Object.prototype.propertyIsEnumerable,zo=(t,e,n)=>e in t?ia(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,la=(t,e)=>{for(var n in e||(e={}))aa.call(e,n)&&zo(t,n,e[n]);if(Fo)for(var n of Fo(e))ua.call(e,n)&&zo(t,n,e[n]);return t},da=(t,e)=>fa(t,ca(e));function qt(t){const e=[];return t.forEach(n=>{const[r,o]=n.split(\":\");e.push(`${r}:${o}`)}),e}function Go(t){const e=[];return Object.values(t).forEach(n=>{e.push(...qt(n.accounts))}),e}function Zo(t,e){const n=[];return Object.values(t).forEach(r=>{qt(r.accounts).includes(e)&&n.push(...r.methods)}),n}function Wo(t,e){const n=[];return Object.values(t).forEach(r=>{qt(r.accounts).includes(e)&&n.push(...r.events)}),n}function ha(t,e){const n=is(t,e);if(n)throw new Error(n.message);const r={};for(const[o,s]of Object.entries(t))r[o]={methods:s.methods,events:s.events,chains:s.accounts.map(i=>`${i.split(\":\")[0]}:${i.split(\":\")[1]}`)};return r}function pa(t){var e;const{proposal:{requiredNamespaces:n,optionalNamespaces:r={}},supportedNamespaces:o}=t,s=ye(n),i=ye(r),f={};Object.keys(o).forEach(c=>{const u=o[c].chains,h=o[c].methods,g=o[c].events,w=o[c].accounts;u.forEach(y=>{if(!w.some(x=>x.includes(y)))throw new Error(`No accounts provided for chain ${y} in namespace ${c}`)}),f[c]={chains:u,methods:h,events:g,accounts:w}});const a=cs(n,f,\"approve()\");if(a)throw new Error(a.message);const l={};if(!Object.keys(n).length&&!Object.keys(r).length)return f;Object.keys(s).forEach(c=>{const u=o[c].chains.filter(y=>{var x,R;return(R=(x=s[c])==null?void 0:x.chains)==null?void 0:R.includes(y)}),h=o[c].methods.filter(y=>{var x,R;return(R=(x=s[c])==null?void 0:x.methods)==null?void 0:R.includes(y)}),g=o[c].events.filter(y=>{var x,R;return(R=(x=s[c])==null?void 0:x.events)==null?void 0:R.includes(y)}),w=u.map(y=>o[c].accounts.filter(x=>x.includes(`${y}:`))).flat();l[c]={chains:u,methods:h,events:g,accounts:w}}),Object.keys(i).forEach(c=>{var u,h,g,w,y,x;if(!o[c])return;const R=(h=(u=i[c])==null?void 0:u.chains)==null?void 0:h.filter(_=>o[c].chains.includes(_)),M=o[c].methods.filter(_=>{var k,j;return(j=(k=i[c])==null?void 0:k.methods)==null?void 0:j.includes(_)}),L=o[c].events.filter(_=>{var k,j;return(j=(k=i[c])==null?void 0:k.events)==null?void 0:j.includes(_)}),V=R?.map(_=>o[c].accounts.filter(k=>k.includes(`${_}:`))).flat();l[c]={chains:ct((g=l[c])==null?void 0:g.chains,R),methods:ct((w=l[c])==null?void 0:w.methods,M),events:ct((y=l[c])==null?void 0:y.events,L),accounts:ct((x=l[c])==null?void 0:x.accounts,V)}});for(const[c,u]of Object.entries(l))(u.accounts.length===0||((e=u?.chains)==null?void 0:e.length)===0)&&delete l[c];return l}function Pn(t){return t.includes(\":\")}function Yo(t){return Pn(t)?t.split(\":\")[0]:t}function ye(t){var e,n,r;const o={};if(!Ve(t))return o;for(const[s,i]of Object.entries(t)){const f=Pn(s)?[s]:i.chains,a=i.methods||[],l=i.events||[],c=Yo(s);o[c]=da(la({},o[c]),{chains:ct(f,(e=o[c])==null?void 0:e.chains),methods:ct(a,(n=o[c])==null?void 0:n.methods),events:ct(l,(r=o[c])==null?void 0:r.events)})}return o}function Xo(t){const e={};return t?.forEach(n=>{var r;const[o,s]=n.split(\":\");e[o]||(e[o]={accounts:[],chains:[],events:[],methods:[]}),e[o].accounts.push(n),(r=e[o].chains)==null||r.push(`${o}:${s}`)}),e}function ga(t,e){e=e.map(r=>r.replace(\"did:pkh:\",\"\"));const n=Xo(e);for(const[r,o]of Object.entries(n))o.methods?o.methods=ct(o.methods,t):o.methods=t,o.events=[\"chainChanged\",\"accountsChanged\"];return n}function ba(t,e){var n,r,o,s,i,f;const a=ye(t),l=ye(e),c={},u=Object.keys(a).concat(Object.keys(l));for(const h of u)c[h]={chains:ct((n=a[h])==null?void 0:n.chains,(r=l[h])==null?void 0:r.chains),methods:ct((o=a[h])==null?void 0:o.methods,(s=l[h])==null?void 0:s.methods),events:ct((i=a[h])==null?void 0:i.events,(f=l[h])==null?void 0:f.events)};return c}const Jo={INVALID_METHOD:{message:\"Invalid method.\",code:1001},INVALID_EVENT:{message:\"Invalid event.\",code:1002},INVALID_UPDATE_REQUEST:{message:\"Invalid update request.\",code:1003},INVALID_EXTEND_REQUEST:{message:\"Invalid extend request.\",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:\"Invalid session settle request.\",code:1005},UNAUTHORIZED_METHOD:{message:\"Unauthorized method.\",code:3001},UNAUTHORIZED_EVENT:{message:\"Unauthorized event.\",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:\"Unauthorized update request.\",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:\"Unauthorized extend request.\",code:3004},USER_REJECTED:{message:\"User rejected.\",code:5e3},USER_REJECTED_CHAINS:{message:\"User rejected chains.\",code:5001},USER_REJECTED_METHODS:{message:\"User rejected methods.\",code:5002},USER_REJECTED_EVENTS:{message:\"User rejected events.\",code:5003},UNSUPPORTED_CHAINS:{message:\"Unsupported chains.\",code:5100},UNSUPPORTED_METHODS:{message:\"Unsupported methods.\",code:5101},UNSUPPORTED_EVENTS:{message:\"Unsupported events.\",code:5102},UNSUPPORTED_ACCOUNTS:{message:\"Unsupported accounts.\",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:\"Unsupported namespace key.\",code:5104},USER_DISCONNECTED:{message:\"User disconnected.\",code:6e3},SESSION_SETTLEMENT_FAILED:{message:\"Session settlement failed.\",code:7e3},WC_METHOD_UNSUPPORTED:{message:\"Unsupported wc_ method.\",code:10001}},Qo={NOT_INITIALIZED:{message:\"Not initialized.\",code:1},NO_MATCHING_KEY:{message:\"No matching key.\",code:2},RESTORE_WILL_OVERRIDE:{message:\"Restore will override.\",code:3},RESUBSCRIBED:{message:\"Resubscribed.\",code:4},MISSING_OR_INVALID:{message:\"Missing or invalid.\",code:5},EXPIRED:{message:\"Expired.\",code:6},UNKNOWN_TYPE:{message:\"Unknown type.\",code:7},MISMATCHED_TOPIC:{message:\"Mismatched topic.\",code:8},NON_CONFORMING_NAMESPACES:{message:\"Non conforming namespaces.\",code:9}};function Et(t,e){const{message:n,code:r}=Qo[t];return{message:e?`${n} ${e}`:n,code:r}}function Kt(t,e){const{message:n,code:r}=Jo[t];return{message:e?`${n} ${e}`:n,code:r}}function me(t,e){return Array.isArray(t)?typeof e<\"u\"&&t.length?t.every(e):!0:!1}function Ve(t){return Object.getPrototypeOf(t)===Object.prototype&&Object.keys(t).length}function kt(t){return typeof t>\"u\"}function it(t,e){return e&&kt(t)?!0:typeof t==\"string\"&&!!t.trim().length}function qe(t,e){return e&&kt(t)?!0:typeof t==\"number\"&&!isNaN(t)}function ya(t,e){const{requiredNamespaces:n}=e,r=Object.keys(t.namespaces),o=Object.keys(n);let s=!0;return It(o,r)?(r.forEach(i=>{const{accounts:f,methods:a,events:l}=t.namespaces[i],c=qt(f),u=n[i];(!It(ve(i,u),c)||!It(u.methods,a)||!It(u.events,l))&&(s=!1)}),s):!1}function we(t){return it(t,!1)&&t.includes(\":\")?t.split(\":\").length===2:!1}function ts(t){if(it(t,!1)&&t.includes(\":\")){const e=t.split(\":\");if(e.length===3){const n=e[0]+\":\"+e[1];return!!e[2]&&we(n)}}return!1}function ma(t){function e(n){try{return typeof new URL(n)<\"u\"}catch{return!1}}try{if(it(t,!1)){if(e(t))return!0;const n=Qe(t);return e(n)}}catch{}return!1}function wa(t){var e;return(e=t?.proposer)==null?void 0:e.publicKey}function xa(t){return t?.topic}function va(t,e){let n=null;return it(t?.publicKey,!1)||(n=Et(\"MISSING_OR_INVALID\",`${e} controller public key should be a string`)),n}function Hn(t){let e=!0;return me(t)?t.length&&(e=t.every(n=>it(n,!1))):e=!1,e}function es(t,e,n){let r=null;return me(e)&&e.length?e.forEach(o=>{r||we(o)||(r=Kt(\"UNSUPPORTED_CHAINS\",`${n}, chain ${o} should be a string and conform to \"namespace:chainId\" format`))}):we(t)||(r=Kt(\"UNSUPPORTED_CHAINS\",`${n}, chains must be defined as \"namespace:chainId\" e.g. \"eip155:1\": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: [\"eip155:1\", \"eip155:5\"] }`)),r}function ns(t,e,n){let r=null;return Object.entries(t).forEach(([o,s])=>{if(r)return;const i=es(o,ve(o,s),`${e} ${n}`);i&&(r=i)}),r}function rs(t,e){let n=null;return me(t)?t.forEach(r=>{n||ts(r)||(n=Kt(\"UNSUPPORTED_ACCOUNTS\",`${e}, account ${r} should be a string and conform to \"namespace:chainId:address\" format`))}):n=Kt(\"UNSUPPORTED_ACCOUNTS\",`${e}, accounts should be an array of strings conforming to \"namespace:chainId:address\" format`),n}function os(t,e){let n=null;return Object.values(t).forEach(r=>{if(n)return;const o=rs(r?.accounts,`${e} namespace`);o&&(n=o)}),n}function ss(t,e){let n=null;return Hn(t?.methods)?Hn(t?.events)||(n=Kt(\"UNSUPPORTED_EVENTS\",`${e}, events should be an array of strings or empty array for no events`)):n=Kt(\"UNSUPPORTED_METHODS\",`${e}, methods should be an array of strings or empty array for no methods`),n}function Dn(t,e){let n=null;return Object.values(t).forEach(r=>{if(n)return;const o=ss(r,`${e}, namespace`);o&&(n=o)}),n}function Ea(t,e,n){let r=null;if(t&&Ve(t)){const o=Dn(t,e);o&&(r=o);const s=ns(t,e,n);s&&(r=s)}else r=Et(\"MISSING_OR_INVALID\",`${e}, ${n} should be an object with data`);return r}function is(t,e){let n=null;if(t&&Ve(t)){const r=Dn(t,e);r&&(n=r);const o=os(t,e);o&&(n=o)}else n=Et(\"MISSING_OR_INVALID\",`${e}, namespaces should be an object with data`);return n}function fs(t){return it(t.protocol,!0)}function Ba(t,e){let n=!1;return e&&!t?n=!0:t&&me(t)&&t.length&&t.forEach(r=>{n=fs(r)}),n}function Ia(t){return typeof t==\"number\"}function Aa(t){return typeof t<\"u\"&&typeof t!==null}function Sa(t){return!(!t||typeof t!=\"object\"||!t.code||!qe(t.code,!1)||!t.message||!it(t.message,!1))}function Na(t){return!(kt(t)||!it(t.method,!1))}function Oa(t){return!(kt(t)||kt(t.result)&&kt(t.error)||!qe(t.id,!1)||!it(t.jsonrpc,!1))}function Ua(t){return!(kt(t)||!it(t.name,!1))}function _a(t,e){return!(!we(e)||!Go(t).includes(e))}function Ta(t,e,n){return it(n,!1)?Zo(t,e).includes(n):!1}function Ra(t,e,n){return it(n,!1)?Wo(t,e).includes(n):!1}function cs(t,e,n){let r=null;const o=$a(t),s=Ca(e),i=Object.keys(o),f=Object.keys(s),a=as(Object.keys(t)),l=as(Object.keys(e)),c=a.filter(u=>!l.includes(u));return c.length&&(r=Et(\"NON_CONFORMING_NAMESPACES\",`${n} namespaces keys don't satisfy requiredNamespaces.\n Required: ${c.toString()}\n Received: ${Object.keys(e).toString()}`)),It(i,f)||(r=Et(\"NON_CONFORMING_NAMESPACES\",`${n} namespaces chains don't satisfy required namespaces.\n Required: ${i.toString()}\n Approved: ${f.toString()}`)),Object.keys(e).forEach(u=>{if(!u.includes(\":\")||r)return;const h=qt(e[u].accounts);h.includes(u)||(r=Et(\"NON_CONFORMING_NAMESPACES\",`${n} namespaces accounts don't satisfy namespace accounts for ${u}\n Required: ${u}\n Approved: ${h.toString()}`))}),i.forEach(u=>{r||(It(o[u].methods,s[u].methods)?It(o[u].events,s[u].events)||(r=Et(\"NON_CONFORMING_NAMESPACES\",`${n} namespaces events don't satisfy namespace events for ${u}`)):r=Et(\"NON_CONFORMING_NAMESPACES\",`${n} namespaces methods don't satisfy namespace methods for ${u}`))}),r}function $a(t){const e={};return Object.keys(t).forEach(n=>{var r;n.includes(\":\")?e[n]=t[n]:(r=t[n].chains)==null||r.forEach(o=>{e[o]={methods:t[n].methods,events:t[n].events}})}),e}function as(t){return[...new Set(t.map(e=>e.includes(\":\")?e.split(\":\")[0]:e))]}function Ca(t){const e={};return Object.keys(t).forEach(n=>{if(n.includes(\":\"))e[n]=t[n];else{const r=qt(t[n].accounts);r?.forEach(o=>{e[o]={accounts:t[n].accounts.filter(s=>s.includes(`${o}:`)),methods:t[n].methods,events:t[n].events}})}}),e}function La(t,e){return qe(t,!1)&&t<=e.max&&t>=e.min}function ja(){const t=Pt();return new Promise(e=>{switch(t){case J.browser:e(us());break;case J.reactNative:e(ls());break;case J.node:e(ds());break;default:e(!0)}})}function us(){return zt()&&navigator?.onLine}async function ls(){if(Bt()&&typeof global<\"u\"&&global!=null&&global.NetInfo){const t=await(global==null?void 0:global.NetInfo.fetch());return t?.isConnected}return!0}function ds(){return!0}function ka(t){switch(Pt()){case J.browser:hs(t);break;case J.reactNative:ps(t);break;case J.node:break}}function hs(t){!Bt()&&zt()&&(window.addEventListener(\"online\",()=>t(!0)),window.addEventListener(\"offline\",()=>t(!1)))}function ps(t){Bt()&&typeof global<\"u\"&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(e=>t(e?.isConnected))}function Pa(){var t;return zt()&&ne()?((t=ne())==null?void 0:t.visibilityState)===\"visible\":!0}const Mn={};class Ha{static get(e){return Mn[e]}static set(e,n){Mn[e]=n}static delete(e){delete Mn[e]}}function gs(t){const e=re.decode(t);if(e.length<33)throw new Error(\"Too short to contain a public key\");return e.slice(1,33)}function bs({publicKey:t,signature:e,payload:n}){var r;const o=Vn(n.method),s=128|parseInt(((r=n.version)==null?void 0:r.toString())||\"4\"),i=Ma(n.address),f=n.era===\"00\"?new Uint8Array([0]):Vn(n.era);if(f.length!==1&&f.length!==2)throw new Error(\"Invalid era length\");const a=parseInt(n.nonce,16),l=new Uint8Array([a&255,a>>8&255]),c=BigInt(`0x${Da(n.tip)}`),u=qa(c),h=new Uint8Array([0,...t,i,...e,...f,...l,...u,...o]),g=Va(h.length+1);return new Uint8Array([...g,s,...h])}function ys(t){const e=Vn(t),n=Ns(e,void 0,32);return\"0x\"+Buffer.from(n).toString(\"hex\")}function Vn(t){return new Uint8Array(t.replace(/^0x/,\"\").match(/.{1,2}/g).map(e=>parseInt(e,16)))}function Da(t){return t.startsWith(\"0x\")?t.slice(2):t}function Ma(t){const e=re.decode(t)[0];return e===42?0:e===60?2:1}function Va(t){if(t<64)return new Uint8Array([t<<2]);if(t<16384){const e=t<<2|1;return new Uint8Array([e&255,e>>8&255])}else if(t<1<<30){const e=t<<2|2;return new Uint8Array([e&255,e>>8&255,e>>16&255,e>>24&255])}else throw new Error(\"Compact encoding > 2^30 not supported\")}function qa(t){if(t>BigInt(8)&BigInt(255))])}else if(t>BigInt(8)&BigInt(255)),Number(e>>BigInt(16)&BigInt(255)),Number(e>>BigInt(24)&BigInt(255))])}else throw new Error(\"BigInt compact encoding not supported > 2^30\")}function Ka(t){const e=Uint8Array.from(Buffer.from(t.signature,\"hex\")),n=gs(t.transaction.address),r=bs({publicKey:n,signature:e,payload:t.transaction}),o=Buffer.from(r).toString(\"hex\");return ys(o)}export{$n as BASE10,tt as BASE16,Qt as BASE64,De as BASE64URL,Hs as COLON,We as DEFAULT_DEPTH,Ee as EMPTY_SPACE,J as ENV_MAP,Qo as INTERNAL_ERRORS,gi as LimitedSet,Ha as MemoryStore,Ds as ONE_THOUSAND,er as REACT_NATIVE_PRODUCT,Mo as RELAYER_DEFAULT_PROTOCOL,Jo as SDK_ERRORS,rr as SDK_TYPE,nr as SLASH,Cn as TYPE_0,ee as TYPE_1,ge as TYPE_2,te as UTF8,Yr as addResourceToRecap,bs as addSignatureToExtrinsic,or as appendToQueryString,Zs as assertType,hn as assignAbilityToActions,Zr as base64Decode,Gr as base64Encode,pa as buildApprovedNamespaces,mf as buildAuthObject,ga as buildNamespacesFromAuth,Jr as buildRecapStatement,Ka as buildSignedExtrinsicHash,ii as calcExpiry,ti as capitalize,lr as capitalizeWord,ei as createDelayedPromise,Ef as createEncodedRecap,ni as createExpiringPromise,Wr as createRecap,Lt as decodeRecap,Vt as decodeTypeByte,Yc as decodeTypeTwoEnvelope,Zc as decrypt,ys as deriveExtrinsicHash,Kc as deriveSymKey,Me as deserialize,Ne as encodeRecap,jn as encodeTypeByte,Wc as encodeTypeTwoEnvelope,Gc as encrypt,ci as engineEvent,Qs as enumify,sf as extractSolanaTransactionId,Zn as formatAccountId,Os as formatAccountWithChain,Gn as formatChainId,dr as formatDeeplinkUrl,Xe as formatExpirerTarget,oi as formatIdTarget,qr as formatMessage,Ws as formatMessageContext,Ko as formatRelayParams,zs as formatRelayRpcUrl,gn as formatStatementFromRecap,ri as formatTopicTarget,cr as formatUA,oa as formatUri,Qe as fromBase64,Vc as generateKeyPair,qc as generateRandomBytes32,qt as getAccountsChains,_s as getAccountsFromNamespaces,Wn as getAddressFromAccount,Us as getAddressesFromAccounts,af as getAlgorandTransactionId,qs as getAppId,sr as getAppMetadata,us as getBrowserOnlineStatus,Yn as getChainFromAccount,Xn as getChainsFromAccounts,ve as getChainsFromNamespace,Ts as getChainsFromNamespaces,Af as getChainsFromRecap,Rs as getChainsFromRequiredNamespaces,Je as getCommonValuesInArrays,Do as getCryptoKeyFromKeyData,Kr as getDecodedRecapFromResources,ui as getDeepLink,dn as getDidAddress,Se as getDidAddressSegments,Mr as getDidChainId,Pt as getEnvironment,Gs as getHttpUrl,Et as getInternalError,fr as getJavascriptID,ir as getJavascriptOS,ur as getLastItems,sa as getLinkModeURL,If as getMethodsFromRecap,Vr as getNamespacedDidChainId,Go as getNamespacesChains,Wo as getNamespacesEventsForChainId,Xo as getNamespacesFromAccounts,Zo as getNamespacesMethodsForChainId,cf as getNearTransactionIdFromSignedTransaction,kr as getNearUint8ArrayFromBytes,ds as getNodeOnlineStatus,zr as getReCapActions,ls as getReactNativeOnlineStatus,vf as getRecapAbilitiesFromResource,Oe as getRecapFromResources,Fr as getRecapResource,Fs as getRelayClientMetadata,na as getRelayProtocolApi,ea as getRelayProtocolName,ha as getRequiredNamespacesFromNamespaces,Kt as getSdkError,li as getSearchParamFromURL,uf as getSignDirectHash,ff as getSuiDigest,Ge as getUniqueValues,ai as handleDeeplinkRedirect,It as hasOverlap,an as hashEthereumMessage,Fc as hashKey,zc as hashMessage,Ms as isAndroid,Pa as isAppVisible,zt as isBrowser,Pn as isCaipNamespace,cs as isConformingNamespaces,fi as isExpired,gr as isIframe,Vs as isIos,Ye as isNode,ja as isOnline,wa as isProposalStruct,Bt as isReactNative,pn as isRecap,ya as isSessionCompatible,xa as isSessionStruct,pr as isTelegram,hi as isTestRun,Jc as isTypeOneEnvelope,Qc as isTypeTwoEnvelope,kt as isUndefined,ts as isValidAccountId,rs as isValidAccounts,ss as isValidActions,me as isValidArray,we as isValidChainId,es as isValidChains,va as isValidController,jr as isValidEip1271Signature,Lr as isValidEip191Signature,Sa as isValidErrorReason,Ua as isValidEvent,Ia as isValidId,os as isValidNamespaceAccounts,Dn as isValidNamespaceActions,ns as isValidNamespaceChains,Hn as isValidNamespaceMethodsOrEvents,is as isValidNamespaces,_a as isValidNamespacesChainId,Ra as isValidNamespacesEvent,Ta as isValidNamespacesRequest,qe as isValidNumber,Ve as isValidObject,Aa as isValidParams,bt as isValidRecap,fs as isValidRelay,Ba as isValidRelays,Na as isValidRequest,La as isValidRequestExpiry,Ea as isValidRequiredNamespaces,Oa as isValidResponse,it as isValidString,ma as isValidUrl,Js as mapEntries,Ys as mapToObj,ct as mergeArrays,Bf as mergeEncodedRecaps,Xr as mergeRecaps,ba as mergeRequiredAndOptionalNamespaces,ye as normalizeNamespaces,Xs as objToMap,hr as openDeeplink,ze as parseAccountId,Fe as parseChainId,ar as parseContextNames,si as parseExpirerTarget,Yo as parseNamespaceKey,Vo as parseRelayParams,qo as parseTopic,ra as parseUri,Ks as populateAppMetadata,wf as populateAuthPayload,xf as recapHasResource,kn as serialize,pi as sleep,gs as ss58AddressToPublicKey,hs as subscribeToBrowserNetworkChange,ka as subscribeToNetworkChange,ps as subscribeToReactNativeNetworkChange,br as toBase64,di as uuidv4,Xc as validateDecoding,Ho as validateEncoding,yf as validateSignedCacao,ta as verifyP256Jwt,Cr as verifySignature};\n//# sourceMappingURL=index.es.js.map\n","export const PARSE_ERROR = \"PARSE_ERROR\";\nexport const INVALID_REQUEST = \"INVALID_REQUEST\";\nexport const METHOD_NOT_FOUND = \"METHOD_NOT_FOUND\";\nexport const INVALID_PARAMS = \"INVALID_PARAMS\";\nexport const INTERNAL_ERROR = \"INTERNAL_ERROR\";\nexport const SERVER_ERROR = \"SERVER_ERROR\";\nexport const RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nexport const SERVER_ERROR_CODE_RANGE = [-32000, -32099];\nexport const STANDARD_ERROR_MAP = {\n [PARSE_ERROR]: { code: -32700, message: \"Parse error\" },\n [INVALID_REQUEST]: { code: -32600, message: \"Invalid Request\" },\n [METHOD_NOT_FOUND]: { code: -32601, message: \"Method not found\" },\n [INVALID_PARAMS]: { code: -32602, message: \"Invalid params\" },\n [INTERNAL_ERROR]: { code: -32603, message: \"Internal error\" },\n [SERVER_ERROR]: { code: -32000, message: \"Server error\" },\n};\nexport const DEFAULT_ERROR = SERVER_ERROR;\n//# sourceMappingURL=constants.js.map","import { SERVER_ERROR_CODE_RANGE, RESERVED_ERROR_CODES, STANDARD_ERROR_MAP, DEFAULT_ERROR, } from \"./constants\";\nexport function isServerErrorCode(code) {\n return code <= SERVER_ERROR_CODE_RANGE[0] && code >= SERVER_ERROR_CODE_RANGE[1];\n}\nexport function isReservedErrorCode(code) {\n return RESERVED_ERROR_CODES.includes(code);\n}\nexport function isValidErrorCode(code) {\n return typeof code === \"number\";\n}\nexport function getError(type) {\n if (!Object.keys(STANDARD_ERROR_MAP).includes(type)) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return STANDARD_ERROR_MAP[type];\n}\nexport function getErrorByCode(code) {\n const match = Object.values(STANDARD_ERROR_MAP).find(e => e.code === code);\n if (!match) {\n return STANDARD_ERROR_MAP[DEFAULT_ERROR];\n }\n return match;\n}\nexport function validateJsonRpcError(response) {\n if (typeof response.error.code === \"undefined\") {\n return { valid: false, error: \"Missing code for JSON-RPC error\" };\n }\n if (typeof response.error.message === \"undefined\") {\n return { valid: false, error: \"Missing message for JSON-RPC error\" };\n }\n if (!isValidErrorCode(response.error.code)) {\n return {\n valid: false,\n error: `Invalid error code type for JSON-RPC: ${response.error.code}`,\n };\n }\n if (isReservedErrorCode(response.error.code)) {\n const error = getErrorByCode(response.error.code);\n if (error.message !== STANDARD_ERROR_MAP[DEFAULT_ERROR].message &&\n response.error.message === error.message) {\n return {\n valid: false,\n error: `Invalid error code message for JSON-RPC: ${response.error.code}`,\n };\n }\n }\n return { valid: true };\n}\nexport function parseConnectionError(e, url, type) {\n return e.message.includes(\"getaddrinfo ENOTFOUND\") || e.message.includes(\"connect ECONNREFUSED\")\n ? new Error(`Unavailable ${type} RPC url at ${url}`)\n : e;\n}\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\nfunction getBrowerCrypto() {\n return (global === null || global === void 0 ? void 0 : global.crypto) || (global === null || global === void 0 ? void 0 : global.msCrypto) || {};\n}\nexports.getBrowerCrypto = getBrowerCrypto;\nfunction getSubtleCrypto() {\n const browserCrypto = getBrowerCrypto();\n return browserCrypto.subtle || browserCrypto.webkitSubtle;\n}\nexports.getSubtleCrypto = getSubtleCrypto;\nfunction isBrowserCryptoAvailable() {\n return !!getBrowerCrypto() && !!getSubtleCrypto();\n}\nexports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n//# sourceMappingURL=crypto.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBrowser = exports.isNode = exports.isReactNative = void 0;\nfunction isReactNative() {\n return (typeof document === \"undefined\" &&\n typeof navigator !== \"undefined\" &&\n navigator.product === \"ReactNative\");\n}\nexports.isReactNative = isReactNative;\nfunction isNode() {\n return (typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\");\n}\nexports.isNode = isNode;\nfunction isBrowser() {\n return !isReactNative() && !isNode();\n}\nexports.isBrowser = isBrowser;\n//# sourceMappingURL=env.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./crypto\"), exports);\ntslib_1.__exportStar(require(\"./env\"), exports);\n//# sourceMappingURL=index.js.map","import { getError, getErrorByCode, isReservedErrorCode } from \"./error\";\nimport { INTERNAL_ERROR, SERVER_ERROR } from \"./constants\";\nexport function payloadId(entropy = 3) {\n const date = Date.now() * Math.pow(10, entropy);\n const extra = Math.floor(Math.random() * Math.pow(10, entropy));\n return date + extra;\n}\nexport function getBigIntRpcId(entropy = 6) {\n return BigInt(payloadId(entropy));\n}\nexport function formatJsonRpcRequest(method, params, id) {\n return {\n id: id || payloadId(),\n jsonrpc: \"2.0\",\n method,\n params,\n };\n}\nexport function formatJsonRpcResult(id, result) {\n return {\n id,\n jsonrpc: \"2.0\",\n result,\n };\n}\nexport function formatJsonRpcError(id, error, data) {\n return {\n id,\n jsonrpc: \"2.0\",\n error: formatErrorMessage(error, data),\n };\n}\nexport function formatErrorMessage(error, data) {\n if (typeof error === \"undefined\") {\n return getError(INTERNAL_ERROR);\n }\n if (typeof error === \"string\") {\n error = Object.assign(Object.assign({}, getError(SERVER_ERROR)), { message: error });\n }\n if (typeof data !== \"undefined\") {\n error.data = data;\n }\n if (isReservedErrorCode(error.code)) {\n error = getErrorByCode(error.code);\n }\n return error;\n}\n//# sourceMappingURL=format.js.map","class e{}class o extends e{constructor(c){super()}}class n extends e{constructor(){super()}}class r extends n{constructor(c){super()}}export{n as IBaseJsonRpcProvider,e as IEvents,o as IJsonRpcConnection,r as IJsonRpcProvider};\n//# sourceMappingURL=index.es.js.map\n","const HTTP_REGEX = \"^https?:\";\nconst WS_REGEX = \"^wss?:\";\nfunction getUrlProtocol(url) {\n const matches = url.match(new RegExp(/^\\w+:/, \"gi\"));\n if (!matches || !matches.length)\n return;\n return matches[0];\n}\nfunction matchRegexProtocol(url, regex) {\n const protocol = getUrlProtocol(url);\n if (typeof protocol === \"undefined\")\n return false;\n return new RegExp(regex).test(protocol);\n}\nexport function isHttpUrl(url) {\n return matchRegexProtocol(url, HTTP_REGEX);\n}\nexport function isWsUrl(url) {\n return matchRegexProtocol(url, WS_REGEX);\n}\nexport function isLocalhostUrl(url) {\n return new RegExp(\"wss?://localhost(:d{2,5})?\").test(url);\n}\n//# sourceMappingURL=url.js.map","export function isJsonRpcPayload(payload) {\n return (typeof payload === \"object\" &&\n \"id\" in payload &&\n \"jsonrpc\" in payload &&\n payload.jsonrpc === \"2.0\");\n}\nexport function isJsonRpcRequest(payload) {\n return isJsonRpcPayload(payload) && \"method\" in payload;\n}\nexport function isJsonRpcResponse(payload) {\n return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nexport function isJsonRpcResult(payload) {\n return \"result\" in payload;\n}\nexport function isJsonRpcError(payload) {\n return \"error\" in payload;\n}\nexport function isJsonRpcValidationInvalid(validation) {\n return \"error\" in validation && validation.valid === false;\n}\n//# sourceMappingURL=validators.js.map","import{EventEmitter as c}from\"events\";import{IJsonRpcProvider as r,formatJsonRpcRequest as h,getBigIntRpcId as a,isJsonRpcError as d,isJsonRpcResponse as v}from\"@walletconnect/jsonrpc-utils\";class o extends r{constructor(t){super(t),this.events=new c,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(t),this.connection.connected&&this.registerEventListeners()}async connect(t=this.connection){await this.open(t)}async disconnect(){await this.close()}on(t,e){this.events.on(t,e)}once(t,e){this.events.once(t,e)}off(t,e){this.events.off(t,e)}removeListener(t,e){this.events.removeListener(t,e)}async request(t,e){return this.requestStrict(h(t.method,t.params||[],t.id||a().toString()),e)}async requestStrict(t,e){return new Promise(async(i,s)=>{if(!this.connection.connected)try{await this.open()}catch(n){s(n)}this.events.on(`${t.id}`,n=>{d(n)?s(n.error):i(n.result)});try{await this.connection.send(t,e)}catch(n){s(n)}})}setConnection(t=this.connection){return t}onPayload(t){this.events.emit(\"payload\",t),v(t)?this.events.emit(`${t.id}`,t):this.events.emit(\"message\",{type:t.method,data:t.params})}onClose(t){t&&t.code===3e3&&this.events.emit(\"error\",new Error(`WebSocket connection closed abnormally with code: ${t.code} ${t.reason?`(${t.reason})`:\"\"}`)),this.events.emit(\"disconnect\")}async open(t=this.connection){this.connection===t&&this.connection.connected||(this.connection.connected&&this.close(),typeof t==\"string\"&&(await this.connection.open(t),t=this.connection),this.connection=this.setConnection(t),await this.connection.open(),this.registerEventListeners(),this.events.emit(\"connect\"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on(\"payload\",t=>this.onPayload(t)),this.connection.on(\"close\",t=>this.onClose(t)),this.connection.on(\"error\",t=>this.events.emit(\"error\",t)),this.connection.on(\"register_error\",t=>this.onClose()),this.hasRegisteredEventListeners=!0)}}export{o as JsonRpcProvider,o as default};\n//# sourceMappingURL=index.es.js.map\n","import{EventEmitter as l}from\"events\";import{safeJsonStringify as u,safeJsonParse as p}from\"@walletconnect/safe-json\";import{isWsUrl as c,isReactNative as g,isLocalhostUrl as y,formatJsonRpcError as k,parseConnectionError as m}from\"@walletconnect/jsonrpc-utils\";const v=()=>typeof WebSocket<\"u\"?WebSocket:typeof global<\"u\"&&typeof global.WebSocket<\"u\"?global.WebSocket:typeof window<\"u\"&&typeof window.WebSocket<\"u\"?window.WebSocket:typeof self<\"u\"&&typeof self.WebSocket<\"u\"?self.WebSocket:require(\"ws\"),w=()=>typeof WebSocket<\"u\"||typeof global<\"u\"&&typeof global.WebSocket<\"u\"||typeof window<\"u\"&&typeof window.WebSocket<\"u\"||typeof self<\"u\"&&typeof self.WebSocket<\"u\",d=r=>r.split(\"?\")[0],h=10,b=v();class f{constructor(e){if(this.url=e,this.events=new l,this.registering=!1,!c(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<\"u\"}get connecting(){return this.registering}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>\"u\"){t(new Error(\"Connection already closed\"));return}this.socket.onclose=n=>{this.onClose(n),e()},this.socket.close()})}async send(e){typeof this.socket>\"u\"&&(this.socket=await this.register());try{this.socket.send(u(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!c(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount(\"register_error\")>=t||this.events.listenerCount(\"open\")>=t)&&this.events.setMaxListeners(t+1),new Promise((n,s)=>{this.events.once(\"register_error\",o=>{this.resetMaxListeners(),s(o)}),this.events.once(\"open\",()=>{if(this.resetMaxListeners(),typeof this.socket>\"u\")return s(new Error(\"WebSocket connection is missing or invalid\"));n(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,n)=>{const s=g()?void 0:{rejectUnauthorized:!y(e)},o=new b(e,[],s);w()?o.onerror=i=>{const a=i;n(this.emitError(a.error))}:o.on(\"error\",i=>{n(this.emitError(i))}),o.onopen=()=>{this.onOpen(o),t(o)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit(\"open\")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit(\"close\",e)}onPayload(e){if(typeof e.data>\"u\")return;const t=typeof e.data==\"string\"?p(e.data):e.data;this.events.emit(\"payload\",t)}onError(e,t){const n=this.parseError(t),s=n.message||n.toString(),o=k(e,s);this.events.emit(\"payload\",o)}parseError(e,t=this.url){return m(e,d(t),\"WS\")}resetMaxListeners(){this.events.getMaxListeners()>h&&this.events.setMaxListeners(h)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${d(this.url)}`));return this.events.emit(\"register_error\",t),t}}export{f as WsConnection,f as default};\n//# sourceMappingURL=index.es.js.map\n","import Wi,{EventEmitter as ee}from\"events\";import{HEARTBEAT_EVENTS as te,HeartBeat as Hi}from\"@walletconnect/heartbeat\";import Yi from\"@walletconnect/keyvaluestorage\";import{generateChildLogger as N,getLoggerContext as U,pino as Ji,getDefaultLoggerOptions as et,generatePlatformLogger as Xi}from\"@walletconnect/logger\";import{IMessageTracker as Zi,IPublisher as Qi,ISubscriber as es,IRelayer as ts,IStore as is,IJsonRpcHistory as ss,IExpirer as rs,IVerify as ns,IEchoClient as os,IEventClient as as,ICore as cs}from\"@walletconnect/types\";import{ONE_DAY as ie,SIX_HOURS as hs,THIRTY_DAYS as Ce,FIVE_SECONDS as Pe,THIRTY_SECONDS as Se,toMiliseconds as R,ONE_MINUTE as tt,ONE_SECOND as Z,FIVE_MINUTES as fe,fromMiliseconds as it}from\"@walletconnect/time\";import{safeJsonStringify as ls,safeJsonParse as st}from\"@walletconnect/safe-json\";import*as De from\"@walletconnect/relay-auth\";import{decodeJWT as rt}from\"@walletconnect/relay-auth\";import{mapToObj as Oe,objToMap as Re,getInternalError as m,generateRandomBytes32 as Ae,generateKeyPair as us,deriveSymKey as ds,hashKey as gs,validateEncoding as ps,isTypeTwoEnvelope as nt,encodeTypeTwoEnvelope as ys,isTypeOneEnvelope as ot,encrypt as bs,validateDecoding as ms,decodeTypeTwoEnvelope as fs,decrypt as Ds,deserialize as at,decodeTypeByte as vs,BASE64 as ct,BASE16 as ws,hashMessage as ve,getRelayProtocolApi as oe,getRelayProtocolName as we,isUndefined as xe,createExpiringPromise as X,getSdkError as ae,sleep as _s,isAndroid as Es,getAppId as ht,isIos as Is,isOnline as lt,calcExpiry as ce,isNode as ut,formatRelayRpcUrl as Ts,subscribeToNetworkChange as Cs,isAppVisible as Ps,isProposalStruct as Ss,isSessionStruct as Os,parseExpirerTarget as Rs,TYPE_1 as As,formatUri as dt,parseUri as gt,createDelayedPromise as xs,engineEvent as Ne,isExpired as pt,isValidParams as $e,isValidUrl as Ns,isValidString as $s,formatTopicTarget as zs,formatIdTarget as Ls,isTestRun as yt,isBrowser as ks,verifyP256Jwt as js,uuidv4 as bt,formatUA as Us,getAppMetadata as Fs}from\"@walletconnect/utils\";import{toString as Ms}from\"uint8arrays\";import{JsonRpcProvider as Ks}from\"@walletconnect/jsonrpc-provider\";import{getBigIntRpcId as mt,isJsonRpcRequest as ft,isJsonRpcResponse as Dt,formatJsonRpcResult as vt,formatJsonRpcRequest as wt,formatJsonRpcError as Bs,isJsonRpcResult as Vs,isJsonRpcError as _t}from\"@walletconnect/jsonrpc-utils\";import qs from\"@walletconnect/jsonrpc-ws-connection\";import{getDocument as Gs}from\"@walletconnect/window-getters\";const ze=\"wc\",Le=2,he=\"core\",B=`${ze}@2:${he}:`,Et={name:he,logger:\"error\"},It={database:\":memory:\"},Tt=\"crypto\",ke=\"client_ed25519_seed\",Ct=ie,Pt=\"keychain\",St=\"0.3\",Ot=\"messages\",Rt=\"0.3\",je=hs,At=\"publisher\",xt=\"irn\",Nt=\"error\",Ue=\"wss://relay.walletconnect.org\",$t=\"relayer\",C={message:\"relayer_message\",message_ack:\"relayer_message_ack\",connect:\"relayer_connect\",disconnect:\"relayer_disconnect\",error:\"relayer_error\",connection_stalled:\"relayer_connection_stalled\",transport_closed:\"relayer_transport_closed\",publish:\"relayer_publish\"},zt=\"_subscription\",L={payload:\"payload\",connect:\"connect\",disconnect:\"disconnect\",error:\"error\"},Lt=.1,Ws={database:\":memory:\"},_e=\"2.21.5\",Hs=1e4,Q={link_mode:\"link_mode\",relay:\"relay\"},le={inbound:\"inbound\",outbound:\"outbound\"},kt=\"0.3\",jt=\"WALLETCONNECT_CLIENT_ID\",Fe=\"WALLETCONNECT_LINK_MODE_APPS\",$={created:\"subscription_created\",deleted:\"subscription_deleted\",expired:\"subscription_expired\",disabled:\"subscription_disabled\",sync:\"subscription_sync\",resubscribed:\"subscription_resubscribed\"},Ys=Ce,Ut=\"subscription\",Ft=\"0.3\",Js=Pe*1e3,Mt=\"pairing\",Kt=\"0.3\",Xs=Ce,se={wc_pairingDelete:{req:{ttl:ie,prompt:!1,tag:1e3},res:{ttl:ie,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:Se,prompt:!1,tag:1002},res:{ttl:Se,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:ie,prompt:!1,tag:0},res:{ttl:ie,prompt:!1,tag:0}}},re={create:\"pairing_create\",expire:\"pairing_expire\",delete:\"pairing_delete\",ping:\"pairing_ping\"},F={created:\"history_created\",updated:\"history_updated\",deleted:\"history_deleted\",sync:\"history_sync\"},Bt=\"history\",Vt=\"0.3\",qt=\"expirer\",M={created:\"expirer_created\",deleted:\"expirer_deleted\",expired:\"expirer_expired\",sync:\"expirer_sync\"},Gt=\"0.3\",Zs=ie,Wt=\"verify-api\",Qs=\"https://verify.walletconnect.com\",Ht=\"https://verify.walletconnect.org\",ue=Ht,Yt=`${ue}/v3`,Jt=[Qs,Ht],Xt=\"echo\",Zt=\"https://echo.walletconnect.com\",er=\"event-client\",G={pairing_started:\"pairing_started\",pairing_uri_validation_success:\"pairing_uri_validation_success\",pairing_uri_not_expired:\"pairing_uri_not_expired\",store_new_pairing:\"store_new_pairing\",subscribing_pairing_topic:\"subscribing_pairing_topic\",subscribe_pairing_topic_success:\"subscribe_pairing_topic_success\",existing_pairing:\"existing_pairing\",pairing_not_expired:\"pairing_not_expired\",emit_inactive_pairing:\"emit_inactive_pairing\",emit_session_proposal:\"emit_session_proposal\",subscribing_to_pairing_topic:\"subscribing_to_pairing_topic\"},Y={no_wss_connection:\"no_wss_connection\",no_internet_connection:\"no_internet_connection\",malformed_pairing_uri:\"malformed_pairing_uri\",active_pairing_already_exists:\"active_pairing_already_exists\",subscribe_pairing_topic_failure:\"subscribe_pairing_topic_failure\",pairing_expired:\"pairing_expired\",proposal_expired:\"proposal_expired\",proposal_listener_not_found:\"proposal_listener_not_found\"},tr={session_approve_started:\"session_approve_started\",proposal_not_expired:\"proposal_not_expired\",session_namespaces_validation_success:\"session_namespaces_validation_success\",create_session_topic:\"create_session_topic\",subscribing_session_topic:\"subscribing_session_topic\",subscribe_session_topic_success:\"subscribe_session_topic_success\",publishing_session_approve:\"publishing_session_approve\",session_approve_publish_success:\"session_approve_publish_success\",store_session:\"store_session\",publishing_session_settle:\"publishing_session_settle\",session_settle_publish_success:\"session_settle_publish_success\"},ir={no_internet_connection:\"no_internet_connection\",no_wss_connection:\"no_wss_connection\",proposal_expired:\"proposal_expired\",subscribe_session_topic_failure:\"subscribe_session_topic_failure\",session_approve_publish_failure:\"session_approve_publish_failure\",session_settle_publish_failure:\"session_settle_publish_failure\",session_approve_namespace_validation_failure:\"session_approve_namespace_validation_failure\",proposal_not_found:\"proposal_not_found\"},sr={authenticated_session_approve_started:\"authenticated_session_approve_started\",authenticated_session_not_expired:\"authenticated_session_not_expired\",chains_caip2_compliant:\"chains_caip2_compliant\",chains_evm_compliant:\"chains_evm_compliant\",create_authenticated_session_topic:\"create_authenticated_session_topic\",cacaos_verified:\"cacaos_verified\",store_authenticated_session:\"store_authenticated_session\",subscribing_authenticated_session_topic:\"subscribing_authenticated_session_topic\",subscribe_authenticated_session_topic_success:\"subscribe_authenticated_session_topic_success\",publishing_authenticated_session_approve:\"publishing_authenticated_session_approve\",authenticated_session_approve_publish_success:\"authenticated_session_approve_publish_success\"},rr={no_internet_connection:\"no_internet_connection\",no_wss_connection:\"no_wss_connection\",missing_session_authenticate_request:\"missing_session_authenticate_request\",session_authenticate_request_expired:\"session_authenticate_request_expired\",chains_caip2_compliant_failure:\"chains_caip2_compliant_failure\",chains_evm_compliant_failure:\"chains_evm_compliant_failure\",invalid_cacao:\"invalid_cacao\",subscribe_authenticated_session_topic_failure:\"subscribe_authenticated_session_topic_failure\",authenticated_session_approve_publish_failure:\"authenticated_session_approve_publish_failure\",authenticated_session_pending_request_not_found:\"authenticated_session_pending_request_not_found\"},Qt=.1,ei=\"event-client\",ti=86400,ii=\"https://pulse.walletconnect.org/batch\";function nr(r,e){if(r.length>=255)throw new TypeError(\"Alphabet too long\");for(var t=new Uint8Array(256),i=0;i>>0,T=new Uint8Array(j);I!==D;){for(var q=u[I],J=0,K=j-1;(q!==0||J>>0,T[K]=q%a>>>0,q=q/a>>>0;if(q!==0)throw new Error(\"Non-zero carry\");x=J,I++}for(var H=j-x;H!==j&&T[H]===0;)H++;for(var me=c.repeat(b);H>>0,j=new Uint8Array(D);u[b];){var T=t[u.charCodeAt(b)];if(T===255)return;for(var q=0,J=D-1;(T!==0||q>>0,j[J]=T%256>>>0,T=T/256>>>0;if(T!==0)throw new Error(\"Non-zero carry\");I=q,b++}if(u[b]!==\" \"){for(var K=D-I;K!==D&&j[K]===0;)K++;for(var H=new Uint8Array(x+(D-K)),me=x;K!==D;)H[me++]=j[K++];return H}}}function _(u){var b=g(u);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:d,decodeUnsafe:g,decode:_}}var or=nr,ar=or;const si=r=>{if(r instanceof Uint8Array&&r.constructor.name===\"Uint8Array\")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error(\"Unknown type, must be binary type\")},cr=r=>new TextEncoder().encode(r),hr=r=>new TextDecoder().decode(r);class lr{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error(\"Unknown type, must be binary type\")}}class ur{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error(\"Invalid prefix character\");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e==\"string\"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error(\"Can only multibase decode strings\")}or(e){return ri(this,e)}}class dr{constructor(e){this.decoders=e}or(e){return ri(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const ri=(r,e)=>new dr({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class gr{constructor(e,t,i,s){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=s,this.encoder=new lr(e,t,i),this.decoder=new ur(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Ee=({name:r,prefix:e,encode:t,decode:i})=>new gr(r,e,t,i),de=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:s}=ar(t,e);return Ee({prefix:r,name:e,encode:i,decode:n=>si(s(n))})},pr=(r,e,t,i)=>{const s={};for(let l=0;l=8&&(a-=8,o[h++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError(\"Unexpected end of data\");return o},yr=(r,e,t)=>{const i=e[e.length-1]===\"=\",s=(1<t;)o-=t,n+=e[s&a>>o];if(o&&(n+=e[s&a<Ee({prefix:e,name:r,encode(s){return yr(s,i,t)},decode(s){return pr(s,i,t,r)}}),br=Ee({prefix:\"\\0\",name:\"identity\",encode:r=>hr(r),decode:r=>cr(r)});var mr=Object.freeze({__proto__:null,identity:br});const fr=P({prefix:\"0\",name:\"base2\",alphabet:\"01\",bitsPerChar:1});var Dr=Object.freeze({__proto__:null,base2:fr});const vr=P({prefix:\"7\",name:\"base8\",alphabet:\"01234567\",bitsPerChar:3});var wr=Object.freeze({__proto__:null,base8:vr});const _r=de({prefix:\"9\",name:\"base10\",alphabet:\"0123456789\"});var Er=Object.freeze({__proto__:null,base10:_r});const Ir=P({prefix:\"f\",name:\"base16\",alphabet:\"0123456789abcdef\",bitsPerChar:4}),Tr=P({prefix:\"F\",name:\"base16upper\",alphabet:\"0123456789ABCDEF\",bitsPerChar:4});var Cr=Object.freeze({__proto__:null,base16:Ir,base16upper:Tr});const Pr=P({prefix:\"b\",name:\"base32\",alphabet:\"abcdefghijklmnopqrstuvwxyz234567\",bitsPerChar:5}),Sr=P({prefix:\"B\",name:\"base32upper\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",bitsPerChar:5}),Or=P({prefix:\"c\",name:\"base32pad\",alphabet:\"abcdefghijklmnopqrstuvwxyz234567=\",bitsPerChar:5}),Rr=P({prefix:\"C\",name:\"base32padupper\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=\",bitsPerChar:5}),Ar=P({prefix:\"v\",name:\"base32hex\",alphabet:\"0123456789abcdefghijklmnopqrstuv\",bitsPerChar:5}),xr=P({prefix:\"V\",name:\"base32hexupper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUV\",bitsPerChar:5}),Nr=P({prefix:\"t\",name:\"base32hexpad\",alphabet:\"0123456789abcdefghijklmnopqrstuv=\",bitsPerChar:5}),$r=P({prefix:\"T\",name:\"base32hexpadupper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUV=\",bitsPerChar:5}),zr=P({prefix:\"h\",name:\"base32z\",alphabet:\"ybndrfg8ejkmcpqxot1uwisza345h769\",bitsPerChar:5});var Lr=Object.freeze({__proto__:null,base32:Pr,base32upper:Sr,base32pad:Or,base32padupper:Rr,base32hex:Ar,base32hexupper:xr,base32hexpad:Nr,base32hexpadupper:$r,base32z:zr});const kr=de({prefix:\"k\",name:\"base36\",alphabet:\"0123456789abcdefghijklmnopqrstuvwxyz\"}),jr=de({prefix:\"K\",name:\"base36upper\",alphabet:\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\"});var Ur=Object.freeze({__proto__:null,base36:kr,base36upper:jr});const Fr=de({name:\"base58btc\",prefix:\"z\",alphabet:\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\"}),Mr=de({name:\"base58flickr\",prefix:\"Z\",alphabet:\"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\"});var Kr=Object.freeze({__proto__:null,base58btc:Fr,base58flickr:Mr});const Br=P({prefix:\"m\",name:\"base64\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",bitsPerChar:6}),Vr=P({prefix:\"M\",name:\"base64pad\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",bitsPerChar:6}),qr=P({prefix:\"u\",name:\"base64url\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\",bitsPerChar:6}),Gr=P({prefix:\"U\",name:\"base64urlpad\",alphabet:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=\",bitsPerChar:6});var Wr=Object.freeze({__proto__:null,base64:Br,base64pad:Vr,base64url:qr,base64urlpad:Gr});const ni=Array.from(\"\\u{1F680}\\u{1FA90}\\u2604\\u{1F6F0}\\u{1F30C}\\u{1F311}\\u{1F312}\\u{1F313}\\u{1F314}\\u{1F315}\\u{1F316}\\u{1F317}\\u{1F318}\\u{1F30D}\\u{1F30F}\\u{1F30E}\\u{1F409}\\u2600\\u{1F4BB}\\u{1F5A5}\\u{1F4BE}\\u{1F4BF}\\u{1F602}\\u2764\\u{1F60D}\\u{1F923}\\u{1F60A}\\u{1F64F}\\u{1F495}\\u{1F62D}\\u{1F618}\\u{1F44D}\\u{1F605}\\u{1F44F}\\u{1F601}\\u{1F525}\\u{1F970}\\u{1F494}\\u{1F496}\\u{1F499}\\u{1F622}\\u{1F914}\\u{1F606}\\u{1F644}\\u{1F4AA}\\u{1F609}\\u263A\\u{1F44C}\\u{1F917}\\u{1F49C}\\u{1F614}\\u{1F60E}\\u{1F607}\\u{1F339}\\u{1F926}\\u{1F389}\\u{1F49E}\\u270C\\u2728\\u{1F937}\\u{1F631}\\u{1F60C}\\u{1F338}\\u{1F64C}\\u{1F60B}\\u{1F497}\\u{1F49A}\\u{1F60F}\\u{1F49B}\\u{1F642}\\u{1F493}\\u{1F929}\\u{1F604}\\u{1F600}\\u{1F5A4}\\u{1F603}\\u{1F4AF}\\u{1F648}\\u{1F447}\\u{1F3B6}\\u{1F612}\\u{1F92D}\\u2763\\u{1F61C}\\u{1F48B}\\u{1F440}\\u{1F62A}\\u{1F611}\\u{1F4A5}\\u{1F64B}\\u{1F61E}\\u{1F629}\\u{1F621}\\u{1F92A}\\u{1F44A}\\u{1F973}\\u{1F625}\\u{1F924}\\u{1F449}\\u{1F483}\\u{1F633}\\u270B\\u{1F61A}\\u{1F61D}\\u{1F634}\\u{1F31F}\\u{1F62C}\\u{1F643}\\u{1F340}\\u{1F337}\\u{1F63B}\\u{1F613}\\u2B50\\u2705\\u{1F97A}\\u{1F308}\\u{1F608}\\u{1F918}\\u{1F4A6}\\u2714\\u{1F623}\\u{1F3C3}\\u{1F490}\\u2639\\u{1F38A}\\u{1F498}\\u{1F620}\\u261D\\u{1F615}\\u{1F33A}\\u{1F382}\\u{1F33B}\\u{1F610}\\u{1F595}\\u{1F49D}\\u{1F64A}\\u{1F639}\\u{1F5E3}\\u{1F4AB}\\u{1F480}\\u{1F451}\\u{1F3B5}\\u{1F91E}\\u{1F61B}\\u{1F534}\\u{1F624}\\u{1F33C}\\u{1F62B}\\u26BD\\u{1F919}\\u2615\\u{1F3C6}\\u{1F92B}\\u{1F448}\\u{1F62E}\\u{1F646}\\u{1F37B}\\u{1F343}\\u{1F436}\\u{1F481}\\u{1F632}\\u{1F33F}\\u{1F9E1}\\u{1F381}\\u26A1\\u{1F31E}\\u{1F388}\\u274C\\u270A\\u{1F44B}\\u{1F630}\\u{1F928}\\u{1F636}\\u{1F91D}\\u{1F6B6}\\u{1F4B0}\\u{1F353}\\u{1F4A2}\\u{1F91F}\\u{1F641}\\u{1F6A8}\\u{1F4A8}\\u{1F92C}\\u2708\\u{1F380}\\u{1F37A}\\u{1F913}\\u{1F619}\\u{1F49F}\\u{1F331}\\u{1F616}\\u{1F476}\\u{1F974}\\u25B6\\u27A1\\u2753\\u{1F48E}\\u{1F4B8}\\u2B07\\u{1F628}\\u{1F31A}\\u{1F98B}\\u{1F637}\\u{1F57A}\\u26A0\\u{1F645}\\u{1F61F}\\u{1F635}\\u{1F44E}\\u{1F932}\\u{1F920}\\u{1F927}\\u{1F4CC}\\u{1F535}\\u{1F485}\\u{1F9D0}\\u{1F43E}\\u{1F352}\\u{1F617}\\u{1F911}\\u{1F30A}\\u{1F92F}\\u{1F437}\\u260E\\u{1F4A7}\\u{1F62F}\\u{1F486}\\u{1F446}\\u{1F3A4}\\u{1F647}\\u{1F351}\\u2744\\u{1F334}\\u{1F4A3}\\u{1F438}\\u{1F48C}\\u{1F4CD}\\u{1F940}\\u{1F922}\\u{1F445}\\u{1F4A1}\\u{1F4A9}\\u{1F450}\\u{1F4F8}\\u{1F47B}\\u{1F910}\\u{1F92E}\\u{1F3BC}\\u{1F975}\\u{1F6A9}\\u{1F34E}\\u{1F34A}\\u{1F47C}\\u{1F48D}\\u{1F4E3}\\u{1F942}\"),Hr=ni.reduce((r,e,t)=>(r[t]=e,r),[]),Yr=ni.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Jr(r){return r.reduce((e,t)=>(e+=Hr[t],e),\"\")}function Xr(r){const e=[];for(const t of r){const i=Yr[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const Zr=Ee({prefix:\"\\u{1F680}\",name:\"base256emoji\",encode:Jr,decode:Xr});var Qr=Object.freeze({__proto__:null,base256emoji:Zr}),en=ai,oi=128,tn=127,sn=~tn,rn=Math.pow(2,31);function ai(r,e,t){e=e||[],t=t||0;for(var i=t;r>=rn;)e[t++]=r&255|oi,r/=128;for(;r&sn;)e[t++]=r&255|oi,r>>>=7;return e[t]=r|0,ai.bytes=t-i+1,e}var nn=Me,on=128,ci=127;function Me(r,i){var t=0,i=i||0,s=0,n=i,o,a=r.length;do{if(n>=a)throw Me.bytes=0,new RangeError(\"Could not decode varint\");o=r[n++],t+=s<28?(o&ci)<=on);return Me.bytes=n-i,t}var an=Math.pow(2,7),cn=Math.pow(2,14),hn=Math.pow(2,21),ln=Math.pow(2,28),un=Math.pow(2,35),dn=Math.pow(2,42),gn=Math.pow(2,49),pn=Math.pow(2,56),yn=Math.pow(2,63),bn=function(r){return r(hi.encode(r,e,t),e),ui=r=>hi.encodingLength(r),Ke=(r,e)=>{const t=e.byteLength,i=ui(r),s=i+ui(t),n=new Uint8Array(s+t);return li(r,n,0),li(t,n,i),n.set(e,s),new fn(r,t,e,n)};class fn{constructor(e,t,i,s){this.code=e,this.size=t,this.digest=i,this.bytes=s}}const di=({name:r,code:e,encode:t})=>new Dn(r,e,t);class Dn{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?Ke(this.code,t):t.then(i=>Ke(this.code,i))}else throw Error(\"Unknown type, must be binary type\")}}const gi=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),vn=di({name:\"sha2-256\",code:18,encode:gi(\"SHA-256\")}),wn=di({name:\"sha2-512\",code:19,encode:gi(\"SHA-512\")});var _n=Object.freeze({__proto__:null,sha256:vn,sha512:wn});const pi=0,En=\"identity\",yi=si,In=r=>Ke(pi,yi(r)),Tn={code:pi,name:En,encode:yi,digest:In};var Cn=Object.freeze({__proto__:null,identity:Tn});new TextEncoder,new TextDecoder;const bi={...mr,...Dr,...wr,...Er,...Cr,...Lr,...Ur,...Kr,...Wr,...Qr};({..._n,...Cn});function mi(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Pn(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?mi(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function fi(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const Di=fi(\"utf8\",\"u\",r=>\"u\"+new TextDecoder(\"utf8\").decode(r),r=>new TextEncoder().encode(r.substring(1))),Be=fi(\"ascii\",\"a\",r=>{let e=\"a\";for(let t=0;t{r=r.substring(1);const e=Pn(r.length);for(let t=0;te in r?Rn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,W=(r,e,t)=>An(r,typeof e!=\"symbol\"?e+\"\":e,t);class vi{constructor(e,t){this.core=e,this.logger=t,W(this,\"keychain\",new Map),W(this,\"name\",Pt),W(this,\"version\",St),W(this,\"initialized\",!1),W(this,\"storagePrefix\",B),W(this,\"init\",async()=>{if(!this.initialized){const i=await this.getKeyChain();typeof i<\"u\"&&(this.keychain=i),this.initialized=!0}}),W(this,\"has\",i=>(this.isInitialized(),this.keychain.has(i))),W(this,\"set\",async(i,s)=>{this.isInitialized(),this.keychain.set(i,s),await this.persist()}),W(this,\"get\",i=>{this.isInitialized();const s=this.keychain.get(i);if(typeof s>\"u\"){const{message:n}=m(\"NO_MATCHING_KEY\",`${this.name}: ${i}`);throw new Error(n)}return s}),W(this,\"del\",async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()}),this.core=e,this.logger=N(t,this.name)}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Oe(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<\"u\"?Re(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var xn=Object.defineProperty,Nn=(r,e,t)=>e in r?xn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,S=(r,e,t)=>Nn(r,typeof e!=\"symbol\"?e+\"\":e,t);class wi{constructor(e,t,i){this.core=e,this.logger=t,S(this,\"name\",Tt),S(this,\"keychain\"),S(this,\"randomSessionIdentifier\",Ae()),S(this,\"initialized\",!1),S(this,\"init\",async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)}),S(this,\"hasKeys\",s=>(this.isInitialized(),this.keychain.has(s))),S(this,\"getClientId\",async()=>{this.isInitialized();const s=await this.getClientSeed(),n=De.generateKeyPair(s);return De.encodeIss(n.publicKey)}),S(this,\"generateKeyPair\",()=>{this.isInitialized();const s=us();return this.setPrivateKey(s.publicKey,s.privateKey)}),S(this,\"signJWT\",async s=>{this.isInitialized();const n=await this.getClientSeed(),o=De.generateKeyPair(n),a=this.randomSessionIdentifier,c=Ct;return await De.signJWT(a,s,c,o)}),S(this,\"generateSharedKey\",(s,n,o)=>{this.isInitialized();const a=this.getPrivateKey(s),c=ds(a,n);return this.setSymKey(c,o)}),S(this,\"setSymKey\",async(s,n)=>{this.isInitialized();const o=n||gs(s);return await this.keychain.set(o,s),o}),S(this,\"deleteKeyPair\",async s=>{this.isInitialized(),await this.keychain.del(s)}),S(this,\"deleteSymKey\",async s=>{this.isInitialized(),await this.keychain.del(s)}),S(this,\"encode\",async(s,n,o)=>{this.isInitialized();const a=ps(o),c=ls(n);if(nt(a))return ys(c,o?.encoding);if(ot(a)){const g=a.senderPublicKey,_=a.receiverPublicKey;s=await this.generateSharedKey(g,_)}const h=this.getSymKey(s),{type:l,senderPublicKey:d}=a;return bs({type:l,symKey:h,message:c,senderPublicKey:d,encoding:o?.encoding})}),S(this,\"decode\",async(s,n,o)=>{this.isInitialized();const a=ms(n,o);if(nt(a)){const c=fs(n,o?.encoding);return st(c)}if(ot(a)){const c=a.receiverPublicKey,h=a.senderPublicKey;s=await this.generateSharedKey(c,h)}try{const c=this.getSymKey(s),h=Ds({symKey:c,encoded:n,encoding:o?.encoding});return st(h)}catch(c){this.logger.error(`Failed to decode message from topic: '${s}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}}),S(this,\"getPayloadType\",(s,n=ct)=>{const o=at({encoded:s,encoding:n});return vs(o.type)}),S(this,\"getPayloadSenderPublicKey\",(s,n=ct)=>{const o=at({encoded:s,encoding:n});return o.senderPublicKey?Ms(o.senderPublicKey,ws):void 0}),this.core=e,this.logger=N(t,this.name),this.keychain=i||new vi(this.core,this.logger)}get context(){return U(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e=\"\";try{e=this.keychain.get(ke)}catch{e=Ae(),await this.keychain.set(ke,e)}return On(e,\"base16\")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var $n=Object.defineProperty,zn=Object.defineProperties,Ln=Object.getOwnPropertyDescriptors,_i=Object.getOwnPropertySymbols,kn=Object.prototype.hasOwnProperty,jn=Object.prototype.propertyIsEnumerable,Ve=(r,e,t)=>e in r?$n(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Un=(r,e)=>{for(var t in e||(e={}))kn.call(e,t)&&Ve(r,t,e[t]);if(_i)for(var t of _i(e))jn.call(e,t)&&Ve(r,t,e[t]);return r},Fn=(r,e)=>zn(r,Ln(e)),k=(r,e,t)=>Ve(r,typeof e!=\"symbol\"?e+\"\":e,t);class Ei extends Zi{constructor(e,t){super(e,t),this.logger=e,this.core=t,k(this,\"messages\",new Map),k(this,\"messagesWithoutClientAck\",new Map),k(this,\"name\",Ot),k(this,\"version\",Rt),k(this,\"initialized\",!1),k(this,\"storagePrefix\",B),k(this,\"init\",async()=>{if(!this.initialized){this.logger.trace(\"Initialized\");try{const i=await this.getRelayerMessages();typeof i<\"u\"&&(this.messages=i);const s=await this.getRelayerMessagesWithoutClientAck();typeof s<\"u\"&&(this.messagesWithoutClientAck=s),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:\"method\",method:\"restore\",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}}),k(this,\"set\",async(i,s,n)=>{this.isInitialized();const o=ve(s);let a=this.messages.get(i);if(typeof a>\"u\"&&(a={}),typeof a[o]<\"u\")return o;if(a[o]=s,this.messages.set(i,a),n===le.inbound){const c=this.messagesWithoutClientAck.get(i)||{};this.messagesWithoutClientAck.set(i,Fn(Un({},c),{[o]:s}))}return await this.persist(),o}),k(this,\"get\",i=>{this.isInitialized();let s=this.messages.get(i);return typeof s>\"u\"&&(s={}),s}),k(this,\"getWithoutAck\",i=>{this.isInitialized();const s={};for(const n of i){const o=this.messagesWithoutClientAck.get(n)||{};s[n]=Object.values(o)}return s}),k(this,\"has\",(i,s)=>{this.isInitialized();const n=this.get(i),o=ve(s);return typeof n[o]<\"u\"}),k(this,\"ack\",async(i,s)=>{this.isInitialized();const n=this.messagesWithoutClientAck.get(i);if(typeof n>\"u\")return;const o=ve(s);delete n[o],Object.keys(n).length===0?this.messagesWithoutClientAck.delete(i):this.messagesWithoutClientAck.set(i,n),await this.persist()}),k(this,\"del\",async i=>{this.isInitialized(),this.messages.delete(i),this.messagesWithoutClientAck.delete(i),await this.persist()}),this.logger=N(e,this.name),this.core=t}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name+\"_withoutClientAck\"}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Oe(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Oe(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<\"u\"?Re(e):void 0}async getRelayerMessagesWithoutClientAck(){const e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<\"u\"?Re(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var Mn=Object.defineProperty,Kn=Object.defineProperties,Bn=Object.getOwnPropertyDescriptors,Ii=Object.getOwnPropertySymbols,Vn=Object.prototype.hasOwnProperty,qn=Object.prototype.propertyIsEnumerable,qe=(r,e,t)=>e in r?Mn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ie=(r,e)=>{for(var t in e||(e={}))Vn.call(e,t)&&qe(r,t,e[t]);if(Ii)for(var t of Ii(e))qn.call(e,t)&&qe(r,t,e[t]);return r},Ge=(r,e)=>Kn(r,Bn(e)),V=(r,e,t)=>qe(r,typeof e!=\"symbol\"?e+\"\":e,t);class Gn extends Qi{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,V(this,\"events\",new ee),V(this,\"name\",At),V(this,\"queue\",new Map),V(this,\"publishTimeout\",R(tt)),V(this,\"initialPublishTimeout\",R(Z*15)),V(this,\"needsTransportRestart\",!1),V(this,\"publish\",async(i,s,n)=>{var o;this.logger.debug(\"Publishing Payload\"),this.logger.trace({type:\"method\",method:\"publish\",params:{topic:i,message:s,opts:n}});const a=n?.ttl||je,c=we(n),h=n?.prompt||!1,l=n?.tag||0,d=n?.id||mt().toString(),g={topic:i,message:s,opts:{ttl:a,relay:c,prompt:h,tag:l,id:d,attestation:n?.attestation,tvf:n?.tvf}},_=`Failed to publish payload, please try again. id:${d} tag:${l}`;try{const u=new Promise(async b=>{const x=({id:D})=>{g.opts.id===D&&(this.removeRequestFromQueue(D),this.relayer.events.removeListener(C.publish,x),b(g))};this.relayer.events.on(C.publish,x);const I=X(new Promise((D,j)=>{this.rpcPublish({topic:i,message:s,ttl:a,prompt:h,tag:l,id:d,attestation:n?.attestation,tvf:n?.tvf}).then(D).catch(T=>{this.logger.warn(T,T?.message),j(T)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${d} tag:${l}`);try{await I,this.events.removeListener(C.publish,x)}catch(D){this.queue.set(d,Ge(Ie({},g),{attempt:1})),this.logger.warn(D,D?.message)}});this.logger.trace({type:\"method\",method:\"publish\",params:{id:d,topic:i,message:s,opts:n}}),await X(u,this.publishTimeout,_)}catch(u){if(this.logger.debug(\"Failed to Publish Payload\"),this.logger.error(u),(o=n?.internal)!=null&&o.throwOnFailedPublish)throw u}finally{this.queue.delete(d)}}),V(this,\"on\",(i,s)=>{this.events.on(i,s)}),V(this,\"once\",(i,s)=>{this.events.once(i,s)}),V(this,\"off\",(i,s)=>{this.events.off(i,s)}),V(this,\"removeListener\",(i,s)=>{this.events.removeListener(i,s)}),this.relayer=e,this.logger=N(t,this.name),this.registerEventListeners()}get context(){return U(this.logger)}async rpcPublish(e){var t,i,s,n;const{topic:o,message:a,ttl:c=je,prompt:h,tag:l,id:d,attestation:g,tvf:_}=e,u={method:oe(we().protocol).publish,params:Ie({topic:o,message:a,ttl:c,prompt:h,tag:l,attestation:g},_),id:d};xe((t=u.params)==null?void 0:t.prompt)&&((i=u.params)==null||delete i.prompt),xe((s=u.params)==null?void 0:s.tag)&&((n=u.params)==null||delete n.tag),this.logger.debug(\"Outgoing Relay Payload\"),this.logger.trace({type:\"message\",direction:\"outgoing\",request:u});const b=await this.relayer.request(u);return this.relayer.events.emit(C.publish,e),this.logger.debug(\"Successfully Published Payload\"),b}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{const i=e.attempt+1;this.queue.set(t,Ge(Ie({},e),{attempt:i}));const{topic:s,message:n,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${i}`),await this.rpcPublish(Ge(Ie({},e),{topic:s,message:n,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a,tvf:o.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(te.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(C.connection_stalled);return}this.checkQueue()}),this.relayer.on(C.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}var Wn=Object.defineProperty,Hn=(r,e,t)=>e in r?Wn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ne=(r,e,t)=>Hn(r,typeof e!=\"symbol\"?e+\"\":e,t);class Yn{constructor(){ne(this,\"map\",new Map),ne(this,\"set\",(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])}),ne(this,\"get\",e=>this.map.get(e)||[]),ne(this,\"exists\",(e,t)=>this.get(e).includes(t)),ne(this,\"delete\",(e,t)=>{if(typeof t>\"u\"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const s=i.filter(n=>n!==t);if(!s.length){this.map.delete(e);return}this.map.set(e,s)}),ne(this,\"clear\",()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}}var Jn=Object.defineProperty,Xn=Object.defineProperties,Zn=Object.getOwnPropertyDescriptors,Ti=Object.getOwnPropertySymbols,Qn=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable,We=(r,e,t)=>e in r?Jn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ge=(r,e)=>{for(var t in e||(e={}))Qn.call(e,t)&&We(r,t,e[t]);if(Ti)for(var t of Ti(e))eo.call(e,t)&&We(r,t,e[t]);return r},He=(r,e)=>Xn(r,Zn(e)),f=(r,e,t)=>We(r,typeof e!=\"symbol\"?e+\"\":e,t);class Ci extends es{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,f(this,\"subscriptions\",new Map),f(this,\"topicMap\",new Yn),f(this,\"events\",new ee),f(this,\"name\",Ut),f(this,\"version\",Ft),f(this,\"pending\",new Map),f(this,\"cached\",[]),f(this,\"initialized\",!1),f(this,\"storagePrefix\",B),f(this,\"subscribeTimeout\",R(tt)),f(this,\"initialSubscribeTimeout\",R(Z*15)),f(this,\"clientId\"),f(this,\"batchSubscribeTopicsLimit\",500),f(this,\"init\",async()=>{this.initialized||(this.logger.trace(\"Initialized\"),this.registerEventListeners(),await this.restore()),this.initialized=!0}),f(this,\"subscribe\",async(i,s)=>{this.isInitialized(),this.logger.debug(\"Subscribing Topic\"),this.logger.trace({type:\"method\",method:\"subscribe\",params:{topic:i,opts:s}});try{const n=we(s),o={topic:i,relay:n,transportType:s?.transportType};this.pending.set(i,o);const a=await this.rpcSubscribe(i,n,s);return typeof a==\"string\"&&(this.onSubscribe(a,o),this.logger.debug(\"Successfully Subscribed Topic\"),this.logger.trace({type:\"method\",method:\"subscribe\",params:{topic:i,opts:s}})),a}catch(n){throw this.logger.debug(\"Failed to Subscribe Topic\"),this.logger.error(n),n}}),f(this,\"unsubscribe\",async(i,s)=>{this.isInitialized(),typeof s?.id<\"u\"?await this.unsubscribeById(i,s.id,s):await this.unsubscribeByTopic(i,s)}),f(this,\"isSubscribed\",i=>new Promise(s=>{s(this.topicMap.topics.includes(i))})),f(this,\"isKnownTopic\",i=>new Promise(s=>{s(this.topicMap.topics.includes(i)||this.pending.has(i)||this.cached.some(n=>n.topic===i))})),f(this,\"on\",(i,s)=>{this.events.on(i,s)}),f(this,\"once\",(i,s)=>{this.events.once(i,s)}),f(this,\"off\",(i,s)=>{this.events.off(i,s)}),f(this,\"removeListener\",(i,s)=>{this.events.removeListener(i,s)}),f(this,\"start\",async()=>{await this.onConnect()}),f(this,\"stop\",async()=>{await this.onDisconnect()}),f(this,\"restart\",async()=>{await this.restore(),await this.onRestart()}),f(this,\"checkPending\",async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const i=[];this.pending.forEach(s=>{i.push(s)}),await this.batchSubscribe(i)}),f(this,\"registerEventListeners\",()=>{this.relayer.core.heartbeat.on(te.pulse,async()=>{await this.checkPending()}),this.events.on($.created,async i=>{const s=$.created;this.logger.info(`Emitting ${s}`),this.logger.debug({type:\"event\",event:s,data:i}),await this.persist()}),this.events.on($.deleted,async i=>{const s=$.deleted;this.logger.info(`Emitting ${s}`),this.logger.debug({type:\"event\",event:s,data:i}),await this.persist()})}),this.relayer=e,this.logger=N(t,this.name),this.clientId=\"\"}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+\"//\"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.values.length>0&&(this.cached=this.values),this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async s=>await this.unsubscribeById(e,s,t)))}async unsubscribeById(e,t,i){this.logger.debug(\"Unsubscribing Topic\"),this.logger.trace({type:\"method\",method:\"unsubscribe\",params:{topic:e,id:t,opts:i}});try{const s=we(i);await this.restartToComplete({topic:e,id:t,relay:s}),await this.rpcUnsubscribe(e,t,s);const n=ae(\"USER_DISCONNECTED\",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,n),this.logger.debug(\"Successfully Unsubscribed Topic\"),this.logger.trace({type:\"method\",method:\"unsubscribe\",params:{topic:e,id:t,opts:i}})}catch(s){throw this.logger.debug(\"Failed to Unsubscribe Topic\"),this.logger.error(s),s}}async rpcSubscribe(e,t,i){var s;(!i||i?.transportType===Q.relay)&&await this.restartToComplete({topic:e,id:e,relay:t});const n={method:oe(t.protocol).subscribe,params:{topic:e}};this.logger.debug(\"Outgoing Relay Payload\"),this.logger.trace({type:\"payload\",direction:\"outgoing\",request:n});const o=(s=i?.internal)==null?void 0:s.throwOnFailedPublish;try{const a=await this.getSubscriptionId(e);if(i?.transportType===Q.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(n).catch(l=>this.logger.warn(l))},R(Z)),a;const c=new Promise(async l=>{const d=g=>{g.topic===e&&(this.events.removeListener($.created,d),l(g.id))};this.events.on($.created,d);try{const g=await X(new Promise((_,u)=>{this.relayer.request(n).catch(b=>{this.logger.warn(b,b?.message),u(b)}).then(_)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener($.created,d),l(g)}catch{}}),h=await X(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!h&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return h?a:null}catch(a){if(this.logger.debug(\"Outgoing Relay Subscribe Payload stalled\"),this.relayer.events.emit(C.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:oe(t.protocol).batchSubscribe,params:{topics:e.map(s=>s.topic)}};this.logger.debug(\"Outgoing Relay Payload\"),this.logger.trace({type:\"payload\",direction:\"outgoing\",request:i});try{await await X(new Promise(s=>{this.relayer.request(i).catch(n=>this.logger.warn(n)).then(s)}),this.subscribeTimeout,\"rpcBatchSubscribe failed, please try again\")}catch{this.relayer.events.emit(C.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,i={method:oe(t.protocol).batchFetchMessages,params:{topics:e.map(n=>n.topic)}};this.logger.debug(\"Outgoing Relay Payload\"),this.logger.trace({type:\"payload\",direction:\"outgoing\",request:i});let s;try{s=await await X(new Promise((n,o)=>{this.relayer.request(i).catch(a=>{this.logger.warn(a),o(a)}).then(n)}),this.subscribeTimeout,\"rpcBatchFetchMessages failed, please try again\")}catch{this.relayer.events.emit(C.connection_stalled)}return s}rpcUnsubscribe(e,t,i){const s={method:oe(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug(\"Outgoing Relay Payload\"),this.logger.trace({type:\"payload\",direction:\"outgoing\",request:s}),this.relayer.request(s)}onSubscribe(e,t){this.setSubscription(e,He(ge({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,ge({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug(\"Setting subscription\"),this.logger.trace({type:\"method\",method:\"setSubscription\",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,ge({},t)),this.topicMap.set(t.topic,e),this.events.emit($.created,t)}getSubscription(e){this.logger.debug(\"Getting subscription\"),this.logger.trace({type:\"method\",method:\"getSubscription\",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=m(\"NO_MATCHING_KEY\",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug(\"Deleting subscription\"),this.logger.trace({type:\"method\",method:\"deleteSubscription\",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit($.deleted,He(ge({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit($.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i\"u\"||!e.length)return;if(this.subscriptions.size){const{message:t}=m(\"RESTORE_WILL_OVERRIDE\",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:\"method\",method:\"restore\",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async t=>He(ge({},t),{id:await this.getSubscriptionId(t.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await _s(R(Z)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||(this.clientId=await this.relayer.core.crypto.getClientId()),this.clientId}async getSubscriptionId(e){return ve(e+await this.getClientId())}}var to=Object.defineProperty,Pi=Object.getOwnPropertySymbols,io=Object.prototype.hasOwnProperty,so=Object.prototype.propertyIsEnumerable,Ye=(r,e,t)=>e in r?to(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Si=(r,e)=>{for(var t in e||(e={}))io.call(e,t)&&Ye(r,t,e[t]);if(Pi)for(var t of Pi(e))so.call(e,t)&&Ye(r,t,e[t]);return r},y=(r,e,t)=>Ye(r,typeof e!=\"symbol\"?e+\"\":e,t);class Oi extends ts{constructor(e){super(e),y(this,\"protocol\",\"wc\"),y(this,\"version\",2),y(this,\"core\"),y(this,\"logger\"),y(this,\"events\",new ee),y(this,\"provider\"),y(this,\"messages\"),y(this,\"subscriber\"),y(this,\"publisher\"),y(this,\"name\",$t),y(this,\"transportExplicitlyClosed\",!1),y(this,\"initialized\",!1),y(this,\"connectionAttemptInProgress\",!1),y(this,\"relayUrl\"),y(this,\"projectId\"),y(this,\"packageName\"),y(this,\"bundleId\"),y(this,\"hasExperiencedNetworkDisruption\",!1),y(this,\"pingTimeout\"),y(this,\"heartBeatTimeout\",R(Se+Pe)),y(this,\"reconnectTimeout\"),y(this,\"connectPromise\"),y(this,\"reconnectInProgress\",!1),y(this,\"requestsInFlight\",[]),y(this,\"connectTimeout\",R(Z*15)),y(this,\"request\",async t=>{var i,s;this.logger.debug(\"Publishing Request Payload\");const n=t.id||mt().toString();await this.toEstablishConnection();try{this.logger.trace({id:n,method:t.method,topic:(i=t.params)==null?void 0:i.topic},\"relayer.request - publishing...\");const o=`${n}:${((s=t.params)==null?void 0:s.tag)||\"\"}`;this.requestsInFlight.push(o);const a=await this.provider.request(t);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${n}`),o}}),y(this,\"resetPingTimeout\",()=>{ut()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,i,s,n;try{this.logger.debug({},\"pingTimeout: Connection stalled, terminating...\"),(n=(s=(i=(t=this.provider)==null?void 0:t.connection)==null?void 0:i.socket)==null?void 0:s.terminate)==null||n.call(s)}catch(o){this.logger.warn(o,o?.message)}},this.heartBeatTimeout))}),y(this,\"onPayloadHandler\",t=>{this.onProviderPayload(t),this.resetPingTimeout()}),y(this,\"onConnectHandler\",()=>{this.logger.warn({},\"Relayer connected \\u{1F6DC}\"),this.startPingTimeout(),this.events.emit(C.connect)}),y(this,\"onDisconnectHandler\",()=>{this.logger.warn({},\"Relayer disconnected \\u{1F6D1}\"),this.requestsInFlight=[],this.onProviderDisconnect()}),y(this,\"onProviderErrorHandler\",t=>{this.logger.fatal(`Fatal socket error: ${t.message}`),this.events.emit(C.error,t),this.logger.fatal(\"Fatal socket error received, closing transport\"),this.transportClose()}),y(this,\"registerProviderListeners\",()=>{this.provider.on(L.payload,this.onPayloadHandler),this.provider.on(L.connect,this.onConnectHandler),this.provider.on(L.disconnect,this.onDisconnectHandler),this.provider.on(L.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<\"u\"&&typeof e.logger!=\"string\"?N(e.logger,this.name):Ji(et({level:e.logger||Nt})),this.messages=new Ei(this.logger,e.core),this.subscriber=new Ci(this,this.logger),this.publisher=new Gn(this,this.logger),this.relayUrl=e?.relayUrl||Ue,this.projectId=e.projectId,Es()?this.packageName=ht():Is()&&(this.bundleId=ht()),this.provider={}}async init(){this.logger.trace(\"Initialized\"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.transportOpen().catch(e=>this.logger.warn(e,e?.message))}get context(){return U(this.logger)}get connected(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===1||!1}get connecting(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===0||this.connectPromise!==void 0||!1}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:Q.relay},le.outbound)}async subscribe(e,t){var i,s,n;this.isInitialized(),(!(t!=null&&t.transportType)||t?.transportType===\"relay\")&&await this.toEstablishConnection();const o=typeof((i=t?.internal)==null?void 0:i.throwOnFailedPublish)>\"u\"?!0:(s=t?.internal)==null?void 0:s.throwOnFailedPublish;let a=((n=this.subscriber.topicMap.get(e))==null?void 0:n[0])||\"\",c;const h=l=>{l.topic===e&&(this.subscriber.off($.created,h),c())};return await Promise.all([new Promise(l=>{c=l,this.subscriber.on($.created,h)}),new Promise(async(l,d)=>{a=await this.subscriber.subscribe(e,Si({internal:{throwOnFailedPublish:o}},t)).catch(g=>{o&&d(g)})||a,l()})]),a}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await X(this.provider.disconnect(),2e3,\"provider.disconnect()\").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.info(\"Starting WS connection skipped because the client has no topics to work with.\");return}if(this.connectPromise?(this.logger.debug({},\"Waiting for existing connection attempt to resolve...\"),await this.connectPromise,this.logger.debug({},\"Existing connection attempt resolved\")):(this.connectPromise=new Promise(async(t,i)=>{await this.connect(e).then(t).catch(i).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},\"Restarting transport...\"),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await lt())throw new Error(\"No internet connection detected. Please restart your network and try again.\")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace(\"Batch message events is empty. Ignoring...\");return}const t=e.sort((i,s)=>i.publishedAt-s.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(const i of t)try{await this.onMessageEvent(i)}catch(s){this.logger.warn(s,\"Error while processing batch message event: \"+s?.message)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:i}=e;if(!t.sessionExists){const s=ce(fe),n={topic:i,expiry:s,relay:{protocol:\"irn\"},active:!1};await this.core.pairing.pairings.set(i,n)}this.events.emit(C.message,e),await this.recordMessageEvent(e,le.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let t=1;for(;t<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(i,s)=>{const n=()=>{s(new Error(\"Connection interrupted while trying to connect\"))};this.provider.once(L.disconnect,n),await X(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{s(o)}).finally(()=>{this.provider.off(L.disconnect,n),clearTimeout(this.reconnectTimeout)}),await new Promise(async(o,a)=>{const c=()=>{s(new Error(\"Connection interrupted while trying to subscribe\"))};this.provider.once(L.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(L.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,i()})}catch(i){await this.subscriber.stop();const s=i;this.logger.warn({},s.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${t}`);break}await new Promise(i=>setTimeout(i,R(t*1))),t++}}startPingTimeout(){var e,t,i,s,n;if(ut())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((n=(s=(i=this.provider)==null?void 0:i.connection)==null?void 0:s.socket)==null||n.on(\"ping\",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new Ks(new qs(Ts({sdkVersion:_e,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,t){const{topic:i,message:s}=e;await this.messages.set(i,s,t)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isKnownTopic(t))return this.logger.warn(`Ignoring message for unknown topic ${t}`),!0;const s=this.messages.has(t,i);return s&&this.logger.warn(`Ignoring duplicate message: ${i}`),s}async onProviderPayload(e){if(this.logger.debug(\"Incoming Relay Payload\"),this.logger.trace({type:\"payload\",direction:\"incoming\",payload:e}),ft(e)){if(!e.method.endsWith(zt))return;const t=e.params,{topic:i,message:s,publishedAt:n,attestation:o}=t.data,a={topic:i,message:s,publishedAt:n,transportType:Q.relay,attestation:o};this.logger.debug(\"Emitting Relayer Payload\"),this.logger.trace(Si({type:\"event\",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else Dt(e)&&this.events.emit(C.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,le.inbound),this.events.emit(C.message,e))}async acknowledgePayload(e){const t=vt(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(L.payload,this.onPayloadHandler),this.provider.off(L.connect,this.onConnectHandler),this.provider.off(L.disconnect,this.onDisconnectHandler),this.provider.off(L.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await lt();Cs(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(i=>this.logger.error(i,i?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))}),this.core.heartbeat.on(te.pulse,async()=>{if(!this.transportExplicitlyClosed&&!this.connected&&Ps())try{await this.confirmOnlineStateOrThrow(),await this.transportOpen()}catch(t){this.logger.warn(t,t?.message)}})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(C.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e?.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},R(Lt)))))}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}async toEstablishConnection(){if(await this.confirmOnlineStateOrThrow(),!this.connected){if(this.connectPromise){await this.connectPromise;return}await this.connect()}}}function ro(r,e){return r===e||Number.isNaN(r)&&Number.isNaN(e)}function Ri(r){return Object.getOwnPropertySymbols(r).filter(e=>Object.prototype.propertyIsEnumerable.call(r,e))}function Ai(r){return r==null?r===void 0?\"[object Undefined]\":\"[object Null]\":Object.prototype.toString.call(r)}const no=\"[object RegExp]\",oo=\"[object String]\",ao=\"[object Number]\",co=\"[object Boolean]\",xi=\"[object Arguments]\",ho=\"[object Symbol]\",lo=\"[object Date]\",uo=\"[object Map]\",go=\"[object Set]\",po=\"[object Array]\",yo=\"[object Function]\",bo=\"[object ArrayBuffer]\",Je=\"[object Object]\",mo=\"[object Error]\",fo=\"[object DataView]\",Do=\"[object Uint8Array]\",vo=\"[object Uint8ClampedArray]\",wo=\"[object Uint16Array]\",_o=\"[object Uint32Array]\",Eo=\"[object BigUint64Array]\",Io=\"[object Int8Array]\",To=\"[object Int16Array]\",Co=\"[object Int32Array]\",Po=\"[object BigInt64Array]\",So=\"[object Float32Array]\",Oo=\"[object Float64Array]\";function Ro(){}function Ni(r){if(!r||typeof r!=\"object\")return!1;const e=Object.getPrototypeOf(r);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(r)===\"[object Object]\":!1}function Ao(r,e,t){return pe(r,e,void 0,void 0,void 0,void 0,t)}function pe(r,e,t,i,s,n,o){const a=o(r,e,t,i,s,n);if(a!==void 0)return a;if(typeof r==typeof e)switch(typeof r){case\"bigint\":case\"string\":case\"boolean\":case\"symbol\":case\"undefined\":return r===e;case\"number\":return r===e||Object.is(r,e);case\"function\":return r===e;case\"object\":return ye(r,e,n,o)}return ye(r,e,n,o)}function ye(r,e,t,i){if(Object.is(r,e))return!0;let s=Ai(r),n=Ai(e);if(s===xi&&(s=Je),n===xi&&(n=Je),s!==n)return!1;switch(s){case oo:return r.toString()===e.toString();case ao:{const c=r.valueOf(),h=e.valueOf();return ro(c,h)}case co:case lo:case ho:return Object.is(r.valueOf(),e.valueOf());case no:return r.source===e.source&&r.flags===e.flags;case yo:return r===e}t=t??new Map;const o=t.get(r),a=t.get(e);if(o!=null&&a!=null)return o===e;t.set(r,e),t.set(e,r);try{switch(s){case uo:{if(r.size!==e.size)return!1;for(const[c,h]of r.entries())if(!e.has(c)||!pe(h,e.get(c),c,r,e,t,i))return!1;return!0}case go:{if(r.size!==e.size)return!1;const c=Array.from(r.values()),h=Array.from(e.values());for(let l=0;lpe(d,_,void 0,r,e,t,i));if(g===-1)return!1;h.splice(g,1)}return!0}case po:case Do:case vo:case wo:case _o:case Eo:case Io:case To:case Co:case Po:case So:case Oo:{if(typeof Buffer<\"u\"&&Buffer.isBuffer(r)!==Buffer.isBuffer(e)||r.length!==e.length)return!1;for(let c=0;ce in r?No(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,zi=(r,e)=>{for(var t in e||(e={}))$o.call(e,t)&&Xe(r,t,e[t]);if($i)for(var t of $i(e))zo.call(e,t)&&Xe(r,t,e[t]);return r},z=(r,e,t)=>Xe(r,typeof e!=\"symbol\"?e+\"\":e,t);class Li extends is{constructor(e,t,i,s=B,n=void 0){super(e,t,i,s),this.core=e,this.logger=t,this.name=i,z(this,\"map\",new Map),z(this,\"version\",kt),z(this,\"cached\",[]),z(this,\"initialized\",!1),z(this,\"getKey\"),z(this,\"storagePrefix\",B),z(this,\"recentlyDeleted\",[]),z(this,\"recentlyDeletedLimit\",200),z(this,\"init\",async()=>{this.initialized||(this.logger.trace(\"Initialized\"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!xe(o)?this.map.set(this.getKey(o),o):Ss(o)?this.map.set(o.id,o):Os(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)}),z(this,\"set\",async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug(\"Setting value\"),this.logger.trace({type:\"method\",method:\"set\",key:o,value:a}),this.map.set(o,a),await this.persist())}),z(this,\"get\",o=>(this.isInitialized(),this.logger.debug(\"Getting value\"),this.logger.trace({type:\"method\",method:\"get\",key:o}),this.getData(o))),z(this,\"getAll\",o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>xo(a[c],o[c]))):this.values)),z(this,\"update\",async(o,a)=>{this.isInitialized(),this.logger.debug(\"Updating value\"),this.logger.trace({type:\"method\",method:\"update\",key:o,update:a});const c=zi(zi({},this.getData(o)),a);this.map.set(o,c),await this.persist()}),z(this,\"delete\",async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug(\"Deleting value\"),this.logger.trace({type:\"method\",method:\"delete\",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())}),this.logger=N(t,this.name),this.storagePrefix=s,this.getKey=n}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:s}=m(\"MISSING_OR_INVALID\",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(s),new Error(s)}const{message:i}=m(\"NO_MATCHING_KEY\",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>\"u\"||!e.length)return;if(this.map.size){const{message:t}=m(\"RESTORE_WILL_OVERRIDE\",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:\"method\",method:\"restore\",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var Lo=Object.defineProperty,ko=(r,e,t)=>e in r?Lo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,p=(r,e,t)=>ko(r,typeof e!=\"symbol\"?e+\"\":e,t);class ki{constructor(e,t){this.core=e,this.logger=t,p(this,\"name\",Mt),p(this,\"version\",Kt),p(this,\"events\",new Wi),p(this,\"pairings\"),p(this,\"initialized\",!1),p(this,\"storagePrefix\",B),p(this,\"ignoredPayloadTypes\",[As]),p(this,\"registeredMethods\",[]),p(this,\"init\",async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace(\"Initialized\"))}),p(this,\"register\",({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]}),p(this,\"create\",async i=>{this.isInitialized();const s=Ae(),n=await this.core.crypto.setSymKey(s),o=ce(fe),a={protocol:xt},c={topic:n,expiry:o,relay:a,active:!1,methods:i?.methods},h=dt({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:s,relay:a,expiryTimestamp:o,methods:i?.methods});return this.events.emit(re.create,c),this.core.expirer.set(n,o),await this.pairings.set(n,c),await this.core.relayer.subscribe(n,{transportType:i?.transportType}),{topic:n,uri:h}}),p(this,\"pair\",async i=>{this.isInitialized();const s=this.core.eventClient.createEvent({properties:{topic:i?.uri,trace:[G.pairing_started]}});this.isValidPair(i,s);const{topic:n,symKey:o,relay:a,expiryTimestamp:c,methods:h}=gt(i.uri);s.props.properties.topic=n,s.addTrace(G.pairing_uri_validation_success),s.addTrace(G.pairing_uri_not_expired);let l;if(this.pairings.keys.includes(n)){if(l=this.pairings.get(n),s.addTrace(G.existing_pairing),l.active)throw s.setError(Y.active_pairing_already_exists),new Error(`Pairing already exists: ${n}. Please try again with a new connection URI.`);s.addTrace(G.pairing_not_expired)}const d=c||ce(fe),g={topic:n,relay:a,expiry:d,active:!1,methods:h};this.core.expirer.set(n,d),await this.pairings.set(n,g),s.addTrace(G.store_new_pairing),i.activatePairing&&await this.activate({topic:n}),this.events.emit(re.create,g),s.addTrace(G.emit_inactive_pairing),this.core.crypto.keychain.has(n)||await this.core.crypto.setSymKey(o,n),s.addTrace(G.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{s.setError(Y.no_internet_connection)}try{await this.core.relayer.subscribe(n,{relay:a})}catch(_){throw s.setError(Y.subscribe_pairing_topic_failure),_}return s.addTrace(G.subscribe_pairing_topic_success),g}),p(this,\"activate\",async({topic:i})=>{this.isInitialized();const s=ce(fe);this.core.expirer.set(i,s),await this.pairings.update(i,{active:!0,expiry:s})}),p(this,\"ping\",async i=>{this.isInitialized(),await this.isValidPing(i),this.logger.warn(\"ping() is deprecated and will be removed in the next major release.\");const{topic:s}=i;if(this.pairings.keys.includes(s)){const n=await this.sendRequest(s,\"wc_pairingPing\",{}),{done:o,resolve:a,reject:c}=xs();this.events.once(Ne(\"pairing_ping\",n),({error:h})=>{h?c(h):a()}),await o()}}),p(this,\"updateExpiry\",async({topic:i,expiry:s})=>{this.isInitialized(),await this.pairings.update(i,{expiry:s})}),p(this,\"updateMetadata\",async({topic:i,metadata:s})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:s})}),p(this,\"getPairings\",()=>(this.isInitialized(),this.pairings.values)),p(this,\"disconnect\",async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:s}=i;this.pairings.keys.includes(s)&&(await this.sendRequest(s,\"wc_pairingDelete\",ae(\"USER_DISCONNECTED\")),await this.deletePairing(s))}),p(this,\"formatUriFromPairing\",i=>{this.isInitialized();const{topic:s,relay:n,expiry:o,methods:a}=i,c=this.core.crypto.keychain.get(s);return dt({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:c,relay:n,expiryTimestamp:o,methods:a})}),p(this,\"sendRequest\",async(i,s,n)=>{const o=wt(s,n),a=await this.core.crypto.encode(i,o),c=se[s].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,c),o.id}),p(this,\"sendResult\",async(i,s,n)=>{const o=vt(i,n),a=await this.core.crypto.encode(s,o),c=(await this.core.history.get(s,i)).request.method,h=se[c].res;await this.core.relayer.publish(s,a,h),await this.core.history.resolve(o)}),p(this,\"sendError\",async(i,s,n)=>{const o=Bs(i,n),a=await this.core.crypto.encode(s,o),c=(await this.core.history.get(s,i)).request.method,h=se[c]?se[c].res:se.unregistered_method.res;await this.core.relayer.publish(s,a,h),await this.core.history.resolve(o)}),p(this,\"deletePairing\",async(i,s)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,ae(\"USER_DISCONNECTED\")),this.core.crypto.deleteSymKey(i),s?Promise.resolve():this.core.expirer.del(i)])}),p(this,\"cleanup\",async()=>{const i=this.pairings.getAll().filter(s=>pt(s.expiry));await Promise.all(i.map(s=>this.deletePairing(s.topic)))}),p(this,\"onRelayEventRequest\",async i=>{const{topic:s,payload:n}=i;switch(n.method){case\"wc_pairingPing\":return await this.onPairingPingRequest(s,n);case\"wc_pairingDelete\":return await this.onPairingDeleteRequest(s,n);default:return await this.onUnknownRpcMethodRequest(s,n)}}),p(this,\"onRelayEventResponse\",async i=>{const{topic:s,payload:n}=i,o=(await this.core.history.get(s,n.id)).request.method;switch(o){case\"wc_pairingPing\":return this.onPairingPingResponse(s,n);default:return this.onUnknownRpcMethodResponse(o)}}),p(this,\"onPairingPingRequest\",async(i,s)=>{const{id:n}=s;try{this.isValidPing({topic:i}),await this.sendResult(n,i,!0),this.events.emit(re.ping,{id:n,topic:i})}catch(o){await this.sendError(n,i,o),this.logger.error(o)}}),p(this,\"onPairingPingResponse\",(i,s)=>{const{id:n}=s;setTimeout(()=>{Vs(s)?this.events.emit(Ne(\"pairing_ping\",n),{}):_t(s)&&this.events.emit(Ne(\"pairing_ping\",n),{error:s.error})},500)}),p(this,\"onPairingDeleteRequest\",async(i,s)=>{const{id:n}=s;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(re.delete,{id:n,topic:i})}catch(o){await this.sendError(n,i,o),this.logger.error(o)}}),p(this,\"onUnknownRpcMethodRequest\",async(i,s)=>{const{id:n,method:o}=s;try{if(this.registeredMethods.includes(o))return;const a=ae(\"WC_METHOD_UNSUPPORTED\",o);await this.sendError(n,i,a),this.logger.error(a)}catch(a){await this.sendError(n,i,a),this.logger.error(a)}}),p(this,\"onUnknownRpcMethodResponse\",i=>{this.registeredMethods.includes(i)||this.logger.error(ae(\"WC_METHOD_UNSUPPORTED\",i))}),p(this,\"isValidPair\",(i,s)=>{var n;if(!$e(i)){const{message:a}=m(\"MISSING_OR_INVALID\",`pair() params: ${i}`);throw s.setError(Y.malformed_pairing_uri),new Error(a)}if(!Ns(i.uri)){const{message:a}=m(\"MISSING_OR_INVALID\",`pair() uri: ${i.uri}`);throw s.setError(Y.malformed_pairing_uri),new Error(a)}const o=gt(i?.uri);if(!((n=o?.relay)!=null&&n.protocol)){const{message:a}=m(\"MISSING_OR_INVALID\",\"pair() uri#relay-protocol\");throw s.setError(Y.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=m(\"MISSING_OR_INVALID\",\"pair() uri#symKey\");throw s.setError(Y.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&R(o?.expiryTimestamp){if(!$e(i)){const{message:n}=m(\"MISSING_OR_INVALID\",`ping() params: ${i}`);throw new Error(n)}const{topic:s}=i;await this.isValidPairingTopic(s)}),p(this,\"isValidDisconnect\",async i=>{if(!$e(i)){const{message:n}=m(\"MISSING_OR_INVALID\",`disconnect() params: ${i}`);throw new Error(n)}const{topic:s}=i;await this.isValidPairingTopic(s)}),p(this,\"isValidPairingTopic\",async i=>{if(!$s(i,!1)){const{message:s}=m(\"MISSING_OR_INVALID\",`pairing topic should be a string: ${i}`);throw new Error(s)}if(!this.pairings.keys.includes(i)){const{message:s}=m(\"NO_MATCHING_KEY\",`pairing topic doesn't exist: ${i}`);throw new Error(s)}if(pt(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:s}=m(\"EXPIRED\",`pairing topic: ${i}`);throw new Error(s)}}),this.core=e,this.logger=N(t,this.name),this.pairings=new Li(this.core,this.logger,this.name,this.storagePrefix)}get context(){return U(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(C.message,async e=>{const{topic:t,message:i,transportType:s}=e;if(this.pairings.keys.includes(t)&&s!==Q.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))try{const n=await this.core.crypto.decode(t,i);ft(n)?(this.core.history.set(t,n),await this.onRelayEventRequest({topic:t,payload:n})):Dt(n)&&(await this.core.history.resolve(n),await this.onRelayEventResponse({topic:t,payload:n}),this.core.history.delete(t,n.id)),await this.core.relayer.messages.ack(t,i)}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(M.expired,async e=>{const{topic:t}=Rs(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(re.expire,{topic:t}))})}}var jo=Object.defineProperty,Uo=(r,e,t)=>e in r?jo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,O=(r,e,t)=>Uo(r,typeof e!=\"symbol\"?e+\"\":e,t);class ji extends ss{constructor(e,t){super(e,t),this.core=e,this.logger=t,O(this,\"records\",new Map),O(this,\"events\",new ee),O(this,\"name\",Bt),O(this,\"version\",Vt),O(this,\"cached\",[]),O(this,\"initialized\",!1),O(this,\"storagePrefix\",B),O(this,\"init\",async()=>{this.initialized||(this.logger.trace(\"Initialized\"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),O(this,\"set\",(i,s,n)=>{if(this.isInitialized(),this.logger.debug(\"Setting JSON-RPC request history record\"),this.logger.trace({type:\"method\",method:\"set\",topic:i,request:s,chainId:n}),this.records.has(s.id))return;const o={id:s.id,topic:i,request:{method:s.method,params:s.params||null},chainId:n,expiry:ce(Ce)};this.records.set(o.id,o),this.persist(),this.events.emit(F.created,o)}),O(this,\"resolve\",async i=>{if(this.isInitialized(),this.logger.debug(\"Updating JSON-RPC response history record\"),this.logger.trace({type:\"method\",method:\"update\",response:i}),!this.records.has(i.id))return;const s=await this.getRecord(i.id);typeof s.response>\"u\"&&(s.response=_t(i)?{error:i.error}:{result:i.result},this.records.set(s.id,s),this.persist(),this.events.emit(F.updated,s))}),O(this,\"get\",async(i,s)=>(this.isInitialized(),this.logger.debug(\"Getting record\"),this.logger.trace({type:\"method\",method:\"get\",topic:i,id:s}),await this.getRecord(s))),O(this,\"delete\",(i,s)=>{this.isInitialized(),this.logger.debug(\"Deleting record\"),this.logger.trace({type:\"method\",method:\"delete\",id:s}),this.values.forEach(n=>{if(n.topic===i){if(typeof s<\"u\"&&n.id!==s)return;this.records.delete(n.id),this.events.emit(F.deleted,n)}}),this.persist()}),O(this,\"exists\",async(i,s)=>(this.isInitialized(),this.records.has(s)?(await this.getRecord(s)).topic===i:!1)),O(this,\"on\",(i,s)=>{this.events.on(i,s)}),O(this,\"once\",(i,s)=>{this.events.once(i,s)}),O(this,\"off\",(i,s)=>{this.events.off(i,s)}),O(this,\"removeListener\",(i,s)=>{this.events.removeListener(i,s)}),this.logger=N(t,this.name)}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<\"u\")return;const i={topic:t.topic,request:wt(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:i}=m(\"NO_MATCHING_KEY\",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(F.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>\"u\"||!e.length)return;if(this.records.size){const{message:t}=m(\"RESTORE_WILL_OVERRIDE\",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:\"method\",method:\"restore\",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(F.created,e=>{const t=F.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,record:e})}),this.events.on(F.updated,e=>{const t=F.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,record:e})}),this.events.on(F.deleted,e=>{const t=F.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,record:e})}),this.core.heartbeat.on(te.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{R(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(F.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var Fo=Object.defineProperty,Mo=(r,e,t)=>e in r?Fo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,A=(r,e,t)=>Mo(r,typeof e!=\"symbol\"?e+\"\":e,t);class Ui extends rs{constructor(e,t){super(e,t),this.core=e,this.logger=t,A(this,\"expirations\",new Map),A(this,\"events\",new ee),A(this,\"name\",qt),A(this,\"version\",Gt),A(this,\"cached\",[]),A(this,\"initialized\",!1),A(this,\"storagePrefix\",B),A(this,\"init\",async()=>{this.initialized||(this.logger.trace(\"Initialized\"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)}),A(this,\"has\",i=>{try{const s=this.formatTarget(i);return typeof this.getExpiration(s)<\"u\"}catch{return!1}}),A(this,\"set\",(i,s)=>{this.isInitialized();const n=this.formatTarget(i),o={target:n,expiry:s};this.expirations.set(n,o),this.checkExpiry(n,o),this.events.emit(M.created,{target:n,expiration:o})}),A(this,\"get\",i=>{this.isInitialized();const s=this.formatTarget(i);return this.getExpiration(s)}),A(this,\"del\",i=>{if(this.isInitialized(),this.has(i)){const s=this.formatTarget(i),n=this.getExpiration(s);this.expirations.delete(s),this.events.emit(M.deleted,{target:s,expiration:n})}}),A(this,\"on\",(i,s)=>{this.events.on(i,s)}),A(this,\"once\",(i,s)=>{this.events.once(i,s)}),A(this,\"off\",(i,s)=>{this.events.off(i,s)}),A(this,\"removeListener\",(i,s)=>{this.events.removeListener(i,s)}),this.logger=N(t,this.name)}get context(){return U(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+\"//\"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e==\"string\")return zs(e);if(typeof e==\"number\")return Ls(e);const{message:t}=m(\"UNKNOWN_TYPE\",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(M.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>\"u\"||!e.length)return;if(this.expirations.size){const{message:t}=m(\"RESTORE_WILL_OVERRIDE\",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:\"method\",method:\"restore\",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:i}=m(\"NO_MATCHING_KEY\",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;R(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(M.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(te.pulse,()=>this.checkExpirations()),this.events.on(M.created,e=>{const t=M.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,data:e}),this.persist()}),this.events.on(M.expired,e=>{const t=M.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,data:e}),this.persist()}),this.events.on(M.deleted,e=>{const t=M.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:\"event\",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=m(\"NOT_INITIALIZED\",this.name);throw new Error(e)}}}var Ko=Object.defineProperty,Bo=(r,e,t)=>e in r?Ko(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,w=(r,e,t)=>Bo(r,typeof e!=\"symbol\"?e+\"\":e,t);class Fi extends ns{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,w(this,\"name\",Wt),w(this,\"abortController\"),w(this,\"isDevEnv\"),w(this,\"verifyUrlV3\",Yt),w(this,\"storagePrefix\",B),w(this,\"version\",Le),w(this,\"publicKey\"),w(this,\"fetchPromise\"),w(this,\"init\",async()=>{var s;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&R((s=this.publicKey)==null?void 0:s.expiresAt){if(!ks()||this.isDevEnv)return;const n=window.location.origin,{id:o,decryptedId:a}=s,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${n}&id=${o}&decryptedId=${a}`;try{const h=Gs(),l=this.startAbortTimer(Z*5),d=await new Promise((g,_)=>{const u=()=>{window.removeEventListener(\"message\",x),h.body.removeChild(b),_(\"attestation aborted\")};this.abortController.signal.addEventListener(\"abort\",u);const b=h.createElement(\"iframe\");b.src=c,b.style.display=\"none\",b.addEventListener(\"error\",u,{signal:this.abortController.signal});const x=I=>{if(I.data&&typeof I.data==\"string\")try{const D=JSON.parse(I.data);if(D.type===\"verify_attestation\"){if(rt(D.attestation).payload.id!==o)return;clearInterval(l),h.body.removeChild(b),this.abortController.signal.removeEventListener(\"abort\",u),window.removeEventListener(\"message\",x),g(D.attestation===null?\"\":D.attestation)}}catch(D){this.logger.warn(D)}};h.body.appendChild(b),window.addEventListener(\"message\",x,{signal:this.abortController.signal})});return this.logger.debug(\"jwt attestation\",d),d}catch(h){this.logger.warn(h)}return\"\"}),w(this,\"resolve\",async s=>{if(this.isDevEnv)return\"\";const{attestationId:n,hash:o,encryptedId:a}=s;if(n===\"\"){this.logger.debug(\"resolve: attestationId is empty, skipping\");return}if(n){if(rt(n).payload.id!==a)return;const h=await this.isValidJwtAttestation(n);if(h){if(!h.isVerified){this.logger.warn(\"resolve: jwt attestation: origin url not verified\");return}return h}}if(!o)return;const c=this.getVerifyUrl(s?.verifyUrl);return this.fetchAttestation(o,c)}),w(this,\"fetchAttestation\",async(s,n)=>{this.logger.debug(`resolving attestation: ${s} from url: ${n}`);const o=this.startAbortTimer(Z*5),a=await fetch(`${n}/attestation/${s}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0}),w(this,\"getVerifyUrl\",s=>{let n=s||ue;return Jt.includes(n)||(this.logger.info(`verify url: ${n}, not included in trusted list, assigning default: ${ue}`),n=ue),n}),w(this,\"fetchPublicKey\",async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const s=this.startAbortTimer(Pe),n=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(s),await n.json()}catch(s){this.logger.warn(s)}}),w(this,\"persistPublicKey\",async s=>{this.logger.debug(\"persisting public key to local storage\",s),await this.store.setItem(this.storeKey,s),this.publicKey=s}),w(this,\"removePublicKey\",async()=>{this.logger.debug(\"removing verify v2 public key from storage\"),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),w(this,\"isValidJwtAttestation\",async s=>{const n=await this.getPublicKey();try{if(n)return this.validateAttestation(s,n)}catch(a){this.logger.error(a),this.logger.warn(\"error validating attestation\")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(s,o)}catch(a){this.logger.error(a),this.logger.warn(\"error validating attestation\")}}),w(this,\"getPublicKey\",async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),w(this,\"fetchAndPersistPublicKey\",async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async n=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),n(o))});const s=await this.fetchPromise;return this.fetchPromise=void 0,s}),w(this,\"validateAttestation\",(s,n)=>{const o=js(s,n.publicKey),a={hasExpired:R(o.exp)this.abortController.abort(),R(e))}}var Vo=Object.defineProperty,qo=(r,e,t)=>e in r?Vo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Mi=(r,e,t)=>qo(r,typeof e!=\"symbol\"?e+\"\":e,t);class Ki extends os{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,Mi(this,\"context\",Xt),Mi(this,\"registerDeviceToken\",async i=>{const{clientId:s,token:n,notificationType:o,enableEncrypted:a=!1}=i,c=`${Zt}/${this.projectId}/clients`;await fetch(c,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({client_id:s,type:o,token:n,always_raw:a})})}),this.logger=N(t,this.context)}}var Go=Object.defineProperty,Bi=Object.getOwnPropertySymbols,Wo=Object.prototype.hasOwnProperty,Ho=Object.prototype.propertyIsEnumerable,Ze=(r,e,t)=>e in r?Go(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,be=(r,e)=>{for(var t in e||(e={}))Wo.call(e,t)&&Ze(r,t,e[t]);if(Bi)for(var t of Bi(e))Ho.call(e,t)&&Ze(r,t,e[t]);return r},E=(r,e,t)=>Ze(r,typeof e!=\"symbol\"?e+\"\":e,t);class Vi extends as{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,E(this,\"context\",ei),E(this,\"storagePrefix\",B),E(this,\"storageVersion\",Qt),E(this,\"events\",new Map),E(this,\"shouldPersist\",!1),E(this,\"init\",async()=>{if(!yt())try{const s={eventId:bt(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:\"INIT\",type:\"\",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Us(this.core.relayer.protocol,this.core.relayer.version,_e)}}};await this.sendEvent([s])}catch(s){this.logger.warn(s)}}),E(this,\"createEvent\",s=>{const{event:n=\"ERROR\",type:o=\"\",properties:{topic:a,trace:c}}=s,h=bt(),l=this.core.projectId||\"\",d=Date.now(),g=be({eventId:h,timestamp:d,props:{event:n,type:o,properties:{topic:a,trace:c}},bundleId:l,domain:this.getAppDomain()},this.setMethods(h));return this.telemetryEnabled&&(this.events.set(h,g),this.shouldPersist=!0),g}),E(this,\"getEvent\",s=>{const{eventId:n,topic:o}=s;if(n)return this.events.get(n);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return be(be({},a),this.setMethods(a.eventId))}),E(this,\"deleteEvent\",s=>{const{eventId:n}=s;this.events.delete(n),this.shouldPersist=!0}),E(this,\"setEventListeners\",()=>{this.core.heartbeat.on(te.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(s=>{it(Date.now())-it(s.timestamp)>ti&&(this.events.delete(s.eventId),this.shouldPersist=!0)})})}),E(this,\"setMethods\",s=>({addTrace:n=>this.addTrace(s,n),setError:n=>this.setError(s,n)})),E(this,\"addTrace\",(s,n)=>{const o=this.events.get(s);o&&(o.props.properties.trace.push(n),this.events.set(s,o),this.shouldPersist=!0)}),E(this,\"setError\",(s,n)=>{const o=this.events.get(s);o&&(o.props.type=n,o.timestamp=Date.now(),this.events.set(s,o),this.shouldPersist=!0)}),E(this,\"persist\",async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),E(this,\"restore\",async()=>{try{const s=await this.core.storage.getItem(this.storageKey)||[];if(!s.length)return;s.forEach(n=>{this.events.set(n.eventId,be(be({},n),this.setMethods(n.eventId)))})}catch(s){this.logger.warn(s)}}),E(this,\"submit\",async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const s=[];for(const[n,o]of this.events)o.props.type&&s.push(o);if(s.length!==0)try{if((await this.sendEvent(s)).ok)for(const n of s)this.events.delete(n.eventId),this.shouldPersist=!0}catch(n){this.logger.warn(n)}}),E(this,\"sendEvent\",async s=>{const n=this.getAppDomain()?\"\":\"&sp=desktop\";return await fetch(`${ii}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${_e}${n}`,{method:\"POST\",body:JSON.stringify(s)})}),E(this,\"getAppDomain\",()=>Fs().url),this.logger=N(t,this.context),this.telemetryEnabled=i,i?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+\"//\"+this.context}}var Yo=Object.defineProperty,qi=Object.getOwnPropertySymbols,Jo=Object.prototype.hasOwnProperty,Xo=Object.prototype.propertyIsEnumerable,Qe=(r,e,t)=>e in r?Yo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Gi=(r,e)=>{for(var t in e||(e={}))Jo.call(e,t)&&Qe(r,t,e[t]);if(qi)for(var t of qi(e))Xo.call(e,t)&&Qe(r,t,e[t]);return r},v=(r,e,t)=>Qe(r,typeof e!=\"symbol\"?e+\"\":e,t);class Te extends cs{constructor(e){var t;super(e),v(this,\"protocol\",ze),v(this,\"version\",Le),v(this,\"name\",he),v(this,\"relayUrl\"),v(this,\"projectId\"),v(this,\"customStoragePrefix\"),v(this,\"events\",new ee),v(this,\"logger\"),v(this,\"heartbeat\"),v(this,\"relayer\"),v(this,\"crypto\"),v(this,\"storage\"),v(this,\"history\"),v(this,\"expirer\"),v(this,\"pairing\"),v(this,\"verify\"),v(this,\"echoClient\"),v(this,\"linkModeSupportedApps\"),v(this,\"eventClient\"),v(this,\"initialized\",!1),v(this,\"logChunkController\"),v(this,\"on\",(a,c)=>this.events.on(a,c)),v(this,\"once\",(a,c)=>this.events.once(a,c)),v(this,\"off\",(a,c)=>this.events.off(a,c)),v(this,\"removeListener\",(a,c)=>this.events.removeListener(a,c)),v(this,\"dispatchEnvelope\",({topic:a,message:c,sessionExists:h})=>{if(!a||!c)return;const l={topic:a,message:c,publishedAt:Date.now(),transportType:Q.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:h})});const i=this.getGlobalCore(e?.customStoragePrefix);if(i)try{return this.customStoragePrefix=i.customStoragePrefix,this.logger=i.logger,this.heartbeat=i.heartbeat,this.crypto=i.crypto,this.history=i.history,this.expirer=i.expirer,this.storage=i.storage,this.relayer=i.relayer,this.pairing=i.pairing,this.verify=i.verify,this.echoClient=i.echoClient,this.linkModeSupportedApps=i.linkModeSupportedApps,this.eventClient=i.eventClient,this.initialized=i.initialized,this.logChunkController=i.logChunkController,i}catch(a){console.warn(\"Failed to copy global core\",a)}this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||Ue,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:\"\";const s=et({level:typeof e?.logger==\"string\"&&e.logger?e.logger:Et.logger,name:he}),{logger:n,chunkLoggerController:o}=Xi({opts:s,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=o,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var a,c;(a=this.logChunkController)!=null&&a.downloadLogsBlobInBrowser&&((c=this.logChunkController)==null||c.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=N(n,this.name),this.heartbeat=new Hi,this.crypto=new wi(this,this.logger,e?.keychain),this.history=new ji(this,this.logger),this.expirer=new Ui(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Yi(Gi(Gi({},It),e?.storageOptions)),this.relayer=new Oi({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new ki(this,this.logger),this.verify=new Fi(this,this.logger,this.storage),this.echoClient=new Ki(this.projectId||\"\",this.logger),this.linkModeSupportedApps=[],this.eventClient=new Vi(this,this.logger,e?.telemetryEnabled),this.setGlobalCore(this)}static async init(e){const t=new Te(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(jt,i),t}get context(){return U(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(Fe,this.linkModeSupportedApps))}async initialize(){this.logger.trace(\"Initialized\");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(Fe)||[],this.initialized=!0,this.logger.info(\"Core Initialization Success\")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}getGlobalCore(e=\"\"){try{if(this.isGlobalCoreDisabled())return;const t=`_walletConnectCore_${e}`,i=`${t}_count`;return globalThis[i]=(globalThis[i]||0)+1,globalThis[i]>1&&console.warn(`WalletConnect Core is already initialized. This is probably a mistake and can lead to unexpected behavior. Init() was called ${globalThis[i]} times.`),globalThis[t]}catch(t){console.warn(\"Failed to get global WalletConnect core\",t);return}}setGlobalCore(e){var t;try{if(this.isGlobalCoreDisabled())return;const i=`_walletConnectCore_${((t=e.opts)==null?void 0:t.customStoragePrefix)||\"\"}`;globalThis[i]=e}catch(i){console.warn(\"Failed to set global WalletConnect core\",i)}}isGlobalCoreDisabled(){try{return typeof process<\"u\"&&process.env.DISABLE_GLOBAL_CORE===\"true\"}catch{return!0}}}const Zo=Te;export{he as CORE_CONTEXT,Et as CORE_DEFAULT,ze as CORE_PROTOCOL,It as CORE_STORAGE_OPTIONS,B as CORE_STORAGE_PREFIX,Le as CORE_VERSION,ke as CRYPTO_CLIENT_SEED,Tt as CRYPTO_CONTEXT,Ct as CRYPTO_JWT_TTL,Zo as Core,wi as Crypto,Xt as ECHO_CONTEXT,Zt as ECHO_URL,ii as EVENTS_CLIENT_API_URL,ti as EVENTS_STORAGE_CLEANUP_INTERVAL,ei as EVENTS_STORAGE_CONTEXT,Qt as EVENTS_STORAGE_VERSION,rr as EVENT_CLIENT_AUTHENTICATE_ERRORS,sr as EVENT_CLIENT_AUTHENTICATE_TRACES,er as EVENT_CLIENT_CONTEXT,Y as EVENT_CLIENT_PAIRING_ERRORS,G as EVENT_CLIENT_PAIRING_TRACES,ir as EVENT_CLIENT_SESSION_ERRORS,tr as EVENT_CLIENT_SESSION_TRACES,qt as EXPIRER_CONTEXT,Zs as EXPIRER_DEFAULT_TTL,M as EXPIRER_EVENTS,Gt as EXPIRER_STORAGE_VERSION,Ki as EchoClient,Vi as EventClient,Ui as Expirer,Bt as HISTORY_CONTEXT,F as HISTORY_EVENTS,Vt as HISTORY_STORAGE_VERSION,ji as JsonRpcHistory,Pt as KEYCHAIN_CONTEXT,St as KEYCHAIN_STORAGE_VERSION,vi as KeyChain,Ot as MESSAGES_CONTEXT,Rt as MESSAGES_STORAGE_VERSION,le as MESSAGE_DIRECTION,Ei as MessageTracker,Mt as PAIRING_CONTEXT,Xs as PAIRING_DEFAULT_TTL,re as PAIRING_EVENTS,se as PAIRING_RPC_OPTS,Kt as PAIRING_STORAGE_VERSION,Js as PENDING_SUB_RESOLUTION_TIMEOUT,At as PUBLISHER_CONTEXT,je as PUBLISHER_DEFAULT_TTL,ki as Pairing,$t as RELAYER_CONTEXT,Nt as RELAYER_DEFAULT_LOGGER,xt as RELAYER_DEFAULT_PROTOCOL,Ue as RELAYER_DEFAULT_RELAY_URL,C as RELAYER_EVENTS,L as RELAYER_PROVIDER_EVENTS,Lt as RELAYER_RECONNECT_TIMEOUT,_e as RELAYER_SDK_VERSION,Ws as RELAYER_STORAGE_OPTIONS,zt as RELAYER_SUBSCRIBER_SUFFIX,Hs as RELAYER_TRANSPORT_CUTOFF,Oi as Relayer,kt as STORE_STORAGE_VERSION,Ut as SUBSCRIBER_CONTEXT,Ys as SUBSCRIBER_DEFAULT_TTL,$ as SUBSCRIBER_EVENTS,Ft as SUBSCRIBER_STORAGE_VERSION,Li as Store,Ci as Subscriber,Q as TRANSPORT_TYPES,Jt as TRUSTED_VERIFY_URLS,Wt as VERIFY_CONTEXT,ue as VERIFY_SERVER,Yt as VERIFY_SERVER_V3,Fi as Verify,jt as WALLETCONNECT_CLIENT_ID,Fe as WALLETCONNECT_LINK_MODE_APPS,Te as default};\n//# sourceMappingURL=index.es.js.map\n","import{RELAYER_EVENTS as ze,TRANSPORT_TYPES as P,EXPIRER_EVENTS as Pt,PAIRING_EVENTS as Ye,RELAYER_DEFAULT_PROTOCOL as Nt,EVENT_CLIENT_SESSION_TRACES as D,EVENT_CLIENT_SESSION_ERRORS as H,EVENT_CLIENT_AUTHENTICATE_TRACES as z,EVENT_CLIENT_AUTHENTICATE_ERRORS as re,EVENT_CLIENT_PAIRING_ERRORS as Ot,EVENT_CLIENT_PAIRING_TRACES as bt,VERIFY_SERVER as At,Store as B,Core as xt}from\"@walletconnect/core\";import{pino as Vt,getDefaultLoggerOptions as Ct,generateChildLogger as kt,getLoggerContext as Dt}from\"@walletconnect/logger\";import{IEngine as Lt,ISignClient as Mt}from\"@walletconnect/types\";import{LimitedSet as $t,getInternalError as g,BASE64URL as ne,BASE64 as de,hashMessage as W,parseExpirerTarget as Kt,isValidString as Y,isExpired as Z,isValidId as Ut,mergeRequiredAndOptionalNamespaces as Gt,calcExpiry as b,engineEvent as R,createDelayedPromise as ee,getSdkError as L,getDeepLink as jt,handleDeeplinkRedirect as Ft,isSessionCompatible as Qt,hashKey as Oe,parseChainId as be,createEncodedRecap as Ht,getRecapFromResources as Ae,mergeEncodedRecaps as zt,TYPE_2 as Yt,getLinkModeURL as ue,validateSignedCacao as Je,getNamespacedDidChainId as Xe,getDidAddress as Be,getMethodsFromRecap as We,getChainsFromRecap as Ze,buildNamespacesFromAuth as et,formatMessage as Jt,MemoryStore as oe,isValidParams as M,isUndefined as J,isValidRelays as Xt,isValidObject as tt,isValidRequiredNamespaces as Bt,isValidNamespaces as xe,isConformingNamespaces as st,isValidErrorReason as Wt,isValidRelay as Zt,isValidController as es,isValidNamespacesChainId as it,isValidRequest as ts,isValidNamespacesRequest as ss,isValidRequestExpiry as is,isValidResponse as rs,isValidEvent as ns,isValidNamespacesEvent as os,getSearchParamFromURL as rt,isTestRun as as,isReactNative as cs,getSuiDigest as ls,getNearTransactionIdFromSignedTransaction as nt,buildSignedExtrinsicHash as ps,isValidArray as ot,getAlgorandTransactionId as at,getSignDirectHash as hs,extractSolanaTransactionId as ds,TYPE_1 as Ve,populateAppMetadata as us}from\"@walletconnect/utils\";import gs,{EventEmitter as ys}from\"events\";import{THIRTY_DAYS as ms,SEVEN_DAYS as ct,FIVE_MINUTES as A,ONE_DAY as U,ONE_HOUR as lt,ONE_SECOND as ws,toMiliseconds as pt}from\"@walletconnect/time\";import{isJsonRpcRequest as _s,isJsonRpcResponse as Es,payloadId as G,getBigIntRpcId as ge,isJsonRpcResult as j,isJsonRpcError as F,formatJsonRpcRequest as ye,formatJsonRpcResult as fs,formatJsonRpcError as Ss}from\"@walletconnect/jsonrpc-utils\";const Ce=\"wc\",ke=2,De=\"client\",me=`${Ce}@${ke}:${De}:`,we={name:De,logger:\"error\",controller:!1,relayUrl:\"wss://relay.walletconnect.org\"},Rs={session_proposal:\"session_proposal\",session_update:\"session_update\",session_extend:\"session_extend\",session_ping:\"session_ping\",session_delete:\"session_delete\",session_expire:\"session_expire\",session_request:\"session_request\",session_request_sent:\"session_request_sent\",session_event:\"session_event\",proposal_expire:\"proposal_expire\",session_authenticate:\"session_authenticate\",session_request_expire:\"session_request_expire\",session_connect:\"session_connect\"},vs={database:\":memory:\"},Le=\"WALLETCONNECT_DEEPLINK_CHOICE\",Is={created:\"history_created\",updated:\"history_updated\",deleted:\"history_deleted\",sync:\"history_sync\"},Ts=\"history\",qs=\"0.3\",ht=\"proposal\",Ps=ms,Me=\"Proposal expired\",dt=\"session\",X=ct,ut=\"engine\",N={wc_sessionPropose:{req:{ttl:A,prompt:!0,tag:1100},res:{ttl:A,prompt:!1,tag:1101},reject:{ttl:A,prompt:!1,tag:1120},autoReject:{ttl:A,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:A,prompt:!1,tag:1102},res:{ttl:A,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:U,prompt:!1,tag:1104},res:{ttl:U,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:U,prompt:!1,tag:1106},res:{ttl:U,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:A,prompt:!0,tag:1108},res:{ttl:A,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:A,prompt:!0,tag:1110},res:{ttl:A,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:U,prompt:!1,tag:1112},res:{ttl:U,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:U,prompt:!1,tag:1114},res:{ttl:U,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:lt,prompt:!0,tag:1116},res:{ttl:lt,prompt:!1,tag:1117},reject:{ttl:A,prompt:!1,tag:1118},autoReject:{ttl:A,prompt:!1,tag:1119}}},_e={min:A,max:ct},$={idle:\"IDLE\",active:\"ACTIVE\"},gt={eth_sendTransaction:{key:\"\"},eth_sendRawTransaction:{key:\"\"},wallet_sendCalls:{key:\"\"},solana_signTransaction:{key:\"signature\"},solana_signAllTransactions:{key:\"transactions\"},solana_signAndSendTransaction:{key:\"signature\"},sui_signAndExecuteTransaction:{key:\"digest\"},sui_signTransaction:{key:\"\"},hedera_signAndExecuteTransaction:{key:\"transactionId\"},hedera_executeTransaction:{key:\"transactionId\"},near_signTransaction:{key:\"\"},near_signTransactions:{key:\"\"},tron_signTransaction:{key:\"txID\"},xrpl_signTransaction:{key:\"\"},xrpl_signTransactionFor:{key:\"\"},algo_signTxn:{key:\"\"},sendTransfer:{key:\"txid\"},stacks_stxTransfer:{key:\"txId\"},polkadot_signTransaction:{key:\"\"},cosmos_signDirect:{key:\"\"}},yt=\"request\",mt=[\"wc_sessionPropose\",\"wc_sessionRequest\",\"wc_authRequest\",\"wc_sessionAuthenticate\"],wt=\"wc\",Ns=1.5,_t=\"auth\",Et=\"authKeys\",ft=\"pairingTopics\",St=\"requests\",ae=`${wt}@${1.5}:${_t}:`,ce=`${ae}:PUB_KEY`;var Os=Object.defineProperty,bs=Object.defineProperties,As=Object.getOwnPropertyDescriptors,Rt=Object.getOwnPropertySymbols,xs=Object.prototype.hasOwnProperty,Vs=Object.prototype.propertyIsEnumerable,$e=(S,o,t)=>o in S?Os(S,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):S[o]=t,I=(S,o)=>{for(var t in o||(o={}))xs.call(o,t)&&$e(S,t,o[t]);if(Rt)for(var t of Rt(o))Vs.call(o,t)&&$e(S,t,o[t]);return S},x=(S,o)=>bs(S,As(o)),c=(S,o,t)=>$e(S,typeof o!=\"symbol\"?o+\"\":o,t);class Cs extends Lt{constructor(o){super(o),c(this,\"name\",ut),c(this,\"events\",new gs),c(this,\"initialized\",!1),c(this,\"requestQueue\",{state:$.idle,queue:[]}),c(this,\"sessionRequestQueue\",{state:$.idle,queue:[]}),c(this,\"emittedSessionRequests\",new $t({limit:500})),c(this,\"requestQueueDelay\",ws),c(this,\"expectedPairingMethodMap\",new Map),c(this,\"recentlyDeletedMap\",new Map),c(this,\"recentlyDeletedLimit\",200),c(this,\"relayMessageCache\",[]),c(this,\"pendingSessions\",new Map),c(this,\"init\",async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(N)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},pt(this.requestQueueDelay)))}),c(this,\"connect\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const e=x(I({},t),{requiredNamespaces:t.requiredNamespaces||{},optionalNamespaces:t.optionalNamespaces||{}});await this.isValidConnect(e),e.optionalNamespaces=Gt(e.requiredNamespaces,e.optionalNamespaces),e.requiredNamespaces={};const{pairingTopic:s,requiredNamespaces:i,optionalNamespaces:r,sessionProperties:n,scopedProperties:a,relays:l}=e;let p=s,h,u=!1;try{if(p){const T=this.client.core.pairing.pairings.get(p);this.client.logger.warn(\"connect() with existing pairing topic is deprecated and will be removed in the next major release.\"),u=T.active}}catch(T){throw this.client.logger.error(`connect() -> pairing.get(${p}) failed`),T}if(!p||!u){const{topic:T,uri:K}=await this.client.core.pairing.create();p=T,h=K}if(!p){const{message:T}=g(\"NO_MATCHING_KEY\",`connect() pairing topic: ${p}`);throw new Error(T)}const d=await this.client.core.crypto.generateKeyPair(),w=N.wc_sessionPropose.req.ttl||A,m=b(w),y=x(I(I({requiredNamespaces:i,optionalNamespaces:r,relays:l??[{protocol:Nt}],proposer:{publicKey:d,metadata:this.client.metadata},expiryTimestamp:m,pairingTopic:p},n&&{sessionProperties:n}),a&&{scopedProperties:a}),{id:G()}),E=R(\"session_connect\",y.id),{reject:_,resolve:V,done:C}=ee(w,Me),v=({id:T})=>{T===y.id&&(this.client.events.off(\"proposal_expire\",v),this.pendingSessions.delete(y.id),this.events.emit(E,{error:{message:Me,code:0}}))};return this.client.events.on(\"proposal_expire\",v),this.events.once(E,({error:T,session:K})=>{this.client.events.off(\"proposal_expire\",v),T?_(T):K&&V(K)}),await this.sendRequest({topic:p,method:\"wc_sessionPropose\",params:y,throwOnFailedPublish:!0,clientRpcId:y.id}),await this.setProposal(y.id,y),{uri:h,approval:C}}),c(this,\"pair\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(t)}catch(e){throw this.client.logger.error(\"pair() failed\"),e}}),c(this,\"approve\",async t=>{var e,s,i;const r=this.client.core.eventClient.createEvent({properties:{topic:(e=t?.id)==null?void 0:e.toString(),trace:[D.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(q){throw r.setError(H.no_internet_connection),q}try{await this.isValidProposalId(t?.id)}catch(q){throw this.client.logger.error(`approve() -> proposal.get(${t?.id}) failed`),r.setError(H.proposal_not_found),q}try{await this.isValidApprove(t)}catch(q){throw this.client.logger.error(\"approve() -> isValidApprove() failed\"),r.setError(H.session_approve_namespace_validation_failure),q}const{id:n,relayProtocol:a,namespaces:l,sessionProperties:p,scopedProperties:h,sessionConfig:u}=t,d=this.client.proposal.get(n);this.client.core.eventClient.deleteEvent({eventId:r.eventId});const{pairingTopic:w,proposer:m,requiredNamespaces:y,optionalNamespaces:E}=d;let _=(s=this.client.core.eventClient)==null?void 0:s.getEvent({topic:w});_||(_=(i=this.client.core.eventClient)==null?void 0:i.createEvent({type:D.session_approve_started,properties:{topic:w,trace:[D.session_approve_started,D.session_namespaces_validation_success]}}));const V=await this.client.core.crypto.generateKeyPair(),C=m.publicKey,v=await this.client.core.crypto.generateSharedKey(V,C),T=I(I(I({relay:{protocol:a??\"irn\"},namespaces:l,controller:{publicKey:V,metadata:this.client.metadata},expiry:b(X)},p&&{sessionProperties:p}),h&&{scopedProperties:h}),u&&{sessionConfig:u}),K=P.relay;_.addTrace(D.subscribing_session_topic);try{await this.client.core.relayer.subscribe(v,{transportType:K})}catch(q){throw _.setError(H.subscribe_session_topic_failure),q}_.addTrace(D.subscribe_session_topic_success);const fe=x(I({},T),{topic:v,requiredNamespaces:y,optionalNamespaces:E,pairingTopic:w,acknowledged:!1,self:T.controller,peer:{publicKey:m.publicKey,metadata:m.metadata},controller:V,transportType:P.relay});await this.client.session.set(v,fe),_.addTrace(D.store_session);try{_.addTrace(D.publishing_session_settle),await this.sendRequest({topic:v,method:\"wc_sessionSettle\",params:T,throwOnFailedPublish:!0}).catch(q=>{throw _?.setError(H.session_settle_publish_failure),q}),_.addTrace(D.session_settle_publish_success),_.addTrace(D.publishing_session_approve),await this.sendResult({id:n,topic:w,result:{relay:{protocol:a??\"irn\"},responderPublicKey:V},throwOnFailedPublish:!0}).catch(q=>{throw _?.setError(H.session_approve_publish_failure),q}),_.addTrace(D.session_approve_publish_success)}catch(q){throw this.client.logger.error(q),this.client.session.delete(v,L(\"USER_DISCONNECTED\")),await this.client.core.relayer.unsubscribe(v),q}return this.client.core.eventClient.deleteEvent({eventId:_.eventId}),await this.client.core.pairing.updateMetadata({topic:w,metadata:m.metadata}),await this.deleteProposal(n),await this.client.core.pairing.activate({topic:w}),await this.setExpiry(v,b(X)),{topic:v,acknowledged:()=>Promise.resolve(this.client.session.get(v))}}),c(this,\"reject\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(t)}catch(r){throw this.client.logger.error(\"reject() -> isValidReject() failed\"),r}const{id:e,reason:s}=t;let i;try{i=this.client.proposal.get(e).pairingTopic}catch(r){throw this.client.logger.error(`reject() -> proposal.get(${e}) failed`),r}i&&await this.sendError({id:e,topic:i,error:s,rpcOpts:N.wc_sessionPropose.reject}),await this.deleteProposal(e)}),c(this,\"update\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(t)}catch(h){throw this.client.logger.error(\"update() -> isValidUpdate() failed\"),h}const{topic:e,namespaces:s}=t,{done:i,resolve:r,reject:n}=ee(),a=G(),l=ge().toString(),p=this.client.session.get(e).namespaces;return this.events.once(R(\"session_update\",a),({error:h})=>{h?n(h):r()}),await this.client.session.update(e,{namespaces:s}),await this.sendRequest({topic:e,method:\"wc_sessionUpdate\",params:{namespaces:s},throwOnFailedPublish:!0,clientRpcId:a,relayRpcId:l}).catch(h=>{this.client.logger.error(h),this.client.session.update(e,{namespaces:p}),n(h)}),{acknowledged:i}}),c(this,\"extend\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(t)}catch(a){throw this.client.logger.error(\"extend() -> isValidExtend() failed\"),a}const{topic:e}=t,s=G(),{done:i,resolve:r,reject:n}=ee();return this.events.once(R(\"session_extend\",s),({error:a})=>{a?n(a):r()}),await this.setExpiry(e,b(X)),this.sendRequest({topic:e,method:\"wc_sessionExtend\",params:{},clientRpcId:s,throwOnFailedPublish:!0}).catch(a=>{n(a)}),{acknowledged:i}}),c(this,\"request\",async t=>{this.isInitialized();try{await this.isValidRequest(t)}catch(y){throw this.client.logger.error(\"request() -> isValidRequest() failed\"),y}const{chainId:e,request:s,topic:i,expiry:r=N.wc_sessionRequest.req.ttl}=t,n=this.client.session.get(i);n?.transportType===P.relay&&await this.confirmOnlineStateOrThrow();const a=G(),l=ge().toString(),{done:p,resolve:h,reject:u}=ee(r,\"Request expired. Please try again.\");this.events.once(R(\"session_request\",a),({error:y,result:E})=>{y?u(y):h(E)});const d=\"wc_sessionRequest\",w=this.getAppLinkIfEnabled(n.peer.metadata,n.transportType);if(w)return await this.sendRequest({clientRpcId:a,relayRpcId:l,topic:i,method:d,params:{request:x(I({},s),{expiryTimestamp:b(r)}),chainId:e},expiry:r,throwOnFailedPublish:!0,appLink:w}).catch(y=>u(y)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:e,id:a}),await p();const m={request:x(I({},s),{expiryTimestamp:b(r)}),chainId:e};return await Promise.all([new Promise(async y=>{await this.sendRequest({clientRpcId:a,relayRpcId:l,topic:i,method:d,params:m,expiry:r,throwOnFailedPublish:!0,tvf:this.getTVFParams(a,m)}).catch(E=>u(E)),this.client.events.emit(\"session_request_sent\",{topic:i,request:s,chainId:e,id:a}),y()}),new Promise(async y=>{var E;if(!((E=n.sessionConfig)!=null&&E.disableDeepLink)){const _=await jt(this.client.core.storage,Le);await Ft({id:a,topic:i,wcDeepLink:_})}y()}),p()]).then(y=>y[2])}),c(this,\"respond\",async t=>{this.isInitialized(),await this.isValidRespond(t);const{topic:e,response:s}=t,{id:i}=s,r=this.client.session.get(e);r.transportType===P.relay&&await this.confirmOnlineStateOrThrow();const n=this.getAppLinkIfEnabled(r.peer.metadata,r.transportType);j(s)?await this.sendResult({id:i,topic:e,result:s.result,throwOnFailedPublish:!0,appLink:n}):F(s)&&await this.sendError({id:i,topic:e,error:s.error,appLink:n}),this.cleanupAfterResponse(t)}),c(this,\"ping\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(t)}catch(s){throw this.client.logger.error(\"ping() -> isValidPing() failed\"),s}const{topic:e}=t;if(this.client.session.keys.includes(e)){const s=G(),i=ge().toString(),{done:r,resolve:n,reject:a}=ee();this.events.once(R(\"session_ping\",s),({error:l})=>{l?a(l):n()}),await Promise.all([this.sendRequest({topic:e,method:\"wc_sessionPing\",params:{},throwOnFailedPublish:!0,clientRpcId:s,relayRpcId:i}),r()])}else this.client.core.pairing.pairings.keys.includes(e)&&(this.client.logger.warn(\"ping() on pairing topic is deprecated and will be removed in the next major release.\"),await this.client.core.pairing.ping({topic:e}))}),c(this,\"emit\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(t);const{topic:e,event:s,chainId:i}=t,r=ge().toString(),n=G();await this.sendRequest({topic:e,method:\"wc_sessionEvent\",params:{event:s,chainId:i},throwOnFailedPublish:!0,relayRpcId:r,clientRpcId:n})}),c(this,\"disconnect\",async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(t);const{topic:e}=t;if(this.client.session.keys.includes(e))await this.sendRequest({topic:e,method:\"wc_sessionDelete\",params:L(\"USER_DISCONNECTED\"),throwOnFailedPublish:!0}),await this.deleteSession({topic:e,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(e))await this.client.core.pairing.disconnect({topic:e});else{const{message:s}=g(\"MISMATCHED_TOPIC\",`Session or pairing topic not found: ${e}`);throw new Error(s)}}),c(this,\"find\",t=>(this.isInitialized(),this.client.session.getAll().filter(e=>Qt(e,t)))),c(this,\"getPendingSessionRequests\",()=>this.client.pendingRequest.getAll()),c(this,\"authenticate\",async(t,e)=>{var s;this.isInitialized(),this.isValidAuthenticate(t);const i=e&&this.client.core.linkModeSupportedApps.includes(e)&&((s=this.client.metadata.redirect)==null?void 0:s.linkMode),r=i?P.link_mode:P.relay;r===P.relay&&await this.confirmOnlineStateOrThrow();const{chains:n,statement:a=\"\",uri:l,domain:p,nonce:h,type:u,exp:d,nbf:w,methods:m=[],expiry:y}=t,E=[...t.resources||[]],{topic:_,uri:V}=await this.client.core.pairing.create({methods:[\"wc_sessionAuthenticate\"],transportType:r});this.client.logger.info({message:\"Generated new pairing\",pairing:{topic:_,uri:V}});const C=await this.client.core.crypto.generateKeyPair(),v=Oe(C);if(await Promise.all([this.client.auth.authKeys.set(ce,{responseTopic:v,publicKey:C}),this.client.auth.pairingTopics.set(v,{topic:v,pairingTopic:_})]),await this.client.core.relayer.subscribe(v,{transportType:r}),this.client.logger.info(`sending request to new pairing topic: ${_}`),m.length>0){const{namespace:O}=be(n[0]);let k=Ht(O,\"request\",m);Ae(E)&&(k=zt(k,E.pop())),E.push(k)}const T=y&&y>N.wc_sessionAuthenticate.req.ttl?y:N.wc_sessionAuthenticate.req.ttl,K={authPayload:{type:u??\"caip122\",chains:n,statement:a,aud:l,domain:p,version:\"1\",nonce:h,iat:new Date().toISOString(),exp:d,nbf:w,resources:E},requester:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:b(T)},fe={eip155:{chains:n,methods:[...new Set([\"personal_sign\",...m])],events:[\"chainChanged\",\"accountsChanged\"]}},q={requiredNamespaces:{},optionalNamespaces:fe,relays:[{protocol:\"irn\"}],pairingTopic:_,proposer:{publicKey:C,metadata:this.client.metadata},expiryTimestamp:b(N.wc_sessionPropose.req.ttl),id:G()},{done:It,resolve:Ue,reject:Se}=ee(T,\"Request expired\"),te=G(),le=R(\"session_connect\",q.id),Re=R(\"session_request\",te),pe=async({error:O,session:k})=>{this.events.off(Re,ve),O?Se(O):k&&Ue({session:k})},ve=async O=>{var k,Ge,je;if(await this.deletePendingAuthRequest(te,{message:\"fulfilled\",code:0}),O.error){const ie=L(\"WC_METHOD_UNSUPPORTED\",\"wc_sessionAuthenticate\");return O.error.code===ie.code?void 0:(this.events.off(le,pe),Se(O.error.message))}await this.deleteProposal(q.id),this.events.off(le,pe);const{cacaos:Fe,responder:Q}=O.result,Te=[],Qe=[];for(const ie of Fe){await Je({cacao:ie,projectId:this.client.core.projectId})||(this.client.logger.error(ie,\"Signature verification failed\"),Se(L(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\")));const{p:qe}=ie,Pe=Ae(qe.resources),He=[Xe(qe.iss)],Tt=Be(qe.iss);if(Pe){const Ne=We(Pe),qt=Ze(Pe);Te.push(...Ne),He.push(...qt)}for(const Ne of He)Qe.push(`${Ne}:${Tt}`)}const se=await this.client.core.crypto.generateSharedKey(C,Q.publicKey);let he;Te.length>0&&(he={topic:se,acknowledged:!0,self:{publicKey:C,metadata:this.client.metadata},peer:Q,controller:Q.publicKey,expiry:b(X),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:_,namespaces:et([...new Set(Te)],[...new Set(Qe)]),transportType:r},await this.client.core.relayer.subscribe(se,{transportType:r}),await this.client.session.set(se,he),_&&await this.client.core.pairing.updateMetadata({topic:_,metadata:Q.metadata}),he=this.client.session.get(se)),(k=this.client.metadata.redirect)!=null&&k.linkMode&&(Ge=Q.metadata.redirect)!=null&&Ge.linkMode&&(je=Q.metadata.redirect)!=null&&je.universal&&e&&(this.client.core.addLinkModeSupportedApp(Q.metadata.redirect.universal),this.client.session.update(se,{transportType:P.link_mode})),Ue({auths:Fe,session:he})};this.events.once(le,pe),this.events.once(Re,ve);let Ie;try{if(i){const O=ye(\"wc_sessionAuthenticate\",K,te);this.client.core.history.set(_,O);const k=await this.client.core.crypto.encode(\"\",O,{type:Yt,encoding:ne});Ie=ue(e,_,k)}else await Promise.all([this.sendRequest({topic:_,method:\"wc_sessionAuthenticate\",params:K,expiry:t.expiry,throwOnFailedPublish:!0,clientRpcId:te}),this.sendRequest({topic:_,method:\"wc_sessionPropose\",params:q,expiry:N.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:q.id})])}catch(O){throw this.events.off(le,pe),this.events.off(Re,ve),O}return await this.setProposal(q.id,q),await this.setAuthRequest(te,{request:x(I({},K),{verifyContext:{}}),pairingTopic:_,transportType:r}),{uri:Ie??V,response:It}}),c(this,\"approveSessionAuthenticate\",async t=>{const{id:e,auths:s}=t,i=this.client.core.eventClient.createEvent({properties:{topic:e.toString(),trace:[z.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw i.setError(re.no_internet_connection),y}const r=this.getPendingAuthRequest(e);if(!r)throw i.setError(re.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${e}`);const n=r.transportType||P.relay;n===P.relay&&await this.confirmOnlineStateOrThrow();const a=r.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),p=Oe(a),h={type:Ve,receiverPublicKey:a,senderPublicKey:l},u=[],d=[];for(const y of s){if(!await Je({cacao:y,projectId:this.client.core.projectId})){i.setError(re.invalid_cacao);const v=L(\"SESSION_SETTLEMENT_FAILED\",\"Signature verification failed\");throw await this.sendError({id:e,topic:p,error:v,encodeOpts:h}),new Error(v.message)}i.addTrace(z.cacaos_verified);const{p:E}=y,_=Ae(E.resources),V=[Xe(E.iss)],C=Be(E.iss);if(_){const v=We(_),T=Ze(_);u.push(...v),V.push(...T)}for(const v of V)d.push(`${v}:${C}`)}const w=await this.client.core.crypto.generateSharedKey(l,a);i.addTrace(z.create_authenticated_session_topic);let m;if(u?.length>0){m={topic:w,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:a,metadata:r.requester.metadata},controller:a,expiry:b(X),authentication:s,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:\"irn\"},pairingTopic:r.pairingTopic,namespaces:et([...new Set(u)],[...new Set(d)]),transportType:n},i.addTrace(z.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:n})}catch(y){throw i.setError(re.subscribe_authenticated_session_topic_failure),y}i.addTrace(z.subscribe_authenticated_session_topic_success),await this.client.session.set(w,m),i.addTrace(z.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:r.pairingTopic,metadata:r.requester.metadata})}i.addTrace(z.publishing_authenticated_session_approve);try{await this.sendResult({topic:p,id:e,result:{cacaos:s,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(r.requester.metadata,n)})}catch(y){throw i.setError(re.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(e,{message:\"fulfilled\",code:0}),await this.client.core.pairing.activate({topic:r.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:i.eventId}),{session:m}}),c(this,\"rejectSessionAuthenticate\",async t=>{this.isInitialized();const{id:e,reason:s}=t,i=this.getPendingAuthRequest(e);if(!i)throw new Error(`Could not find pending auth request with id ${e}`);i.transportType===P.relay&&await this.confirmOnlineStateOrThrow();const r=i.requester.publicKey,n=await this.client.core.crypto.generateKeyPair(),a=Oe(r),l={type:Ve,receiverPublicKey:r,senderPublicKey:n};await this.sendError({id:e,topic:a,error:s,encodeOpts:l,rpcOpts:N.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(i.requester.metadata,i.transportType)}),await this.client.auth.requests.delete(e,{message:\"rejected\",code:0}),await this.deleteProposal(e)}),c(this,\"formatAuthMessage\",t=>{this.isInitialized();const{request:e,iss:s}=t;return Jt(e,s)}),c(this,\"processRelayMessageCache\",()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const t=this.relayMessageCache.shift();t&&await this.onRelayMessage(t)}catch(t){this.client.logger.error(t)}},50)}),c(this,\"cleanupDuplicatePairings\",async t=>{if(t.pairingTopic)try{const e=this.client.core.pairing.pairings.get(t.pairingTopic),s=this.client.core.pairing.pairings.getAll().filter(i=>{var r,n;return((r=i.peerMetadata)==null?void 0:r.url)&&((n=i.peerMetadata)==null?void 0:n.url)===t.peer.metadata.url&&i.topic&&i.topic!==e.topic});if(s.length===0)return;this.client.logger.info(`Cleaning up ${s.length} duplicate pairing(s)`),await Promise.all(s.map(i=>this.client.core.pairing.disconnect({topic:i.topic}))),this.client.logger.info(\"Duplicate pairings clean up finished\")}catch(e){this.client.logger.error(e)}}),c(this,\"deleteSession\",async t=>{var e;const{topic:s,expirerHasDeleted:i=!1,emitEvent:r=!0,id:n=0}=t,{self:a}=this.client.session.get(s);await this.client.core.relayer.unsubscribe(s),await this.client.session.delete(s,L(\"USER_DISCONNECTED\")),this.addToRecentlyDeleted(s,\"session\"),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(s)&&await this.client.core.crypto.deleteSymKey(s),i||this.client.core.expirer.del(s),this.client.core.storage.removeItem(Le).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===s&&this.deletePendingSessionRequest(l.id,L(\"USER_DISCONNECTED\"))}),s===((e=this.sessionRequestQueue.queue[0])==null?void 0:e.topic)&&(this.sessionRequestQueue.state=$.idle),r&&this.client.events.emit(\"session_delete\",{id:n,topic:s})}),c(this,\"deleteProposal\",async(t,e)=>{if(e)try{const s=this.client.proposal.get(t),i=this.client.core.eventClient.getEvent({topic:s.pairingTopic});i?.setError(H.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(t,L(\"USER_DISCONNECTED\")),e?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,\"proposal\")}),c(this,\"deletePendingSessionRequest\",async(t,e,s=!1)=>{await Promise.all([this.client.pendingRequest.delete(t,e),s?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,\"request\"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(i=>i.id!==t),s&&(this.sessionRequestQueue.state=$.idle,this.client.events.emit(\"session_request_expire\",{id:t}))}),c(this,\"deletePendingAuthRequest\",async(t,e,s=!1)=>{await Promise.all([this.client.auth.requests.delete(t,e),s?Promise.resolve():this.client.core.expirer.del(t)])}),c(this,\"setExpiry\",async(t,e)=>{this.client.session.keys.includes(t)&&(this.client.core.expirer.set(t,e),await this.client.session.update(t,{expiry:e}))}),c(this,\"setProposal\",async(t,e)=>{this.client.core.expirer.set(t,b(N.wc_sessionPropose.req.ttl)),await this.client.proposal.set(t,e)}),c(this,\"setAuthRequest\",async(t,e)=>{const{request:s,pairingTopic:i,transportType:r=P.relay}=e;this.client.core.expirer.set(t,s.expiryTimestamp),await this.client.auth.requests.set(t,{authPayload:s.authPayload,requester:s.requester,expiryTimestamp:s.expiryTimestamp,id:t,pairingTopic:i,verifyContext:s.verifyContext,transportType:r})}),c(this,\"setPendingSessionRequest\",async t=>{const{id:e,topic:s,params:i,verifyContext:r}=t,n=i.request.expiryTimestamp||b(N.wc_sessionRequest.req.ttl);this.client.core.expirer.set(e,n),await this.client.pendingRequest.set(e,{id:e,topic:s,params:i,verifyContext:r})}),c(this,\"sendRequest\",async t=>{const{topic:e,method:s,params:i,expiry:r,relayRpcId:n,clientRpcId:a,throwOnFailedPublish:l,appLink:p,tvf:h}=t,u=ye(s,i,a);let d;const w=!!p;try{const E=w?ne:de;d=await this.client.core.crypto.encode(e,u,{encoding:E})}catch(E){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${e} failed`),E}let m;if(mt.includes(s)){const E=W(JSON.stringify(u)),_=W(d);m=await this.client.core.verify.register({id:_,decryptedId:E})}const y=N[s].req;if(y.attestation=m,r&&(y.ttl=r),n&&(y.id=n),this.client.core.history.set(e,u),w){const E=ue(p,e,d);await global.Linking.openURL(E,this.client.name)}else{const E=N[s].req;r&&(E.ttl=r),n&&(E.id=n),E.tvf=x(I({},h),{correlationId:u.id}),l?(E.internal=x(I({},E.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(e,d,E)):this.client.core.relayer.publish(e,d,E).catch(_=>this.client.logger.error(_))}return u.id}),c(this,\"sendResult\",async t=>{const{id:e,topic:s,result:i,throwOnFailedPublish:r,encodeOpts:n,appLink:a}=t,l=fs(e,i);let p;const h=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const w=h?ne:de;p=await this.client.core.crypto.encode(s,l,x(I({},n||{}),{encoding:w}))}catch(w){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${s} failed`),w}let u,d;try{u=await this.client.core.history.get(s,e);const w=u.request;try{d=this.getTVFParams(e,w.params,i)}catch(m){this.client.logger.warn(`sendResult() -> getTVFParams() failed: ${m?.message}`)}}catch(w){throw this.client.logger.error(`sendResult() -> history.get(${s}, ${e}) failed`),w}if(h){const w=ue(a,s,p);await global.Linking.openURL(w,this.client.name)}else{const w=u.request.method,m=N[w].res;m.tvf=x(I({},d),{correlationId:e}),r?(m.internal=x(I({},m.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(s,p,m)):this.client.core.relayer.publish(s,p,m).catch(y=>this.client.logger.error(y))}await this.client.core.history.resolve(l)}),c(this,\"sendError\",async t=>{const{id:e,topic:s,error:i,encodeOpts:r,rpcOpts:n,appLink:a}=t,l=Ss(e,i);let p;const h=a&&typeof(global==null?void 0:global.Linking)<\"u\";try{const d=h?ne:de;p=await this.client.core.crypto.encode(s,l,x(I({},r||{}),{encoding:d}))}catch(d){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${s} failed`),d}let u;try{u=await this.client.core.history.get(s,e)}catch(d){throw this.client.logger.error(`sendError() -> history.get(${s}, ${e}) failed`),d}if(h){const d=ue(a,s,p);await global.Linking.openURL(d,this.client.name)}else{const d=u.request.method,w=n||N[d].res;this.client.core.relayer.publish(s,p,w)}await this.client.core.history.resolve(l)}),c(this,\"cleanup\",async()=>{const t=[],e=[];this.client.session.getAll().forEach(s=>{let i=!1;Z(s.expiry)&&(i=!0),this.client.core.crypto.keychain.has(s.topic)||(i=!0),i&&t.push(s.topic)}),this.client.proposal.getAll().forEach(s=>{Z(s.expiryTimestamp)&&e.push(s.id)}),await Promise.all([...t.map(s=>this.deleteSession({topic:s})),...e.map(s=>this.deleteProposal(s))])}),c(this,\"onProviderMessageEvent\",async t=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(t):await this.onRelayMessage(t)}),c(this,\"onRelayEventRequest\",async t=>{this.requestQueue.queue.push(t),await this.processRequestsQueue()}),c(this,\"processRequestsQueue\",async()=>{if(this.requestQueue.state===$.active){this.client.logger.info(\"Request queue already active, skipping...\");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=$.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(e){this.client.logger.warn(e)}}this.requestQueue.state=$.idle}),c(this,\"processRequest\",async t=>{const{topic:e,payload:s,attestation:i,transportType:r,encryptedId:n}=t,a=s.method;if(!this.shouldIgnorePairingRequest({topic:e,requestMethod:a}))switch(a){case\"wc_sessionPropose\":return await this.onSessionProposeRequest({topic:e,payload:s,attestation:i,encryptedId:n});case\"wc_sessionSettle\":return await this.onSessionSettleRequest(e,s);case\"wc_sessionUpdate\":return await this.onSessionUpdateRequest(e,s);case\"wc_sessionExtend\":return await this.onSessionExtendRequest(e,s);case\"wc_sessionPing\":return await this.onSessionPingRequest(e,s);case\"wc_sessionDelete\":return await this.onSessionDeleteRequest(e,s);case\"wc_sessionRequest\":return await this.onSessionRequest({topic:e,payload:s,attestation:i,encryptedId:n,transportType:r});case\"wc_sessionEvent\":return await this.onSessionEventRequest(e,s);case\"wc_sessionAuthenticate\":return await this.onSessionAuthenticateRequest({topic:e,payload:s,attestation:i,encryptedId:n,transportType:r});default:return this.client.logger.info(`Unsupported request method ${a}`)}}),c(this,\"onRelayEventResponse\",async t=>{const{topic:e,payload:s,transportType:i}=t,r=(await this.client.core.history.get(e,s.id)).request.method;switch(r){case\"wc_sessionPropose\":return this.onSessionProposeResponse(e,s,i);case\"wc_sessionSettle\":return this.onSessionSettleResponse(e,s);case\"wc_sessionUpdate\":return this.onSessionUpdateResponse(e,s);case\"wc_sessionExtend\":return this.onSessionExtendResponse(e,s);case\"wc_sessionPing\":return this.onSessionPingResponse(e,s);case\"wc_sessionRequest\":return this.onSessionRequestResponse(e,s);case\"wc_sessionAuthenticate\":return this.onSessionAuthenticateResponse(e,s);default:return this.client.logger.info(`Unsupported response method ${r}`)}}),c(this,\"onRelayEventUnknownPayload\",t=>{const{topic:e}=t,{message:s}=g(\"MISSING_OR_INVALID\",`Decoded payload on topic ${e} is not identifiable as a JSON-RPC request or a response.`);throw new Error(s)}),c(this,\"shouldIgnorePairingRequest\",t=>{const{topic:e,requestMethod:s}=t,i=this.expectedPairingMethodMap.get(e);return!i||i.includes(s)?!1:!!(i.includes(\"wc_sessionAuthenticate\")&&this.client.events.listenerCount(\"session_authenticate\")>0)}),c(this,\"onSessionProposeRequest\",async t=>{const{topic:e,payload:s,attestation:i,encryptedId:r}=t,{params:n,id:a}=s;try{const l=this.client.core.eventClient.getEvent({topic:e});this.client.events.listenerCount(\"session_proposal\")===0&&(console.warn(\"No listener for session_proposal event\"),l?.setError(Ot.proposal_listener_not_found)),this.isValidConnect(I({},s.params));const p=n.expiryTimestamp||b(N.wc_sessionPropose.req.ttl),h=I({id:a,pairingTopic:e,expiryTimestamp:p,attestation:i,encryptedId:r},n);await this.setProposal(a,h);const u=await this.getVerifyContext({attestationId:i,hash:W(JSON.stringify(s)),encryptedId:r,metadata:h.proposer.metadata});l?.addTrace(bt.emit_session_proposal),this.client.events.emit(\"session_proposal\",{id:a,params:h,verifyContext:u})}catch(l){await this.sendError({id:a,topic:e,error:l,rpcOpts:N.wc_sessionPropose.autoReject}),this.client.logger.error(l)}}),c(this,\"onSessionProposeResponse\",async(t,e,s)=>{const{id:i}=e;if(j(e)){const{result:r}=e;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",result:r});const n=this.client.proposal.get(i);this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",proposal:n});const a=n.proposer.publicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",selfPublicKey:a});const l=r.responderPublicKey;this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",peerPublicKey:l});const p=await this.client.core.crypto.generateSharedKey(a,l);this.pendingSessions.set(i,{sessionTopic:p,pairingTopic:t,proposalId:i,publicKey:a});const h=await this.client.core.relayer.subscribe(p,{transportType:s});this.client.logger.trace({type:\"method\",method:\"onSessionProposeResponse\",subscriptionId:h}),await this.client.core.pairing.activate({topic:t})}else if(F(e)){await this.deleteProposal(i);const r=R(\"session_connect\",i);if(this.events.listenerCount(r)===0)throw new Error(`emitting ${r} without any listeners, 954`);this.events.emit(r,{error:e.error})}}),c(this,\"onSessionSettleRequest\",async(t,e)=>{const{id:s,params:i}=e;try{this.isValidSessionSettleRequest(i);const{relay:r,controller:n,expiry:a,namespaces:l,sessionProperties:p,scopedProperties:h,sessionConfig:u}=e.params,d=[...this.pendingSessions.values()].find(y=>y.sessionTopic===t);if(!d)return this.client.logger.error(`Pending session not found for topic ${t}`);const w=this.client.proposal.get(d.proposalId),m=x(I(I(I({topic:t,relay:r,expiry:a,namespaces:l,acknowledged:!0,pairingTopic:d.pairingTopic,requiredNamespaces:w.requiredNamespaces,optionalNamespaces:w.optionalNamespaces,controller:n.publicKey,self:{publicKey:d.publicKey,metadata:this.client.metadata},peer:{publicKey:n.publicKey,metadata:n.metadata}},p&&{sessionProperties:p}),h&&{scopedProperties:h}),u&&{sessionConfig:u}),{transportType:P.relay});await this.client.session.set(m.topic,m),await this.setExpiry(m.topic,m.expiry),await this.client.core.pairing.updateMetadata({topic:d.pairingTopic,metadata:m.peer.metadata}),this.client.events.emit(\"session_connect\",{session:m}),this.events.emit(R(\"session_connect\",d.proposalId),{session:m}),this.pendingSessions.delete(d.proposalId),this.deleteProposal(d.proposalId,!1),this.cleanupDuplicatePairings(m),await this.sendResult({id:e.id,topic:t,result:!0})}catch(r){await this.sendError({id:s,topic:t,error:r}),this.client.logger.error(r)}}),c(this,\"onSessionSettleResponse\",async(t,e)=>{const{id:s}=e;j(e)?(await this.client.session.update(t,{acknowledged:!0}),this.events.emit(R(\"session_approve\",s),{})):F(e)&&(await this.client.session.delete(t,L(\"USER_DISCONNECTED\")),this.events.emit(R(\"session_approve\",s),{error:e.error}))}),c(this,\"onSessionUpdateRequest\",async(t,e)=>{const{params:s,id:i}=e;try{const r=`${t}_session_update`,n=oe.get(r);if(n&&this.isRequestOutOfSync(n,i)){this.client.logger.warn(`Discarding out of sync request - ${i}`),this.sendError({id:i,topic:t,error:L(\"INVALID_UPDATE_REQUEST\")});return}this.isValidUpdate(I({topic:t},s));try{oe.set(r,i),await this.client.session.update(t,{namespaces:s.namespaces}),await this.sendResult({id:i,topic:t,result:!0})}catch(a){throw oe.delete(r),a}this.client.events.emit(\"session_update\",{id:i,topic:t,params:s})}catch(r){await this.sendError({id:i,topic:t,error:r}),this.client.logger.error(r)}}),c(this,\"isRequestOutOfSync\",(t,e)=>e.toString().slice(0,-3){const{id:s}=e,i=R(\"session_update\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);j(e)?this.events.emit(R(\"session_update\",s),{}):F(e)&&this.events.emit(R(\"session_update\",s),{error:e.error})}),c(this,\"onSessionExtendRequest\",async(t,e)=>{const{id:s}=e;try{this.isValidExtend({topic:t}),await this.setExpiry(t,b(X)),await this.sendResult({id:s,topic:t,result:!0}),this.client.events.emit(\"session_extend\",{id:s,topic:t})}catch(i){await this.sendError({id:s,topic:t,error:i}),this.client.logger.error(i)}}),c(this,\"onSessionExtendResponse\",(t,e)=>{const{id:s}=e,i=R(\"session_extend\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);j(e)?this.events.emit(R(\"session_extend\",s),{}):F(e)&&this.events.emit(R(\"session_extend\",s),{error:e.error})}),c(this,\"onSessionPingRequest\",async(t,e)=>{const{id:s}=e;try{this.isValidPing({topic:t}),await this.sendResult({id:s,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(\"session_ping\",{id:s,topic:t})}catch(i){await this.sendError({id:s,topic:t,error:i}),this.client.logger.error(i)}}),c(this,\"onSessionPingResponse\",(t,e)=>{const{id:s}=e,i=R(\"session_ping\",s);setTimeout(()=>{if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners 2176`);j(e)?this.events.emit(R(\"session_ping\",s),{}):F(e)&&this.events.emit(R(\"session_ping\",s),{error:e.error})},500)}),c(this,\"onSessionDeleteRequest\",async(t,e)=>{const{id:s}=e;try{this.isValidDisconnect({topic:t,reason:e.params}),Promise.all([new Promise(i=>{this.client.core.relayer.once(ze.publish,async()=>{i(await this.deleteSession({topic:t,id:s}))})}),this.sendResult({id:s,topic:t,result:!0}),this.cleanupPendingSentRequestsForTopic({topic:t,error:L(\"USER_DISCONNECTED\")})]).catch(i=>this.client.logger.error(i))}catch(i){this.client.logger.error(i)}}),c(this,\"onSessionRequest\",async t=>{var e,s,i;const{topic:r,payload:n,attestation:a,encryptedId:l,transportType:p}=t,{id:h,params:u}=n;try{await this.isValidRequest(I({topic:r},u));const d=this.client.session.get(r),w=await this.getVerifyContext({attestationId:a,hash:W(JSON.stringify(ye(\"wc_sessionRequest\",u,h))),encryptedId:l,metadata:d.peer.metadata,transportType:p}),m={id:h,topic:r,params:u,verifyContext:w};await this.setPendingSessionRequest(m),p===P.link_mode&&(e=d.peer.metadata.redirect)!=null&&e.universal&&this.client.core.addLinkModeSupportedApp((s=d.peer.metadata.redirect)==null?void 0:s.universal),(i=this.client.signConfig)!=null&&i.disableRequestQueue?this.emitSessionRequest(m):(this.addSessionRequestToSessionRequestQueue(m),this.processSessionRequestQueue())}catch(d){await this.sendError({id:h,topic:r,error:d}),this.client.logger.error(d)}}),c(this,\"onSessionRequestResponse\",(t,e)=>{const{id:s}=e,i=R(\"session_request\",s);if(this.events.listenerCount(i)===0)throw new Error(`emitting ${i} without any listeners`);j(e)?this.events.emit(R(\"session_request\",s),{result:e.result}):F(e)&&this.events.emit(R(\"session_request\",s),{error:e.error})}),c(this,\"onSessionEventRequest\",async(t,e)=>{const{id:s,params:i}=e;try{const r=`${t}_session_event_${i.event.name}`,n=oe.get(r);if(n&&this.isRequestOutOfSync(n,s)){this.client.logger.info(`Discarding out of sync request - ${s}`);return}this.isValidEmit(I({topic:t},i)),this.client.events.emit(\"session_event\",{id:s,topic:t,params:i}),oe.set(r,s)}catch(r){await this.sendError({id:s,topic:t,error:r}),this.client.logger.error(r)}}),c(this,\"onSessionAuthenticateResponse\",(t,e)=>{const{id:s}=e;this.client.logger.trace({type:\"method\",method:\"onSessionAuthenticateResponse\",topic:t,payload:e}),j(e)?this.events.emit(R(\"session_request\",s),{result:e.result}):F(e)&&this.events.emit(R(\"session_request\",s),{error:e.error})}),c(this,\"onSessionAuthenticateRequest\",async t=>{var e;const{topic:s,payload:i,attestation:r,encryptedId:n,transportType:a}=t;try{const{requester:l,authPayload:p,expiryTimestamp:h}=i.params,u=await this.getVerifyContext({attestationId:r,hash:W(JSON.stringify(i)),encryptedId:n,metadata:l.metadata,transportType:a}),d={requester:l,pairingTopic:s,id:i.id,authPayload:p,verifyContext:u,expiryTimestamp:h};await this.setAuthRequest(i.id,{request:d,pairingTopic:s,transportType:a}),a===P.link_mode&&(e=l.metadata.redirect)!=null&&e.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit(\"session_authenticate\",{topic:s,params:i.params,id:i.id,verifyContext:u})}catch(l){this.client.logger.error(l);const p=i.params.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),u=this.getAppLinkIfEnabled(i.params.requester.metadata,a),d={type:Ve,receiverPublicKey:p,senderPublicKey:h};await this.sendError({id:i.id,topic:s,error:l,encodeOpts:d,rpcOpts:N.wc_sessionAuthenticate.autoReject,appLink:u})}}),c(this,\"addSessionRequestToSessionRequestQueue\",t=>{this.sessionRequestQueue.queue.push(t)}),c(this,\"cleanupAfterResponse\",t=>{this.deletePendingSessionRequest(t.response.id,{message:\"fulfilled\",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=$.idle,this.processSessionRequestQueue()},pt(this.requestQueueDelay))}),c(this,\"cleanupPendingSentRequestsForTopic\",({topic:t,error:e})=>{const s=this.client.core.history.pending;s.length>0&&s.filter(i=>i.topic===t&&i.request.method===\"wc_sessionRequest\").forEach(i=>{const r=i.request.id,n=R(\"session_request\",r);if(this.events.listenerCount(n)===0)throw new Error(`emitting ${n} without any listeners`);this.events.emit(R(\"session_request\",i.request.id),{error:e})})}),c(this,\"processSessionRequestQueue\",()=>{if(this.sessionRequestQueue.state===$.active){this.client.logger.info(\"session request queue is already active.\");return}const t=this.sessionRequestQueue.queue[0];if(!t){this.client.logger.info(\"session request queue is empty.\");return}try{this.emitSessionRequest(t)}catch(e){this.client.logger.error(e)}}),c(this,\"emitSessionRequest\",t=>{if(this.emittedSessionRequests.has(t.id)){this.client.logger.warn({id:t.id},`Skipping emitting \\`session_request\\` event for duplicate request. id: ${t.id}`);return}this.sessionRequestQueue.state=$.active,this.emittedSessionRequests.add(t.id),this.client.events.emit(\"session_request\",t)}),c(this,\"onPairingCreated\",t=>{if(t.methods&&this.expectedPairingMethodMap.set(t.topic,t.methods),t.active)return;const e=this.client.proposal.getAll().find(s=>s.pairingTopic===t.topic);e&&this.onSessionProposeRequest({topic:t.topic,payload:ye(\"wc_sessionPropose\",x(I({},e),{requiredNamespaces:e.requiredNamespaces,optionalNamespaces:e.optionalNamespaces,relays:e.relays,proposer:e.proposer,sessionProperties:e.sessionProperties,scopedProperties:e.scopedProperties}),e.id),attestation:e.attestation,encryptedId:e.encryptedId})}),c(this,\"isValidConnect\",async t=>{if(!M(t)){const{message:l}=g(\"MISSING_OR_INVALID\",`connect() params: ${JSON.stringify(t)}`);throw new Error(l)}const{pairingTopic:e,requiredNamespaces:s,optionalNamespaces:i,sessionProperties:r,scopedProperties:n,relays:a}=t;if(J(e)||await this.isValidPairingTopic(e),!Xt(a,!0)){const{message:l}=g(\"MISSING_OR_INVALID\",`connect() relays: ${a}`);throw new Error(l)}if(!J(s)&&tt(s)!==0){const l=\"requiredNamespaces are deprecated and are automatically assigned to optionalNamespaces\";[\"fatal\",\"error\",\"silent\"].includes(this.client.logger.level)?console.warn(l):this.client.logger.warn(l),this.validateNamespaces(s,\"requiredNamespaces\")}if(!J(i)&&tt(i)!==0&&this.validateNamespaces(i,\"optionalNamespaces\"),J(r)||this.validateSessionProps(r,\"sessionProperties\"),!J(n)){this.validateSessionProps(n,\"scopedProperties\");const l=Object.keys(s||{}).concat(Object.keys(i||{}));if(!Object.keys(n).every(p=>l.includes(p.split(\":\")[0])))throw new Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(n)}, required/optional namespaces: ${JSON.stringify(l)}`)}}),c(this,\"validateNamespaces\",(t,e)=>{const s=Bt(t,\"connect()\",e);if(s)throw new Error(s.message)}),c(this,\"isValidApprove\",async t=>{if(!M(t))throw new Error(g(\"MISSING_OR_INVALID\",`approve() params: ${t}`).message);const{id:e,namespaces:s,relayProtocol:i,sessionProperties:r,scopedProperties:n}=t;this.checkRecentlyDeleted(e),await this.isValidProposalId(e);const a=this.client.proposal.get(e),l=xe(s,\"approve()\");if(l)throw new Error(l.message);const p=st(a.requiredNamespaces,s,\"approve()\");if(p)throw new Error(p.message);if(!Y(i,!0)){const{message:h}=g(\"MISSING_OR_INVALID\",`approve() relayProtocol: ${i}`);throw new Error(h)}if(J(r)||this.validateSessionProps(r,\"sessionProperties\"),!J(n)){this.validateSessionProps(n,\"scopedProperties\");const h=new Set(Object.keys(s));if(!Object.keys(n).every(u=>h.has(u.split(\":\")[0])))throw new Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(n)}, approved namespaces: ${Array.from(h).join(\", \")}`)}}),c(this,\"isValidReject\",async t=>{if(!M(t)){const{message:i}=g(\"MISSING_OR_INVALID\",`reject() params: ${t}`);throw new Error(i)}const{id:e,reason:s}=t;if(this.checkRecentlyDeleted(e),await this.isValidProposalId(e),!Wt(s)){const{message:i}=g(\"MISSING_OR_INVALID\",`reject() reason: ${JSON.stringify(s)}`);throw new Error(i)}}),c(this,\"isValidSessionSettleRequest\",t=>{if(!M(t)){const{message:l}=g(\"MISSING_OR_INVALID\",`onSessionSettleRequest() params: ${t}`);throw new Error(l)}const{relay:e,controller:s,namespaces:i,expiry:r}=t;if(!Zt(e)){const{message:l}=g(\"MISSING_OR_INVALID\",\"onSessionSettleRequest() relay protocol should be a string\");throw new Error(l)}const n=es(s,\"onSessionSettleRequest()\");if(n)throw new Error(n.message);const a=xe(i,\"onSessionSettleRequest()\");if(a)throw new Error(a.message);if(Z(r)){const{message:l}=g(\"EXPIRED\",\"onSessionSettleRequest()\");throw new Error(l)}}),c(this,\"isValidUpdate\",async t=>{if(!M(t)){const{message:a}=g(\"MISSING_OR_INVALID\",`update() params: ${t}`);throw new Error(a)}const{topic:e,namespaces:s}=t;this.checkRecentlyDeleted(e),await this.isValidSessionTopic(e);const i=this.client.session.get(e),r=xe(s,\"update()\");if(r)throw new Error(r.message);const n=st(i.requiredNamespaces,s,\"update()\");if(n)throw new Error(n.message)}),c(this,\"isValidExtend\",async t=>{if(!M(t)){const{message:s}=g(\"MISSING_OR_INVALID\",`extend() params: ${t}`);throw new Error(s)}const{topic:e}=t;this.checkRecentlyDeleted(e),await this.isValidSessionTopic(e)}),c(this,\"isValidRequest\",async t=>{if(!M(t)){const{message:a}=g(\"MISSING_OR_INVALID\",`request() params: ${t}`);throw new Error(a)}const{topic:e,request:s,chainId:i,expiry:r}=t;this.checkRecentlyDeleted(e),await this.isValidSessionTopic(e);const{namespaces:n}=this.client.session.get(e);if(!it(n,i)){const{message:a}=g(\"MISSING_OR_INVALID\",`request() chainId: ${i}`);throw new Error(a)}if(!ts(s)){const{message:a}=g(\"MISSING_OR_INVALID\",`request() ${JSON.stringify(s)}`);throw new Error(a)}if(!ss(n,i,s.method)){const{message:a}=g(\"MISSING_OR_INVALID\",`request() method: ${s.method}`);throw new Error(a)}if(r&&!is(r,_e)){const{message:a}=g(\"MISSING_OR_INVALID\",`request() expiry: ${r}. Expiry must be a number (in seconds) between ${_e.min} and ${_e.max}`);throw new Error(a)}}),c(this,\"isValidRespond\",async t=>{var e;if(!M(t)){const{message:r}=g(\"MISSING_OR_INVALID\",`respond() params: ${t}`);throw new Error(r)}const{topic:s,response:i}=t;try{await this.isValidSessionTopic(s)}catch(r){throw(e=t?.response)!=null&&e.id&&this.cleanupAfterResponse(t),r}if(!rs(i)){const{message:r}=g(\"MISSING_OR_INVALID\",`respond() response: ${JSON.stringify(i)}`);throw new Error(r)}}),c(this,\"isValidPing\",async t=>{if(!M(t)){const{message:s}=g(\"MISSING_OR_INVALID\",`ping() params: ${t}`);throw new Error(s)}const{topic:e}=t;await this.isValidSessionOrPairingTopic(e)}),c(this,\"isValidEmit\",async t=>{if(!M(t)){const{message:n}=g(\"MISSING_OR_INVALID\",`emit() params: ${t}`);throw new Error(n)}const{topic:e,event:s,chainId:i}=t;await this.isValidSessionTopic(e);const{namespaces:r}=this.client.session.get(e);if(!it(r,i)){const{message:n}=g(\"MISSING_OR_INVALID\",`emit() chainId: ${i}`);throw new Error(n)}if(!ns(s)){const{message:n}=g(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}if(!os(r,i,s.name)){const{message:n}=g(\"MISSING_OR_INVALID\",`emit() event: ${JSON.stringify(s)}`);throw new Error(n)}}),c(this,\"isValidDisconnect\",async t=>{if(!M(t)){const{message:s}=g(\"MISSING_OR_INVALID\",`disconnect() params: ${t}`);throw new Error(s)}const{topic:e}=t;await this.isValidSessionOrPairingTopic(e)}),c(this,\"isValidAuthenticate\",t=>{const{chains:e,uri:s,domain:i,nonce:r}=t;if(!Array.isArray(e)||e.length===0)throw new Error(\"chains is required and must be a non-empty array\");if(!Y(s,!1))throw new Error(\"uri is required parameter\");if(!Y(i,!1))throw new Error(\"domain is required parameter\");if(!Y(r,!1))throw new Error(\"nonce is required parameter\");if([...new Set(e.map(a=>be(a).namespace))].length>1)throw new Error(\"Multi-namespace requests are not supported. Please request single namespace only.\");const{namespace:n}=be(e[0]);if(n!==\"eip155\")throw new Error(\"Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.\")}),c(this,\"getVerifyContext\",async t=>{const{attestationId:e,hash:s,encryptedId:i,metadata:r,transportType:n}=t,a={verified:{verifyUrl:r.verifyUrl||At,validation:\"UNKNOWN\",origin:r.url||\"\"}};try{if(n===P.link_mode){const p=this.getAppLinkIfEnabled(r,n);return a.verified.validation=p&&new URL(p).origin===new URL(r.url).origin?\"VALID\":\"INVALID\",a}const l=await this.client.core.verify.resolve({attestationId:e,hash:s,encryptedId:i,verifyUrl:r.verifyUrl});l&&(a.verified.origin=l.origin,a.verified.isScam=l.isScam,a.verified.validation=l.origin===new URL(r.url).origin?\"VALID\":\"INVALID\")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(a)}`),a}),c(this,\"validateSessionProps\",(t,e)=>{Object.values(t).forEach((s,i)=>{if(s==null){const{message:r}=g(\"MISSING_OR_INVALID\",`${e} must contain an existing value for each key. Received: ${s} for key ${Object.keys(t)[i]}`);throw new Error(r)}})}),c(this,\"getPendingAuthRequest\",t=>{const e=this.client.auth.requests.get(t);return typeof e==\"object\"?e:void 0}),c(this,\"addToRecentlyDeleted\",(t,e)=>{if(this.recentlyDeletedMap.set(t,e),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let s=0;const i=this.recentlyDeletedLimit/2;for(const r of this.recentlyDeletedMap.keys()){if(s++>=i)break;this.recentlyDeletedMap.delete(r)}}}),c(this,\"checkRecentlyDeleted\",t=>{const e=this.recentlyDeletedMap.get(t);if(e){const{message:s}=g(\"MISSING_OR_INVALID\",`Record was recently deleted - ${e}: ${t}`);throw new Error(s)}}),c(this,\"isLinkModeEnabled\",(t,e)=>{var s,i,r,n,a,l,p,h,u;return!t||e!==P.link_mode?!1:((i=(s=this.client.metadata)==null?void 0:s.redirect)==null?void 0:i.linkMode)===!0&&((n=(r=this.client.metadata)==null?void 0:r.redirect)==null?void 0:n.universal)!==void 0&&((l=(a=this.client.metadata)==null?void 0:a.redirect)==null?void 0:l.universal)!==\"\"&&((p=t?.redirect)==null?void 0:p.universal)!==void 0&&((h=t?.redirect)==null?void 0:h.universal)!==\"\"&&((u=t?.redirect)==null?void 0:u.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(t.redirect.universal)&&typeof(global==null?void 0:global.Linking)<\"u\"}),c(this,\"getAppLinkIfEnabled\",(t,e)=>{var s;return this.isLinkModeEnabled(t,e)?(s=t?.redirect)==null?void 0:s.universal:void 0}),c(this,\"handleLinkModeMessage\",({url:t})=>{if(!t||!t.includes(\"wc_ev\")||!t.includes(\"topic\"))return;const e=rt(t,\"topic\")||\"\",s=decodeURIComponent(rt(t,\"wc_ev\")||\"\"),i=this.client.session.keys.includes(e);i&&this.client.session.update(e,{transportType:P.link_mode}),this.client.core.dispatchEnvelope({topic:e,message:s,sessionExists:i})}),c(this,\"registerLinkModeListeners\",async()=>{var t;if(as()||cs()&&(t=this.client.metadata.redirect)!=null&&t.linkMode){const e=global==null?void 0:global.Linking;if(typeof e<\"u\"){e.addEventListener(\"url\",this.handleLinkModeMessage,this.client.name);const s=await e.getInitialURL();s&&setTimeout(()=>{this.handleLinkModeMessage({url:s})},50)}}}),c(this,\"getTVFParams\",(t,e,s)=>{var i,r,n;if(!((i=e.request)!=null&&i.method))return{};const a={correlationId:t,rpcMethods:[e.request.method],chainId:e.chainId};try{const l=this.extractTxHashesFromResult(e.request,s);a.txHashes=l,a.contractAddresses=this.isValidContractData(e.request.params)?[(n=(r=e.request.params)==null?void 0:r[0])==null?void 0:n.to]:[]}catch(l){this.client.logger.warn(\"Error getting TVF params\",l)}return a}),c(this,\"isValidContractData\",t=>{var e;if(!t)return!1;try{const s=t?.data||((e=t?.[0])==null?void 0:e.data);if(!s.startsWith(\"0x\"))return!1;const i=s.slice(2);return/^[0-9a-fA-F]*$/.test(i)?i.length%2===0:!1}catch{}return!1}),c(this,\"extractTxHashesFromResult\",(t,e)=>{var s;try{if(!e)return[];const i=t.method,r=gt[i];if(i===\"sui_signTransaction\")return[ls(e.transactionBytes)];if(i===\"near_signTransaction\")return[nt(e)];if(i===\"near_signTransactions\")return e.map(a=>nt(a));if(i===\"xrpl_signTransactionFor\"||i===\"xrpl_signTransaction\")return[(s=e.tx_json)==null?void 0:s.hash];if(i===\"polkadot_signTransaction\")return[ps({transaction:t.params.transactionPayload,signature:e.signature})];if(i===\"algo_signTxn\")return ot(e)?e.map(a=>at(a)):[at(e)];if(i===\"cosmos_signDirect\")return[hs(e)];if(typeof e==\"string\")return[e];const n=e[r.key];if(ot(n))return i===\"solana_signAllTransactions\"?n.map(a=>ds(a)):n;if(typeof n==\"string\")return[n]}catch(i){this.client.logger.warn(\"Error extracting tx hashes from result\",i)}return[]})}async processPendingMessageEvents(){try{const o=this.client.session.keys,t=this.client.core.relayer.messages.getWithoutAck(o);for(const[e,s]of Object.entries(t))for(const i of s)try{await this.onProviderMessageEvent({topic:e,message:i,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${e}, message: ${i}`)}}catch(o){this.client.logger.warn(\"processPendingMessageEvents failed\",o)}}isInitialized(){if(!this.initialized){const{message:o}=g(\"NOT_INITIALIZED\",this.name);throw new Error(o)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(ze.message,o=>{this.onProviderMessageEvent(o)})}async onRelayMessage(o){const{topic:t,message:e,attestation:s,transportType:i}=o,{publicKey:r}=this.client.auth.authKeys.keys.includes(ce)?this.client.auth.authKeys.get(ce):{responseTopic:void 0,publicKey:void 0};try{const n=await this.client.core.crypto.decode(t,e,{receiverPublicKey:r,encoding:i===P.link_mode?ne:de});_s(n)?(this.client.core.history.set(t,n),await this.onRelayEventRequest({topic:t,payload:n,attestation:s,transportType:i,encryptedId:W(e)})):Es(n)?(await this.client.core.history.resolve(n),await this.onRelayEventResponse({topic:t,payload:n,transportType:i}),this.client.core.history.delete(t,n.id)):await this.onRelayEventUnknownPayload({topic:t,payload:n,transportType:i}),await this.client.core.relayer.messages.ack(t,e)}catch(n){this.client.logger.error(n)}}registerExpirerEvents(){this.client.core.expirer.on(Pt.expired,async o=>{const{topic:t,id:e}=Kt(o.target);if(e&&this.client.pendingRequest.keys.includes(e))return await this.deletePendingSessionRequest(e,g(\"EXPIRED\"),!0);if(e&&this.client.auth.requests.keys.includes(e))return await this.deletePendingAuthRequest(e,g(\"EXPIRED\"),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit(\"session_expire\",{topic:t})):e&&(await this.deleteProposal(e,!0),this.client.events.emit(\"proposal_expire\",{id:e}))})}registerPairingEvents(){this.client.core.pairing.events.on(Ye.create,o=>this.onPairingCreated(o)),this.client.core.pairing.events.on(Ye.delete,o=>{this.addToRecentlyDeleted(o.topic,\"pairing\")})}isValidPairingTopic(o){if(!Y(o,!1)){const{message:t}=g(\"MISSING_OR_INVALID\",`pairing topic should be a string: ${o}`);throw new Error(t)}if(!this.client.core.pairing.pairings.keys.includes(o)){const{message:t}=g(\"NO_MATCHING_KEY\",`pairing topic doesn't exist: ${o}`);throw new Error(t)}if(Z(this.client.core.pairing.pairings.get(o).expiry)){const{message:t}=g(\"EXPIRED\",`pairing topic: ${o}`);throw new Error(t)}}async isValidSessionTopic(o){if(!Y(o,!1)){const{message:t}=g(\"MISSING_OR_INVALID\",`session topic should be a string: ${o}`);throw new Error(t)}if(this.checkRecentlyDeleted(o),!this.client.session.keys.includes(o)){const{message:t}=g(\"NO_MATCHING_KEY\",`session topic doesn't exist: ${o}`);throw new Error(t)}if(Z(this.client.session.get(o).expiry)){await this.deleteSession({topic:o});const{message:t}=g(\"EXPIRED\",`session topic: ${o}`);throw new Error(t)}if(!this.client.core.crypto.keychain.has(o)){const{message:t}=g(\"MISSING_OR_INVALID\",`session topic does not exist in keychain: ${o}`);throw await this.deleteSession({topic:o}),new Error(t)}}async isValidSessionOrPairingTopic(o){if(this.checkRecentlyDeleted(o),this.client.session.keys.includes(o))await this.isValidSessionTopic(o);else if(this.client.core.pairing.pairings.keys.includes(o))this.isValidPairingTopic(o);else if(Y(o,!1)){const{message:t}=g(\"NO_MATCHING_KEY\",`session or pairing topic doesn't exist: ${o}`);throw new Error(t)}else{const{message:t}=g(\"MISSING_OR_INVALID\",`session or pairing topic should be a string: ${o}`);throw new Error(t)}}async isValidProposalId(o){if(!Ut(o)){const{message:t}=g(\"MISSING_OR_INVALID\",`proposal id should be a number: ${o}`);throw new Error(t)}if(!this.client.proposal.keys.includes(o)){const{message:t}=g(\"NO_MATCHING_KEY\",`proposal id doesn't exist: ${o}`);throw new Error(t)}if(Z(this.client.proposal.get(o).expiryTimestamp)){await this.deleteProposal(o);const{message:t}=g(\"EXPIRED\",`proposal id: ${o}`);throw new Error(t)}}}class ks extends B{constructor(o,t){super(o,t,ht,me),this.core=o,this.logger=t}}class vt extends B{constructor(o,t){super(o,t,dt,me),this.core=o,this.logger=t}}class Ds extends B{constructor(o,t){super(o,t,yt,me,e=>e.id),this.core=o,this.logger=t}}class Ls extends B{constructor(o,t){super(o,t,Et,ae,()=>ce),this.core=o,this.logger=t}}class Ms extends B{constructor(o,t){super(o,t,ft,ae),this.core=o,this.logger=t}}class $s extends B{constructor(o,t){super(o,t,St,ae,e=>e.id),this.core=o,this.logger=t}}var Ks=Object.defineProperty,Us=(S,o,t)=>o in S?Ks(S,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):S[o]=t,Ke=(S,o,t)=>Us(S,typeof o!=\"symbol\"?o+\"\":o,t);class Gs{constructor(o,t){this.core=o,this.logger=t,Ke(this,\"authKeys\"),Ke(this,\"pairingTopics\"),Ke(this,\"requests\"),this.authKeys=new Ls(this.core,this.logger),this.pairingTopics=new Ms(this.core,this.logger),this.requests=new $s(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}var js=Object.defineProperty,Fs=(S,o,t)=>o in S?js(S,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):S[o]=t,f=(S,o,t)=>Fs(S,typeof o!=\"symbol\"?o+\"\":o,t);class Ee extends Mt{constructor(o){super(o),f(this,\"protocol\",Ce),f(this,\"version\",ke),f(this,\"name\",we.name),f(this,\"metadata\"),f(this,\"core\"),f(this,\"logger\"),f(this,\"events\",new ys),f(this,\"engine\"),f(this,\"session\"),f(this,\"proposal\"),f(this,\"pendingRequest\"),f(this,\"auth\"),f(this,\"signConfig\"),f(this,\"on\",(e,s)=>this.events.on(e,s)),f(this,\"once\",(e,s)=>this.events.once(e,s)),f(this,\"off\",(e,s)=>this.events.off(e,s)),f(this,\"removeListener\",(e,s)=>this.events.removeListener(e,s)),f(this,\"removeAllListeners\",e=>this.events.removeAllListeners(e)),f(this,\"connect\",async e=>{try{return await this.engine.connect(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"pair\",async e=>{try{return await this.engine.pair(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"approve\",async e=>{try{return await this.engine.approve(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"reject\",async e=>{try{return await this.engine.reject(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"update\",async e=>{try{return await this.engine.update(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"extend\",async e=>{try{return await this.engine.extend(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"request\",async e=>{try{return await this.engine.request(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"respond\",async e=>{try{return await this.engine.respond(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"ping\",async e=>{try{return await this.engine.ping(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"emit\",async e=>{try{return await this.engine.emit(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"disconnect\",async e=>{try{return await this.engine.disconnect(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"find\",e=>{try{return this.engine.find(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"getPendingSessionRequests\",()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}}),f(this,\"authenticate\",async(e,s)=>{try{return await this.engine.authenticate(e,s)}catch(i){throw this.logger.error(i.message),i}}),f(this,\"formatAuthMessage\",e=>{try{return this.engine.formatAuthMessage(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"approveSessionAuthenticate\",async e=>{try{return await this.engine.approveSessionAuthenticate(e)}catch(s){throw this.logger.error(s.message),s}}),f(this,\"rejectSessionAuthenticate\",async e=>{try{return await this.engine.rejectSessionAuthenticate(e)}catch(s){throw this.logger.error(s.message),s}}),this.name=o?.name||we.name,this.metadata=us(o?.metadata),this.signConfig=o?.signConfig;const t=typeof o?.logger<\"u\"&&typeof o?.logger!=\"string\"?o.logger:Vt(Ct({level:o?.logger||we.logger}));this.core=o?.core||new xt(o),this.logger=kt(t,this.name),this.session=new vt(this.core,this.logger),this.proposal=new ks(this.core,this.logger),this.pendingRequest=new Ds(this.core,this.logger),this.engine=new Cs(this),this.auth=new Gs(this.core,this.logger)}static async init(o){const t=new Ee(o);return await t.initialize(),t}get context(){return Dt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace(\"Initialized\");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info(\"SignClient Initialization Success\")}catch(o){throw this.logger.info(\"SignClient Initialization Failure\"),this.logger.error(o.message),o}}}const Qs=vt,Hs=Ee;export{_t as AUTH_CONTEXT,Et as AUTH_KEYS_CONTEXT,ft as AUTH_PAIRING_TOPIC_CONTEXT,wt as AUTH_PROTOCOL,ce as AUTH_PUBLIC_KEY_NAME,St as AUTH_REQUEST_CONTEXT,ae as AUTH_STORAGE_PREFIX,Ns as AUTH_VERSION,ut as ENGINE_CONTEXT,$ as ENGINE_QUEUE_STATES,N as ENGINE_RPC_OPTS,Ts as HISTORY_CONTEXT,Is as HISTORY_EVENTS,qs as HISTORY_STORAGE_VERSION,mt as METHODS_TO_VERIFY,ht as PROPOSAL_CONTEXT,Ps as PROPOSAL_EXPIRY,Me as PROPOSAL_EXPIRY_MESSAGE,yt as REQUEST_CONTEXT,dt as SESSION_CONTEXT,X as SESSION_EXPIRY,_e as SESSION_REQUEST_EXPIRY_BOUNDARIES,De as SIGN_CLIENT_CONTEXT,we as SIGN_CLIENT_DEFAULT,Rs as SIGN_CLIENT_EVENTS,Ce as SIGN_CLIENT_PROTOCOL,vs as SIGN_CLIENT_STORAGE_OPTIONS,me as SIGN_CLIENT_STORAGE_PREFIX,ke as SIGN_CLIENT_VERSION,Qs as SessionStore,Hs as SignClient,gt as TVF_METHODS,Le as WALLETCONNECT_DEEPLINK_CHOICE,Ee as default};\n//# sourceMappingURL=index.es.js.map\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import{EventEmitter as m}from\"events\";import o from\"cross-fetch\";import{safeJsonStringify as a,safeJsonParse as y}from\"@walletconnect/safe-json\";import{isHttpUrl as h,formatJsonRpcError as b,parseConnectionError as u}from\"@walletconnect/jsonrpc-utils\";var P=Object.defineProperty,w=Object.defineProperties,E=Object.getOwnPropertyDescriptors,c=Object.getOwnPropertySymbols,L=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,l=(r,t,e)=>t in r?P(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,p=(r,t)=>{for(var e in t||(t={}))L.call(t,e)&&l(r,e,t[e]);if(c)for(var e of c(t))O.call(t,e)&&l(r,e,t[e]);return r},v=(r,t)=>w(r,E(t));const j={Accept:\"application/json\",\"Content-Type\":\"application/json\"},T=\"POST\",d={headers:j,method:T},g=10;class f{constructor(t,e=!1){if(this.url=t,this.disableProviderPing=e,this.events=new m,this.isAvailable=!1,this.registering=!1,!h(t))throw new Error(`Provided URL is not compatible with HTTP connection: ${t}`);this.url=t,this.disableProviderPing=e}get connected(){return this.isAvailable}get connecting(){return this.registering}on(t,e){this.events.on(t,e)}once(t,e){this.events.once(t,e)}off(t,e){this.events.off(t,e)}removeListener(t,e){this.events.removeListener(t,e)}async open(t=this.url){await this.register(t)}async close(){if(!this.isAvailable)throw new Error(\"Connection already closed\");this.onClose()}async send(t){this.isAvailable||await this.register();try{const e=a(t),s=await(await o(this.url,v(p({},d),{body:e}))).json();this.onPayload({data:s})}catch(e){this.onError(t.id,e)}}async register(t=this.url){if(!h(t))throw new Error(`Provided URL is not compatible with HTTP connection: ${t}`);if(this.registering){const e=this.events.getMaxListeners();return(this.events.listenerCount(\"register_error\")>=e||this.events.listenerCount(\"open\")>=e)&&this.events.setMaxListeners(e+1),new Promise((s,i)=>{this.events.once(\"register_error\",n=>{this.resetMaxListeners(),i(n)}),this.events.once(\"open\",()=>{if(this.resetMaxListeners(),typeof this.isAvailable>\"u\")return i(new Error(\"HTTP connection is missing or invalid\"));s()})})}this.url=t,this.registering=!0;try{if(!this.disableProviderPing){const e=a({id:1,jsonrpc:\"2.0\",method:\"test\",params:[]});await o(t,v(p({},d),{body:e}))}this.onOpen()}catch(e){const s=this.parseError(e);throw this.events.emit(\"register_error\",s),this.onClose(),s}}onOpen(){this.isAvailable=!0,this.registering=!1,this.events.emit(\"open\")}onClose(){this.isAvailable=!1,this.registering=!1,this.events.emit(\"close\")}onPayload(t){if(typeof t.data>\"u\")return;const e=typeof t.data==\"string\"?y(t.data):t.data;this.events.emit(\"payload\",e)}onError(t,e){const s=this.parseError(e),i=s.message||s.toString(),n=b(t,i);this.events.emit(\"payload\",n)}parseError(t,e=this.url){return u(t,e,\"HTTP\")}resetMaxListeners(){this.events.getMaxListeners()>g&&this.events.setMaxListeners(g)}}export{f as HttpConnection,f as default};\n//# sourceMappingURL=index.es.js.map\n","import qt from\"@walletconnect/sign-client\";import{isValidObject as _,isCaipNamespace as et,parseNamespaceKey as F,mergeArrays as z,parseChainId as it,getSdkError as st,isValidArray as k}from\"@walletconnect/utils\";import{pino as jt,getDefaultLoggerOptions as Rt}from\"@walletconnect/logger\";import g,{HttpConnection as _t}from\"@walletconnect/jsonrpc-http-connection\";import{JsonRpcProvider as m}from\"@walletconnect/jsonrpc-provider\";import{formatJsonRpcRequest as Ft,formatJsonRpcResult as Ut}from\"@walletconnect/jsonrpc-utils\";import xt from\"events\";const rt=\"error\",Lt=\"wss://relay.walletconnect.org\",Mt=\"wc\",Bt=\"universal_provider\",U=`${Mt}@2:${Bt}:`,nt=\"https://rpc.walletconnect.org/v1/\",I=\"generic\",Gt=`${nt}bundler`,l={DEFAULT_CHAIN_CHANGED:\"default_chain_changed\"};function W(i){return i==null||typeof i!=\"object\"&&typeof i!=\"function\"}function at(i){return Object.getOwnPropertySymbols(i).filter(t=>Object.prototype.propertyIsEnumerable.call(i,t))}function ct(i){return i==null?i===void 0?\"[object Undefined]\":\"[object Null]\":Object.prototype.toString.call(i)}const Jt=\"[object RegExp]\",ot=\"[object String]\",ht=\"[object Number]\",pt=\"[object Boolean]\",dt=\"[object Arguments]\",zt=\"[object Symbol]\",kt=\"[object Date]\",Wt=\"[object Map]\",Kt=\"[object Set]\",Vt=\"[object Array]\",Xt=\"[object ArrayBuffer]\",Yt=\"[object Object]\",Qt=\"[object DataView]\",Zt=\"[object Uint8Array]\",Tt=\"[object Uint8ClampedArray]\",te=\"[object Uint16Array]\",ee=\"[object Uint32Array]\",ie=\"[object Int8Array]\",se=\"[object Int16Array]\",re=\"[object Int32Array]\",ne=\"[object Float32Array]\",ae=\"[object Float64Array]\";function K(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}function ce(i,t){return $(i,void 0,i,new Map,t)}function $(i,t,e,s=new Map,n=void 0){const a=n?.(i,t,e,s);if(a!=null)return a;if(W(i))return i;if(s.has(i))return s.get(i);if(Array.isArray(i)){const r=new Array(i.length);s.set(i,r);for(let c=0;c{const r=t?.(e,s,n,a);if(r!=null)return r;if(typeof i==\"object\")switch(Object.prototype.toString.call(i)){case ht:case ot:case pt:{const c=new i.constructor(i?.valueOf());return y(c,i),c}case dt:{const c={};return y(c,i),c.length=i.length,c[Symbol.iterator]=i[Symbol.iterator],c}default:return}})}function ut(i){return he(i)}function lt(i){return i!==null&&typeof i==\"object\"&&ct(i)===\"[object Arguments]\"}function ft(i){return typeof i==\"object\"&&i!==null}function pe(){}function de(i){return K(i)}function ue(i){if(typeof i!=\"object\"||i==null)return!1;if(Object.getPrototypeOf(i)===null)return!0;if(Object.prototype.toString.call(i)!==\"[object Object]\"){const e=i[Symbol.toStringTag];return e==null||!Object.getOwnPropertyDescriptor(i,Symbol.toStringTag)?.writable?!1:i.toString()===`[object ${e}]`}let t=i;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(i)===t}function le(i){if(W(i))return i;if(Array.isArray(i)||K(i)||i instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&i instanceof SharedArrayBuffer)return i.slice(0);const t=Object.getPrototypeOf(i),e=t.constructor;if(i instanceof Date||i instanceof Map||i instanceof Set)return new e(i);if(i instanceof RegExp){const s=new e(i);return s.lastIndex=i.lastIndex,s}if(i instanceof DataView)return new e(i.buffer.slice(0));if(i instanceof Error){const s=new e(i.message);return s.stack=i.stack,s.name=i.name,s.cause=i.cause,s}if(typeof File<\"u\"&&i instanceof File)return new e([i],i.name,{type:i.type,lastModified:i.lastModified});if(typeof i==\"object\"){const s=Object.create(t);return Object.assign(s,i)}return i}function fe(i,...t){const e=t.slice(0,-1),s=t[t.length-1];let n=i;for(let a=0;at in i?ve(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,L=(i,t)=>{for(var e in t||(t={}))we.call(t,e)&&vt(i,e,t[e]);if(mt)for(var e of mt(t))ye.call(t,e)&&vt(i,e,t[e]);return i},be=(i,t)=>ge(i,Pe(t));function u(i,t,e){var s;const n=it(i);return((s=t.rpcMap)==null?void 0:s[n.reference])||`${nt}?chainId=${n.namespace}:${n.reference}&projectId=${e}`}function b(i){return i.includes(\":\")?i.split(\":\")[1]:i}function gt(i){return i.map(t=>`${t.split(\":\")[0]}:${t.split(\":\")[1]}`)}function Ie(i,t){const e=Object.keys(t.namespaces).filter(n=>n.includes(i));if(!e.length)return[];const s=[];return e.forEach(n=>{const a=t.namespaces[n].accounts;s.push(...a)}),s}function Pt(i){return Object.fromEntries(Object.entries(i).filter(([t,e])=>{var s,n;return((s=e?.chains)==null?void 0:s.length)&&((n=e?.chains)==null?void 0:n.length)>0}))}function M(i={},t={}){const e=Pt(wt(i)),s=Pt(wt(t));return me(e,s)}function wt(i){var t,e,s,n,a;const r={};if(!_(i))return r;for(const[c,o]of Object.entries(i)){const p=et(c)?[c]:o.chains,v=o.methods||[],w=o.events||[],P=o.rpcMap||{},d=F(c);r[d]=be(L(L({},r[d]),o),{chains:z(p,(t=r[d])==null?void 0:t.chains),methods:z(v,(e=r[d])==null?void 0:e.methods),events:z(w,(s=r[d])==null?void 0:s.events)}),(_(P)||_(((n=r[d])==null?void 0:n.rpcMap)||{}))&&(r[d].rpcMap=L(L({},P),(a=r[d])==null?void 0:a.rpcMap))}return r}function yt(i){return i.includes(\":\")?i.split(\":\")[2]:i}function bt(i){const t={};for(const[e,s]of Object.entries(i)){const n=s.methods||[],a=s.events||[],r=s.accounts||[],c=et(e)?[e]:s.chains?s.chains:gt(s.accounts);t[e]={chains:c,methods:n,events:a,accounts:r}}return t}function V(i){return typeof i==\"number\"?i:i.includes(\"0x\")?parseInt(i,16):(i=i.includes(\":\")?i.split(\":\")[1]:i,isNaN(Number(i))?i:Number(i))}const It={},h=i=>It[i],X=(i,t)=>{It[i]=t};var $e=Object.defineProperty,$t=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,Ae=Object.prototype.propertyIsEnumerable,Ot=(i,t,e)=>t in i?$e(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,At=(i,t)=>{for(var e in t||(t={}))Oe.call(t,e)&&Ot(i,e,t[e]);if($t)for(var e of $t(t))Ae.call(t,e)&&Ot(i,e,t[e]);return i};const Ct=\"eip155\",Ce=[\"atomic\",\"flow-control\",\"paymasterService\",\"sessionKeys\",\"auxiliaryFunds\"],Ee=i=>i&&i.startsWith(\"0x\")?BigInt(i).toString(10):i,Y=i=>i&&i.startsWith(\"0x\")?i:`0x${BigInt(i).toString(16)}`,Et=i=>Object.keys(i).filter(t=>Ce.includes(t)).reduce((t,e)=>(t[e]=i[e],t),{}),He=(i,t,e)=>{const{sessionProperties:s={},scopedProperties:n={}}=i,a={};if(!_(n)&&!_(s))return;const r=Et(s);for(const c of e){const o=Ee(c);if(!o)continue;a[Y(o)]=r;const p=n?.[`${Ct}:${o}`];if(p){const v=p?.[`${Ct}:${o}:${t}`];a[Y(o)]=At(At({},a[Y(o)]),Et(v||p))}}for(const[c,o]of Object.entries(a))Object.keys(o).length===0&&delete a[c];return Object.keys(a).length>0?a:void 0};var Se=Object.defineProperty,Ne=(i,t,e)=>t in i?Se(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,O=(i,t,e)=>Ne(i,typeof t!=\"symbol\"?t+\"\":t,e);class De{constructor(t){O(this,\"name\",\"polkadot\"),O(this,\"client\"),O(this,\"httpProviders\"),O(this,\"events\"),O(this,\"namespace\"),O(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}getAccounts(){const t=this.namespace.accounts;return t?t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2])||[]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=b(e);t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var qe=Object.defineProperty,je=Object.defineProperties,Re=Object.getOwnPropertyDescriptors,Ht=Object.getOwnPropertySymbols,_e=Object.prototype.hasOwnProperty,Fe=Object.prototype.propertyIsEnumerable,Q=(i,t,e)=>t in i?qe(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,St=(i,t)=>{for(var e in t||(t={}))_e.call(t,e)&&Q(i,e,t[e]);if(Ht)for(var e of Ht(t))Fe.call(t,e)&&Q(i,e,t[e]);return i},Nt=(i,t)=>je(i,Re(t)),A=(i,t,e)=>Q(i,typeof t!=\"symbol\"?t+\"\":t,e);class Ue{constructor(t){A(this,\"name\",\"eip155\"),A(this,\"client\"),A(this,\"chainId\"),A(this,\"namespace\"),A(this,\"httpProviders\"),A(this,\"events\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(t){switch(t.request.method){case\"eth_requestAccounts\":return this.getAccounts();case\"eth_accounts\":return this.getAccounts();case\"wallet_switchEthereumChain\":return await this.handleSwitchChain(t);case\"eth_chainId\":return parseInt(this.getDefaultChain());case\"wallet_getCapabilities\":return await this.getCapabilities(t);case\"wallet_getCallsStatus\":return await this.getCallStatus(t)}return this.namespace.methods.includes(t.request.method)?await this.client.request(t):this.getHttpProvider().request(t.request)}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(parseInt(t),e),this.chainId=parseInt(t),this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}createHttpProvider(t,e){const s=e||u(`${this.name}:${t}`,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new _t(s,h(\"disableProviderPing\")))}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=parseInt(b(e));t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}getHttpProvider(){const t=this.chainId,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}async handleSwitchChain(t){var e,s;let n=t.request.params?(e=t.request.params[0])==null?void 0:e.chainId:\"0x0\";n=n.startsWith(\"0x\")?n:`0x${n}`;const a=parseInt(n,16);if(this.isChainApproved(a))this.setDefaultChain(`${a}`);else if(this.namespace.methods.includes(\"wallet_switchEthereumChain\"))await this.client.request({topic:t.topic,request:{method:t.request.method,params:[{chainId:n}]},chainId:(s=this.namespace.chains)==null?void 0:s[0]}),this.setDefaultChain(`${a}`);else throw new Error(`Failed to switch to chain 'eip155:${a}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(t){return this.namespace.chains.includes(`${this.name}:${t}`)}async getCapabilities(t){var e,s,n,a,r;const c=(s=(e=t.request)==null?void 0:e.params)==null?void 0:s[0],o=((a=(n=t.request)==null?void 0:n.params)==null?void 0:a[1])||[];if(!c)throw new Error(\"Missing address parameter in `wallet_getCapabilities` request\");const p=this.client.session.get(t.topic),v=((r=p?.sessionProperties)==null?void 0:r.capabilities)||{},w=`${c}${o.join(\",\")}`,P=v?.[w];if(P)return P;let d;try{d=He(p,c,o)}catch(J){console.warn(\"Failed to extract capabilities from session\",J)}if(d)return d;const tt=await this.client.request(t);try{await this.client.session.update(t.topic,{sessionProperties:Nt(St({},p.sessionProperties||{}),{capabilities:Nt(St({},v||{}),{[w]:tt})})})}catch(J){console.warn(\"Failed to update session with capabilities\",J)}return tt}async getCallStatus(t){var e,s;const n=this.client.session.get(t.topic),a=(e=n.sessionProperties)==null?void 0:e.bundler_name;if(a){const c=this.getBundlerUrl(t.chainId,a);try{return await this.getUserOperationReceipt(c,t)}catch(o){console.warn(\"Failed to fetch call status from bundler\",o,c)}}const r=(s=n.sessionProperties)==null?void 0:s.bundler_url;if(r)try{return await this.getUserOperationReceipt(r,t)}catch(c){console.warn(\"Failed to fetch call status from custom bundler\",c,r)}if(this.namespace.methods.includes(t.request.method))return await this.client.request(t);throw new Error(\"Fetching call status not approved by the wallet.\")}async getUserOperationReceipt(t,e){var s;const n=new URL(t),a=await fetch(n,{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(Ft(\"eth_getUserOperationReceipt\",[(s=e.request.params)==null?void 0:s[0]]))});if(!a.ok)throw new Error(`Failed to fetch user operation receipt - ${a.status}`);return await a.json()}getBundlerUrl(t,e){return`${Gt}?projectId=${this.client.core.projectId}&chainId=${t}&bundler=${e}`}}var xe=Object.defineProperty,Le=(i,t,e)=>t in i?xe(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,C=(i,t,e)=>Le(i,typeof t!=\"symbol\"?t+\"\":t,e);class Me{constructor(t){C(this,\"name\",\"solana\"),C(this,\"client\"),C(this,\"httpProviders\"),C(this,\"events\"),C(this,\"namespace\"),C(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=b(e);t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var Be=Object.defineProperty,Ge=(i,t,e)=>t in i?Be(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,E=(i,t,e)=>Ge(i,typeof t!=\"symbol\"?t+\"\":t,e);class Je{constructor(t){E(this,\"name\",\"cosmos\"),E(this,\"client\"),E(this,\"httpProviders\"),E(this,\"events\"),E(this,\"namespace\"),E(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=b(e);t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var ze=Object.defineProperty,ke=(i,t,e)=>t in i?ze(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,H=(i,t,e)=>ke(i,typeof t!=\"symbol\"?t+\"\":t,e);class We{constructor(t){H(this,\"name\",\"algorand\"),H(this,\"client\"),H(this,\"httpProviders\"),H(this,\"events\"),H(this,\"namespace\"),H(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){if(!this.httpProviders[t]){const s=e||u(`${this.name}:${t}`,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);this.setHttpProvider(t,s)}this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;t[e]=this.createHttpProvider(e,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);return typeof s>\"u\"?void 0:new m(new g(s,h(\"disableProviderPing\")))}}var Ke=Object.defineProperty,Ve=(i,t,e)=>t in i?Ke(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,S=(i,t,e)=>Ve(i,typeof t!=\"symbol\"?t+\"\":t,e);class Xe{constructor(t){S(this,\"name\",\"cip34\"),S(this,\"client\"),S(this,\"httpProviders\"),S(this,\"events\"),S(this,\"namespace\"),S(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{const s=this.getCardanoRPCUrl(e),n=b(e);t[n]=this.createHttpProvider(n,s)}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}getCardanoRPCUrl(t){const e=this.namespace.rpcMap;if(e)return e[t]}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||this.getCardanoRPCUrl(t);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var Ye=Object.defineProperty,Qe=(i,t,e)=>t in i?Ye(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,N=(i,t,e)=>Qe(i,typeof t!=\"symbol\"?t+\"\":t,e);class Ze{constructor(t){N(this,\"name\",\"elrond\"),N(this,\"client\"),N(this,\"httpProviders\"),N(this,\"events\"),N(this,\"namespace\"),N(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=b(e);t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var Te=Object.defineProperty,ti=(i,t,e)=>t in i?Te(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,D=(i,t,e)=>ti(i,typeof t!=\"symbol\"?t+\"\":t,e);class ei{constructor(t){D(this,\"name\",\"multiversx\"),D(this,\"client\"),D(this,\"httpProviders\"),D(this,\"events\"),D(this,\"namespace\"),D(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;const n=b(e);t[n]=this.createHttpProvider(n,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var ii=Object.defineProperty,si=(i,t,e)=>t in i?ii(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,q=(i,t,e)=>si(i,typeof t!=\"symbol\"?t+\"\":t,e);class ri{constructor(t){q(this,\"name\",\"near\"),q(this,\"client\"),q(this,\"httpProviders\"),q(this,\"events\"),q(this,\"namespace\"),q(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){if(this.chainId=t,!this.httpProviders[t]){const s=e||u(`${this.name}:${t}`,this.namespace);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);this.setHttpProvider(t,s)}this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const t=this.namespace.accounts;return t?t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2])||[]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{var s;t[e]=this.createHttpProvider(e,(s=this.namespace.rpcMap)==null?void 0:s[e])}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace);return typeof s>\"u\"?void 0:new m(new g(s,h(\"disableProviderPing\")))}}var ni=Object.defineProperty,ai=(i,t,e)=>t in i?ni(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,j=(i,t,e)=>ai(i,typeof t!=\"symbol\"?t+\"\":t,e);class ci{constructor(t){j(this,\"name\",\"tezos\"),j(this,\"client\"),j(this,\"httpProviders\"),j(this,\"events\"),j(this,\"namespace\"),j(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace=Object.assign(this.namespace,t)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider().request(t.request)}setDefaultChain(t,e){if(this.chainId=t,!this.httpProviders[t]){const s=e||u(`${this.name}:${t}`,this.namespace);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);this.setHttpProvider(t,s)}this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){const t=this.namespace.accounts;return t?t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2])||[]:[]}createHttpProviders(){const t={};return this.namespace.chains.forEach(e=>{t[e]=this.createHttpProvider(e)}),t}getHttpProvider(){const t=`${this.name}:${this.chainId}`,e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace);return typeof s>\"u\"?void 0:new m(new g(s))}}var oi=Object.defineProperty,hi=(i,t,e)=>t in i?oi(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,R=(i,t,e)=>hi(i,typeof t!=\"symbol\"?t+\"\":t,e);class pi{constructor(t){R(this,\"name\",I),R(this,\"client\"),R(this,\"httpProviders\"),R(this,\"events\"),R(this,\"namespace\"),R(this,\"chainId\"),this.namespace=t.namespace,this.events=h(\"events\"),this.client=h(\"client\"),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(t){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(t.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(t.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(t.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(t.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(t){return this.namespace.methods.includes(t.request.method)?this.client.request(t):this.getHttpProvider(t.chainId).request(t.request)}setDefaultChain(t,e){this.httpProviders[t]||this.setHttpProvider(t,e),this.chainId=t,this.events.emit(l.DEFAULT_CHAIN_CHANGED,`${this.name}:${t}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;const t=this.namespace.chains[0];if(!t)throw new Error(\"ChainId not found\");return t.split(\":\")[1]}getAccounts(){const t=this.namespace.accounts;return t?[...new Set(t.filter(e=>e.split(\":\")[1]===this.chainId.toString()).map(e=>e.split(\":\")[2]))]:[]}createHttpProviders(){var t,e;const s={};return(e=(t=this.namespace)==null?void 0:t.accounts)==null||e.forEach(n=>{const a=it(n);s[`${a.namespace}:${a.reference}`]=this.createHttpProvider(n)}),s}getHttpProvider(t){const e=this.httpProviders[t];if(typeof e>\"u\")throw new Error(`JSON-RPC provider for ${t} not found`);return e}setHttpProvider(t,e){const s=this.createHttpProvider(t,e);s&&(this.httpProviders[t]=s)}createHttpProvider(t,e){const s=e||u(t,this.namespace,this.client.core.projectId);if(!s)throw new Error(`No RPC url provided for chainId: ${t}`);return new m(new g(s,h(\"disableProviderPing\")))}}var di=Object.defineProperty,ui=Object.defineProperties,li=Object.getOwnPropertyDescriptors,Dt=Object.getOwnPropertySymbols,fi=Object.prototype.hasOwnProperty,mi=Object.prototype.propertyIsEnumerable,Z=(i,t,e)=>t in i?di(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,B=(i,t)=>{for(var e in t||(t={}))fi.call(t,e)&&Z(i,e,t[e]);if(Dt)for(var e of Dt(t))mi.call(t,e)&&Z(i,e,t[e]);return i},T=(i,t)=>ui(i,li(t)),f=(i,t,e)=>Z(i,typeof t!=\"symbol\"?t+\"\":t,e);class G{constructor(t){f(this,\"client\"),f(this,\"namespaces\"),f(this,\"optionalNamespaces\"),f(this,\"sessionProperties\"),f(this,\"scopedProperties\"),f(this,\"events\",new xt),f(this,\"rpcProviders\",{}),f(this,\"session\"),f(this,\"providerOpts\"),f(this,\"logger\"),f(this,\"uri\"),f(this,\"disableProviderPing\",!1),this.providerOpts=t,this.logger=typeof t?.logger<\"u\"&&typeof t?.logger!=\"string\"?t.logger:jt(Rt({level:t?.logger||rt})),this.disableProviderPing=t?.disableProviderPing||!1}static async init(t){const e=new G(t);return await e.initialize(),e}async request(t,e,s){const[n,a]=this.validateChain(e);if(!this.session)throw new Error(\"Please call connect() before request()\");return await this.getProvider(n).request({request:B({},t),chainId:`${n}:${a}`,topic:this.session.topic,expiry:s})}sendAsync(t,e,s,n){const a=new Date().getTime();this.request(t,s,n).then(r=>e(null,Ut(a,r))).catch(r=>e(r,void 0))}async enable(){if(!this.client)throw new Error(\"Sign Client not initialized\");return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){var t;if(!this.session)throw new Error(\"Please call connect() before enable()\");await this.client.disconnect({topic:(t=this.session)==null?void 0:t.topic,reason:st(\"USER_DISCONNECTED\")}),await this.cleanup()}async connect(t){if(!this.client)throw new Error(\"Sign Client not initialized\");if(this.setNamespaces(t),await this.cleanupPendingPairings(),!t.skipPairing)return await this.pair(t.pairingTopic)}async authenticate(t,e){if(!this.client)throw new Error(\"Sign Client not initialized\");this.setNamespaces(t),await this.cleanupPendingPairings();const{uri:s,response:n}=await this.client.authenticate(t,e);s&&(this.uri=s,this.events.emit(\"display_uri\",s));const a=await n();if(this.session=a.session,this.session){const r=bt(this.session.namespaces);this.namespaces=M(this.namespaces,r),await this.persist(\"namespaces\",this.namespaces),this.onConnect()}return a}on(t,e){this.events.on(t,e)}once(t,e){this.events.once(t,e)}removeListener(t,e){this.events.removeListener(t,e)}off(t,e){this.events.off(t,e)}get isWalletConnect(){return!0}async pair(t){const{uri:e,approval:s}=await this.client.connect({pairingTopic:t,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});e&&(this.uri=e,this.events.emit(\"display_uri\",e));const n=await s();this.session=n;const a=bt(n.namespaces);return this.namespaces=M(this.namespaces,a),await this.persist(\"namespaces\",this.namespaces),await this.persist(\"optionalNamespaces\",this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(t,e){try{if(!this.session)return;const[s,n]=this.validateChain(t),a=this.getProvider(s);a.name===I?a.setDefaultChain(`${s}:${n}`,e):a.setDefaultChain(n,e)}catch(s){if(!/Please call connect/.test(s.message))throw s}}async cleanupPendingPairings(t={}){this.logger.info(\"Cleaning up inactive pairings...\");const e=this.client.pairing.getAll();if(k(e)){for(const s of e)t.deletePairings?this.client.core.expirer.set(s.topic,0):await this.client.core.relayer.subscriber.unsubscribe(s.topic);this.logger.info(`Inactive pairings cleared: ${e.length}`)}}abortPairingAttempt(){this.logger.warn(\"abortPairingAttempt is deprecated. This is now a no-op.\")}async checkStorage(){this.namespaces=await this.getFromStore(\"namespaces\")||{},this.optionalNamespaces=await this.getFromStore(\"optionalNamespaces\")||{},this.session&&this.createProviders()}async initialize(){this.logger.trace(\"Initialized\"),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){var t,e;if(this.client=this.providerOpts.client||await qt.init({core:this.providerOpts.core,logger:this.providerOpts.logger||rt,relayUrl:this.providerOpts.relayUrl||Lt,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(s){throw this.logger.error(\"Failed to get session\",s),new Error(`The provided session: ${(e=(t=this.providerOpts)==null?void 0:t.session)==null?void 0:e.topic} doesn't exist in the Sign client`)}else{const s=this.client.session.getAll();this.session=s[0]}this.logger.trace(\"SignClient Initialized\")}createProviders(){if(!this.client)throw new Error(\"Sign Client not initialized\");if(!this.session)throw new Error(\"Session not initialized. Please call connect() before enable()\");const t=[...new Set(Object.keys(this.session.namespaces).map(e=>F(e)))];X(\"client\",this.client),X(\"events\",this.events),X(\"disableProviderPing\",this.disableProviderPing),t.forEach(e=>{if(!this.session)return;const s=Ie(e,this.session);if(s?.length===0)return;const n=gt(s),a=M(this.namespaces,this.optionalNamespaces),r=T(B({},a[e]),{accounts:s,chains:n});switch(e){case\"eip155\":this.rpcProviders[e]=new Ue({namespace:r});break;case\"algorand\":this.rpcProviders[e]=new We({namespace:r});break;case\"solana\":this.rpcProviders[e]=new Me({namespace:r});break;case\"cosmos\":this.rpcProviders[e]=new Je({namespace:r});break;case\"polkadot\":this.rpcProviders[e]=new De({namespace:r});break;case\"cip34\":this.rpcProviders[e]=new Xe({namespace:r});break;case\"elrond\":this.rpcProviders[e]=new Ze({namespace:r});break;case\"multiversx\":this.rpcProviders[e]=new ei({namespace:r});break;case\"near\":this.rpcProviders[e]=new ri({namespace:r});break;case\"tezos\":this.rpcProviders[e]=new ci({namespace:r});break;default:this.rpcProviders[I]?this.rpcProviders[I].updateNamespace(r):this.rpcProviders[I]=new pi({namespace:r})}})}registerEventListeners(){if(typeof this.client>\"u\")throw new Error(\"Sign Client is not initialized\");this.client.on(\"session_ping\",t=>{var e;const{topic:s}=t;s===((e=this.session)==null?void 0:e.topic)&&this.events.emit(\"session_ping\",t)}),this.client.on(\"session_event\",t=>{var e;const{params:s,topic:n}=t;if(n!==((e=this.session)==null?void 0:e.topic))return;const{event:a}=s;if(a.name===\"accountsChanged\"){const r=a.data;r&&k(r)&&this.events.emit(\"accountsChanged\",r.map(yt))}else if(a.name===\"chainChanged\"){const r=s.chainId,c=s.event.data,o=F(r),p=V(r)!==V(c)?`${o}:${V(c)}`:r;this.onChainChanged(p)}else this.events.emit(a.name,a.data);this.events.emit(\"session_event\",t)}),this.client.on(\"session_update\",({topic:t,params:e})=>{var s,n;if(t!==((s=this.session)==null?void 0:s.topic))return;const{namespaces:a}=e,r=(n=this.client)==null?void 0:n.session.get(t);this.session=T(B({},r),{namespaces:a}),this.onSessionUpdate(),this.events.emit(\"session_update\",{topic:t,params:e})}),this.client.on(\"session_delete\",async t=>{var e;t.topic===((e=this.session)==null?void 0:e.topic)&&(await this.cleanup(),this.events.emit(\"session_delete\",t),this.events.emit(\"disconnect\",T(B({},st(\"USER_DISCONNECTED\")),{data:t.topic})))}),this.on(l.DEFAULT_CHAIN_CHANGED,t=>{this.onChainChanged(t,!0)})}getProvider(t){return this.rpcProviders[t]||this.rpcProviders[I]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(t=>{var e;this.getProvider(t).updateNamespace((e=this.session)==null?void 0:e.namespaces[t])})}setNamespaces(t){const{namespaces:e={},optionalNamespaces:s={},sessionProperties:n,scopedProperties:a}=t;this.optionalNamespaces=M(e,s),this.sessionProperties=n,this.scopedProperties=a}validateChain(t){const[e,s]=t?.split(\":\")||[\"\",\"\"];if(!this.namespaces||!Object.keys(this.namespaces).length)return[e,s];if(e&&!Object.keys(this.namespaces||{}).map(r=>F(r)).includes(e))throw new Error(`Namespace '${e}' is not configured. Please call connect() first with namespace config.`);if(e&&s)return[e,s];const n=F(Object.keys(this.namespaces)[0]),a=this.rpcProviders[n].getDefaultChain();return[n,a]}async requestAccounts(){const[t]=this.validateChain();return await this.getProvider(t).requestAccounts()}async onChainChanged(t,e=!1){if(!this.namespaces)return;const[s,n]=this.validateChain(t);if(!n)return;this.updateNamespaceChain(s,n),this.events.emit(\"chainChanged\",n);const a=this.getProvider(s).getDefaultChain();e||this.getProvider(s).setDefaultChain(n),this.emitAccountsChangedOnChainChange({namespace:s,previousChainId:a,newChainId:t}),await this.persist(\"namespaces\",this.namespaces)}emitAccountsChangedOnChainChange({namespace:t,previousChainId:e,newChainId:s}){var n,a;try{if(e===s)return;const r=(a=(n=this.session)==null?void 0:n.namespaces[t])==null?void 0:a.accounts;if(!r)return;const c=r.filter(o=>o.includes(`${s}:`)).map(yt);if(!k(c))return;this.events.emit(\"accountsChanged\",c)}catch(r){this.logger.warn(\"Failed to emit accountsChanged on chain change\",r)}}updateNamespaceChain(t,e){if(!this.namespaces)return;const s=this.namespaces[t]?t:`${t}:${e}`,n={chains:[],methods:[],events:[],defaultChain:e};this.namespaces[s]?this.namespaces[s]&&(this.namespaces[s].defaultChain=e):this.namespaces[s]=n}onConnect(){this.createProviders(),this.events.emit(\"connect\",{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore(\"namespaces\"),await this.deleteFromStore(\"optionalNamespaces\"),await this.deleteFromStore(\"sessionProperties\"),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(t,e){var s;const n=((s=this.session)==null?void 0:s.topic)||\"\";await this.client.core.storage.setItem(`${U}/${t}${n}`,e)}async getFromStore(t){var e;const s=((e=this.session)==null?void 0:e.topic)||\"\";return await this.client.core.storage.getItem(`${U}/${t}${s}`)}async deleteFromStore(t){var e;const s=((e=this.session)==null?void 0:e.topic)||\"\";await this.client.core.storage.removeItem(`${U}/${t}${s}`)}async cleanupStorage(){var t;try{if(((t=this.client)==null?void 0:t.session.length)>0)return;const e=await this.client.core.storage.getKeys();for(const s of e)s.startsWith(U)&&await this.client.core.storage.removeItem(s)}catch(e){this.logger.warn(\"Failed to cleanup storage\",e)}}}const vi=G;export{vi as UniversalProvider,G as default};\n//# sourceMappingURL=index.es.js.map\n","export const ConstantsUtil = {\n WC_NAME_SUFFIX: '.reown.id',\n WC_NAME_SUFFIX_LEGACY: '.wcn.id',\n BLOCKCHAIN_API_RPC_URL: 'https://rpc.walletconnect.org',\n PULSE_API_URL: 'https://pulse.walletconnect.org',\n W3M_API_URL: 'https://api.web3modal.org',\n CONNECTOR_ID: {\n WALLET_CONNECT: 'walletConnect',\n INJECTED: 'injected',\n WALLET_STANDARD: 'announced',\n COINBASE: 'coinbaseWallet',\n COINBASE_SDK: 'coinbaseWalletSDK',\n SAFE: 'safe',\n LEDGER: 'ledger',\n OKX: 'okx',\n EIP6963: 'eip6963',\n AUTH: 'ID_AUTH'\n },\n CONNECTOR_NAMES: {\n AUTH: 'Auth'\n },\n AUTH_CONNECTOR_SUPPORTED_CHAINS: ['eip155', 'solana'],\n LIMITS: {\n PENDING_TRANSACTIONS: 99\n },\n CHAIN: {\n EVM: 'eip155',\n SOLANA: 'solana',\n POLKADOT: 'polkadot',\n BITCOIN: 'bip122'\n },\n CHAIN_NAME_MAP: {\n eip155: 'EVM Networks',\n solana: 'Solana',\n polkadot: 'Polkadot',\n bip122: 'Bitcoin',\n cosmos: 'Cosmos',\n sui: 'Sui',\n stacks: 'Stacks'\n },\n ADAPTER_TYPES: {\n BITCOIN: 'bitcoin',\n SOLANA: 'solana',\n WAGMI: 'wagmi',\n ETHERS: 'ethers',\n ETHERS5: 'ethers5'\n },\n USDT_CONTRACT_ADDRESSES: [\n '0xdac17f958d2ee523a2206206994597c13d831ec7',\n '0xc2132d05d31c914a87c6611c10748aeb04b58e8f',\n '0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7',\n '0x919C1c267BC06a7039e03fcc2eF738525769109c',\n '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e',\n '0x55d398326f99059fF775485246999027B3197955',\n '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9'\n ],\n HTTP_STATUS_CODES: {\n SERVER_ERROR: 500,\n TOO_MANY_REQUESTS: 429,\n SERVICE_UNAVAILABLE: 503,\n FORBIDDEN: 403\n },\n UNSUPPORTED_NETWORK_NAME: 'Unknown Network',\n SECURE_SITE_SDK_ORIGIN: (typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_SECURE_SITE_ORIGIN']\n : undefined) || 'https://secure.walletconnect.org',\n REMOTE_FEATURES_ALERTS: {\n MULTI_WALLET_NOT_ENABLED: {\n DEFAULT: {\n displayMessage: 'Multi-Wallet Not Enabled',\n debugMessage: 'Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com.'\n },\n CONNECTIONS_HOOK: {\n displayMessage: 'Multi-Wallet Not Enabled',\n debugMessage: 'Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com to use the useAppKitConnections hook.'\n },\n CONNECTION_HOOK: {\n displayMessage: 'Multi-Wallet Not Enabled',\n debugMessage: 'Multi-wallet support is not enabled. Please enable it in your AppKit configuration at cloud.reown.com to use the useAppKitConnection hook.'\n }\n }\n }\n};\n//# sourceMappingURL=ConstantsUtil.js.map","import { ConstantsUtil } from './ConstantsUtil.js';\nexport const NetworkUtil = {\n caipNetworkIdToNumber(caipnetworkId) {\n return caipnetworkId ? Number(caipnetworkId.split(':')[1]) : undefined;\n },\n parseEvmChainId(chainId) {\n return typeof chainId === 'string'\n ? this.caipNetworkIdToNumber(chainId)\n : chainId;\n },\n getNetworksByNamespace(networks, namespace) {\n return networks?.filter(network => network.chainNamespace === namespace) || [];\n },\n getFirstNetworkByNamespace(networks, namespace) {\n return this.getNetworksByNamespace(networks, namespace)[0];\n },\n getNetworkNameByCaipNetworkId(caipNetworks, caipNetworkId) {\n if (!caipNetworkId) {\n return undefined;\n }\n const caipNetwork = caipNetworks.find(network => network.caipNetworkId === caipNetworkId);\n if (caipNetwork) {\n return caipNetwork.name;\n }\n const [namespace] = caipNetworkId.split(':');\n return ConstantsUtil.CHAIN_NAME_MAP?.[namespace] || undefined;\n }\n};\nexport const AVAILABLE_NAMESPACES = [\n 'eip155',\n 'solana',\n 'polkadot',\n 'bip122',\n 'cosmos',\n 'sui',\n 'stacks'\n];\n//# sourceMappingURL=NetworkUtil.js.map","/*\r\n * big.js v6.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2024 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(+stringify(x, true, true));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitve number.\r\n */\r\nP.toNumber = function () {\r\n var n = +stringify(this, true, true);\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// \r\nexport default Big;\r\n","import Big from 'big.js';\nexport const NumberUtil = {\n bigNumber(value) {\n if (!value) {\n return new Big(0);\n }\n return new Big(value);\n },\n multiply(a, b) {\n if (a === undefined || b === undefined) {\n return new Big(0);\n }\n const aBigNumber = new Big(a);\n const bBigNumber = new Big(b);\n return aBigNumber.times(bBigNumber);\n },\n formatNumberToLocalString(value, decimals = 2) {\n if (value === undefined) {\n return '0.00';\n }\n if (typeof value === 'number') {\n return value.toLocaleString('en-US', {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n });\n }\n return parseFloat(value).toLocaleString('en-US', {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n });\n },\n parseLocalStringToNumber(value) {\n if (value === undefined) {\n return 0;\n }\n return parseFloat(value.replace(/,/gu, ''));\n }\n};\n//# sourceMappingURL=NumberUtil.js.map","export const erc20ABI = [\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: '_to',\n type: 'address'\n },\n {\n name: '_value',\n type: 'uint256'\n }\n ],\n outputs: [\n {\n name: '',\n type: 'bool'\n }\n ]\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: '_from',\n type: 'address'\n },\n {\n name: '_to',\n type: 'address'\n },\n {\n name: '_value',\n type: 'uint256'\n }\n ],\n outputs: [\n {\n name: '',\n type: 'bool'\n }\n ]\n }\n];\n//# sourceMappingURL=erc20.js.map","export const swapABI = [\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' }\n ],\n outputs: [{ type: 'bool' }]\n }\n];\n//# sourceMappingURL=swap.js.map","export const usdtABI = [\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address'\n },\n {\n name: 'amount',\n type: 'uint256'\n }\n ],\n outputs: []\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address'\n },\n {\n name: 'recipient',\n type: 'address'\n },\n {\n name: 'amount',\n type: 'uint256'\n }\n ],\n outputs: [\n {\n name: '',\n type: 'bool'\n }\n ]\n }\n];\n//# sourceMappingURL=usdt.js.map","import { erc20ABI } from '../contracts/erc20.js';\nimport { swapABI } from '../contracts/swap.js';\nimport { usdtABI } from '../contracts/usdt.js';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nexport const ContractUtil = {\n getERC20Abi: (tokenAddress) => {\n if (ConstantsUtil.USDT_CONTRACT_ADDRESSES.includes(tokenAddress)) {\n return usdtABI;\n }\n return erc20ABI;\n },\n getSwapAbi: () => swapABI\n};\n//# sourceMappingURL=ContractUtil.js.map","export const ParseUtil = {\n validateCaipAddress(address) {\n if (address.split(':')?.length !== 3) {\n throw new Error('Invalid CAIP Address');\n }\n return address;\n },\n parseCaipAddress(caipAddress) {\n const parts = caipAddress.split(':');\n if (parts.length !== 3) {\n throw new Error(`Invalid CAIP-10 address: ${caipAddress}`);\n }\n const [chainNamespace, chainId, address] = parts;\n if (!chainNamespace || !chainId || !address) {\n throw new Error(`Invalid CAIP-10 address: ${caipAddress}`);\n }\n return {\n chainNamespace: chainNamespace,\n chainId: chainId,\n address\n };\n },\n parseCaipNetworkId(caipNetworkId) {\n const parts = caipNetworkId.split(':');\n if (parts.length !== 2) {\n throw new Error(`Invalid CAIP-2 network id: ${caipNetworkId}`);\n }\n const [chainNamespace, chainId] = parts;\n if (!chainNamespace || !chainId) {\n throw new Error(`Invalid CAIP-2 network id: ${caipNetworkId}`);\n }\n return {\n chainNamespace: chainNamespace,\n chainId: chainId\n };\n }\n};\n//# sourceMappingURL=ParseUtil.js.map","export const SafeLocalStorageKeys = {\n WALLET_ID: '@appkit/wallet_id',\n WALLET_NAME: '@appkit/wallet_name',\n SOLANA_WALLET: '@appkit/solana_wallet',\n SOLANA_CAIP_CHAIN: '@appkit/solana_caip_chain',\n ACTIVE_CAIP_NETWORK_ID: '@appkit/active_caip_network_id',\n CONNECTED_SOCIAL: '@appkit/connected_social',\n CONNECTED_SOCIAL_USERNAME: '@appkit-wallet/SOCIAL_USERNAME',\n RECENT_WALLETS: '@appkit/recent_wallets',\n DEEPLINK_CHOICE: 'WALLETCONNECT_DEEPLINK_CHOICE',\n ACTIVE_NAMESPACE: '@appkit/active_namespace',\n CONNECTED_NAMESPACES: '@appkit/connected_namespaces',\n CONNECTION_STATUS: '@appkit/connection_status',\n SIWX_AUTH_TOKEN: '@appkit/siwx-auth-token',\n SIWX_NONCE_TOKEN: '@appkit/siwx-nonce-token',\n TELEGRAM_SOCIAL_PROVIDER: '@appkit/social_provider',\n NATIVE_BALANCE_CACHE: '@appkit/native_balance_cache',\n PORTFOLIO_CACHE: '@appkit/portfolio_cache',\n ENS_CACHE: '@appkit/ens_cache',\n IDENTITY_CACHE: '@appkit/identity_cache',\n PREFERRED_ACCOUNT_TYPES: '@appkit/preferred_account_types',\n CONNECTIONS: '@appkit/connections',\n DISCONNECTED_CONNECTOR_IDS: '@appkit/disconnected_connector_ids',\n HISTORY_TRANSACTIONS_CACHE: '@appkit/history_transactions_cache',\n TOKEN_PRICE_CACHE: '@appkit/token_price_cache',\n RECENT_EMAILS: '@appkit/recent_emails'\n};\nexport function getSafeConnectorIdKey(namespace) {\n if (!namespace) {\n throw new Error('Namespace is required for CONNECTED_CONNECTOR_ID');\n }\n return `@appkit/${namespace}:connected_connector_id`;\n}\nexport const SafeLocalStorage = {\n setItem(key, value) {\n if (isSafe() && value !== undefined) {\n localStorage.setItem(key, value);\n }\n },\n getItem(key) {\n if (isSafe()) {\n return localStorage.getItem(key) || undefined;\n }\n return undefined;\n },\n removeItem(key) {\n if (isSafe()) {\n localStorage.removeItem(key);\n }\n },\n clear() {\n if (isSafe()) {\n localStorage.clear();\n }\n }\n};\nexport function isSafe() {\n return typeof window !== 'undefined' && typeof localStorage !== 'undefined';\n}\n//# sourceMappingURL=SafeLocalStorage.js.map","export function getW3mThemeVariables(themeVariables, themeType) {\n if (themeType === 'light') {\n return {\n '--w3m-accent': themeVariables?.['--w3m-accent'] || 'hsla(231, 100%, 70%, 1)',\n '--w3m-background': '#fff'\n };\n }\n return {\n '--w3m-accent': themeVariables?.['--w3m-accent'] || 'hsla(230, 100%, 67%, 1)',\n '--w3m-background': '#121313'\n };\n}\n//# sourceMappingURL=ThemeUtil.js.map","/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n (objectsToTrack.has(obj)\n ? objectsToTrack.get(obj)\n : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n if (Array.isArray(obj)) {\n // Arrays need a special way to copy\n return Array.from(obj);\n }\n // For non-array objects, we create a new object keeping the prototype\n // with changing all configurable options (otherwise, proxies will complain)\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n Object.values(descriptors).forEach((desc) => {\n desc.configurable = true;\n });\n return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n const state = {\n [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n };\n let trackObject = false; // for trackMemo\n const recordUsage = (type, key) => {\n if (!trackObject) {\n let used = state[AFFECTED_PROPERTY].get(origObj);\n if (!used) {\n used = {};\n state[AFFECTED_PROPERTY].set(origObj, used);\n }\n if (type === ALL_OWN_KEYS_PROPERTY) {\n used[ALL_OWN_KEYS_PROPERTY] = true;\n }\n else {\n let set = used[type];\n if (!set) {\n set = new Set();\n used[type] = set;\n }\n set.add(key);\n }\n }\n };\n const recordObjectAsUsed = () => {\n trackObject = true;\n state[AFFECTED_PROPERTY].delete(origObj);\n };\n const handler = {\n get(target, key) {\n if (key === GET_ORIGINAL_SYMBOL) {\n return origObj;\n }\n recordUsage(KEYS_PROPERTY, key);\n return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n },\n has(target, key) {\n if (key === TRACK_MEMO_SYMBOL) {\n recordObjectAsUsed();\n return true;\n }\n recordUsage(HAS_KEY_PROPERTY, key);\n return Reflect.has(target, key);\n },\n getOwnPropertyDescriptor(target, key) {\n recordUsage(HAS_OWN_KEY_PROPERTY, key);\n return Reflect.getOwnPropertyDescriptor(target, key);\n },\n ownKeys(target) {\n recordUsage(ALL_OWN_KEYS_PROPERTY);\n return Reflect.ownKeys(target);\n },\n };\n if (isTargetCopied) {\n handler.set = handler.deleteProperty = () => false;\n }\n return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n // otherwise\n obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n if (!isObjectToTrack(obj))\n return obj;\n let targetAndCopied = targetCache && targetCache.get(obj);\n if (!targetAndCopied) {\n const target = getOriginalObject(obj);\n if (needsToCopyTargetObject(target)) {\n targetAndCopied = [target, copyTargetObject(target)];\n }\n else {\n targetAndCopied = [target];\n }\n targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n }\n const [target, copiedTarget] = targetAndCopied;\n let handlerAndState = proxyCache && proxyCache.get(target);\n if (!handlerAndState ||\n handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n handlerAndState = createProxyHandler(target, !!copiedTarget);\n handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n if (proxyCache) {\n proxyCache.set(target, handlerAndState);\n }\n }\n handlerAndState[1][AFFECTED_PROPERTY] = affected;\n handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n const prevKeys = Reflect.ownKeys(prevObj);\n const nextKeys = Reflect.ownKeys(nextObj);\n return (prevKeys.length !== nextKeys.length ||\n prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n if (isEqual(prevObj, nextObj)) {\n return false;\n }\n if (!isObject(prevObj) || !isObject(nextObj))\n return true;\n const used = affected.get(getOriginalObject(prevObj));\n if (!used)\n return true;\n if (cache) {\n const hit = cache.get(prevObj);\n if (hit === nextObj) {\n return false;\n }\n // for object with cycles\n cache.set(prevObj, nextObj);\n }\n let changed = null;\n for (const key of used[HAS_KEY_PROPERTY] || []) {\n changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n if (changed)\n return changed;\n }\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n changed = isAllOwnKeysChanged(prevObj, nextObj);\n if (changed)\n return changed;\n }\n else {\n for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n changed = hasPrev !== hasNext;\n if (changed)\n return changed;\n }\n }\n for (const key of used[KEYS_PROPERTY] || []) {\n changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n if (changed)\n return changed;\n }\n if (changed === null)\n throw new Error('invalid used');\n return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n if (isObjectToTrack(obj)) {\n return TRACK_MEMO_SYMBOL in obj;\n }\n return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy} obj - The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n if (isObjectToTrack(obj)) {\n return obj[GET_ORIGINAL_SYMBOL] || null;\n }\n return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n const list = [];\n const seen = new WeakSet();\n const walk = (x, path) => {\n var _a, _b, _c;\n if (seen.has(x)) {\n // for object with cycles\n return;\n }\n if (isObject(x)) {\n seen.add(x);\n }\n const used = isObject(x) && affected.get(getOriginalObject(x));\n if (used) {\n (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n const segment = `:has(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n const segment = ':ownKeys';\n list.push(path ? [...path, segment] : [segment]);\n }\n else {\n (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n const segment = `:hasOwn(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n }\n (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n if (!onlyWithValues ||\n 'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n walk(x[key], path ? [...path, key] : [key]);\n }\n });\n }\n else if (path) {\n list.push(path);\n }\n };\n walk(obj);\n return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n newProxy = fn;\n};\n","import { markToTrack, getUntracked } from 'proxy-compare';\n\nconst isObject = (x) => typeof x === \"object\" && x !== null;\nconst canProxyDefault = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise);\nconst createSnapshotDefault = (target, version) => {\n const cache = snapCache.get(target);\n if ((cache == null ? void 0 : cache[0]) === version) {\n return cache[1];\n }\n const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n markToTrack(snap, true);\n snapCache.set(target, [version, snap]);\n Reflect.ownKeys(target).forEach((key) => {\n if (Object.getOwnPropertyDescriptor(snap, key)) {\n return;\n }\n const value = Reflect.get(target, key);\n const { enumerable } = Reflect.getOwnPropertyDescriptor(\n target,\n key\n );\n const desc = {\n value,\n enumerable,\n // This is intentional to avoid copying with proxy-compare.\n // It's still non-writable, so it avoids assigning a value.\n configurable: true\n };\n if (refSet.has(value)) {\n markToTrack(value, false);\n } else if (proxyStateMap.has(value)) {\n const [target2, ensureVersion] = proxyStateMap.get(\n value\n );\n desc.value = createSnapshotDefault(target2, ensureVersion());\n }\n Object.defineProperty(snap, key, desc);\n });\n return Object.preventExtensions(snap);\n};\nconst createHandlerDefault = (isInitializing, addPropListener, removePropListener, notifyUpdate) => ({\n deleteProperty(target, prop) {\n const prevValue = Reflect.get(target, prop);\n removePropListener(prop);\n const deleted = Reflect.deleteProperty(target, prop);\n if (deleted) {\n notifyUpdate([\"delete\", [prop], prevValue]);\n }\n return deleted;\n },\n set(target, prop, value, receiver) {\n const hasPrevValue = !isInitializing() && Reflect.has(target, prop);\n const prevValue = Reflect.get(target, prop, receiver);\n if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n return true;\n }\n removePropListener(prop);\n if (isObject(value)) {\n value = getUntracked(value) || value;\n }\n const nextValue = !proxyStateMap.has(value) && canProxy(value) ? proxy(value) : value;\n addPropListener(prop, nextValue);\n Reflect.set(target, prop, nextValue, receiver);\n notifyUpdate([\"set\", [prop], value, prevValue]);\n return true;\n }\n});\nconst proxyStateMap = /* @__PURE__ */ new WeakMap();\nconst refSet = /* @__PURE__ */ new WeakSet();\nconst snapCache = /* @__PURE__ */ new WeakMap();\nconst versionHolder = [1, 1];\nconst proxyCache = /* @__PURE__ */ new WeakMap();\nlet objectIs = Object.is;\nlet newProxy = (target, handler) => new Proxy(target, handler);\nlet canProxy = canProxyDefault;\nlet createSnapshot = createSnapshotDefault;\nlet createHandler = createHandlerDefault;\nfunction proxy(baseObject = {}) {\n if (!isObject(baseObject)) {\n throw new Error(\"object required\");\n }\n const found = proxyCache.get(baseObject);\n if (found) {\n return found;\n }\n let version = versionHolder[0];\n const listeners = /* @__PURE__ */ new Set();\n const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n if (version !== nextVersion) {\n version = nextVersion;\n listeners.forEach((listener) => listener(op, nextVersion));\n }\n };\n let checkVersion = versionHolder[1];\n const ensureVersion = (nextCheckVersion = ++versionHolder[1]) => {\n if (checkVersion !== nextCheckVersion && !listeners.size) {\n checkVersion = nextCheckVersion;\n propProxyStates.forEach(([propProxyState]) => {\n const propVersion = propProxyState[1](nextCheckVersion);\n if (propVersion > version) {\n version = propVersion;\n }\n });\n }\n return version;\n };\n const createPropListener = (prop) => (op, nextVersion) => {\n const newOp = [...op];\n newOp[1] = [prop, ...newOp[1]];\n notifyUpdate(newOp, nextVersion);\n };\n const propProxyStates = /* @__PURE__ */ new Map();\n const addPropListener = (prop, propValue) => {\n const propProxyState = !refSet.has(propValue) && proxyStateMap.get(propValue);\n if (propProxyState) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && propProxyStates.has(prop)) {\n throw new Error(\"prop listener already exists\");\n }\n if (listeners.size) {\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n } else {\n propProxyStates.set(prop, [propProxyState]);\n }\n }\n };\n const removePropListener = (prop) => {\n var _a;\n const entry = propProxyStates.get(prop);\n if (entry) {\n propProxyStates.delete(prop);\n (_a = entry[1]) == null ? void 0 : _a.call(entry);\n }\n };\n const addListener = (listener) => {\n listeners.add(listener);\n if (listeners.size === 1) {\n propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && prevRemove) {\n throw new Error(\"remove already exists\");\n }\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n });\n }\n const removeListener = () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n propProxyStates.forEach(([propProxyState, remove], prop) => {\n if (remove) {\n remove();\n propProxyStates.set(prop, [propProxyState]);\n }\n });\n }\n };\n return removeListener;\n };\n let initializing = true;\n const handler = createHandler(\n () => initializing,\n addPropListener,\n removePropListener,\n notifyUpdate\n );\n const proxyObject = newProxy(baseObject, handler);\n proxyCache.set(baseObject, proxyObject);\n const proxyState = [baseObject, ensureVersion, addListener];\n proxyStateMap.set(proxyObject, proxyState);\n Reflect.ownKeys(baseObject).forEach((key) => {\n const desc = Object.getOwnPropertyDescriptor(\n baseObject,\n key\n );\n if (\"value\" in desc && desc.writable) {\n proxyObject[key] = baseObject[key];\n }\n });\n initializing = false;\n return proxyObject;\n}\nfunction getVersion(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n return proxyState == null ? void 0 : proxyState[1]();\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n let promise;\n const ops = [];\n const addListener = proxyState[2];\n let isListenerActive = false;\n const listener = (op) => {\n ops.push(op);\n if (notifyInSync) {\n callback(ops.splice(0));\n return;\n }\n if (!promise) {\n promise = Promise.resolve().then(() => {\n promise = void 0;\n if (isListenerActive) {\n callback(ops.splice(0));\n }\n });\n }\n };\n const removeListener = addListener(listener);\n isListenerActive = true;\n return () => {\n isListenerActive = false;\n removeListener();\n };\n}\nfunction snapshot(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n const [target, ensureVersion] = proxyState;\n return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n refSet.add(obj);\n return obj;\n}\nfunction unstable_getInternalStates() {\n return {\n proxyStateMap,\n refSet,\n snapCache,\n versionHolder,\n proxyCache\n };\n}\nfunction unstable_replaceInternalFunction(name, fn) {\n switch (name) {\n case \"objectIs\":\n objectIs = fn(objectIs);\n break;\n case \"newProxy\":\n newProxy = fn(newProxy);\n break;\n case \"canProxy\":\n canProxy = fn(canProxy);\n break;\n case \"createSnapshot\":\n createSnapshot = fn(createSnapshot);\n break;\n case \"createHandler\":\n createHandler = fn(createHandler);\n break;\n default:\n throw new Error(\"unknown function\");\n }\n}\n\nexport { getVersion, proxy, ref, snapshot, subscribe, unstable_getInternalStates, unstable_replaceInternalFunction };\n","import { subscribe, snapshot, unstable_getInternalStates, proxy } from 'valtio/vanilla';\n\nfunction subscribeKey(proxyObject, key, callback, notifyInSync) {\n let prevValue = proxyObject[key];\n return subscribe(\n proxyObject,\n () => {\n const nextValue = proxyObject[key];\n if (!Object.is(prevValue, nextValue)) {\n callback(prevValue = nextValue);\n }\n },\n notifyInSync\n );\n}\n\nlet currentCleanups;\nfunction watch(callback, options) {\n let alive = true;\n const cleanups = /* @__PURE__ */ new Set();\n const subscriptions = /* @__PURE__ */ new Map();\n const cleanup = () => {\n if (alive) {\n alive = false;\n cleanups.forEach((clean) => clean());\n cleanups.clear();\n subscriptions.forEach((unsubscribe) => unsubscribe());\n subscriptions.clear();\n }\n };\n const revalidate = async () => {\n if (!alive) {\n return;\n }\n cleanups.forEach((clean) => clean());\n cleanups.clear();\n const proxiesToSubscribe = /* @__PURE__ */ new Set();\n const parent = currentCleanups;\n currentCleanups = cleanups;\n try {\n const promiseOrPossibleCleanup = callback((proxyObject) => {\n proxiesToSubscribe.add(proxyObject);\n if (alive && !subscriptions.has(proxyObject)) {\n const unsubscribe = subscribe(proxyObject, revalidate, options == null ? void 0 : options.sync);\n subscriptions.set(proxyObject, unsubscribe);\n }\n return proxyObject;\n });\n const couldBeCleanup = promiseOrPossibleCleanup && promiseOrPossibleCleanup instanceof Promise ? await promiseOrPossibleCleanup : promiseOrPossibleCleanup;\n if (couldBeCleanup) {\n if (alive) {\n cleanups.add(couldBeCleanup);\n } else {\n cleanup();\n }\n }\n } finally {\n currentCleanups = parent;\n }\n subscriptions.forEach((unsubscribe, proxyObject) => {\n if (!proxiesToSubscribe.has(proxyObject)) {\n subscriptions.delete(proxyObject);\n unsubscribe();\n }\n });\n };\n if (currentCleanups) {\n currentCleanups.add(cleanup);\n }\n revalidate();\n return cleanup;\n}\n\nconst DEVTOOLS = Symbol();\nfunction devtools(proxyObject, options) {\n const { enabled, name = \"\", ...rest } = options || {};\n let extension;\n try {\n extension = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extension) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\"[Warning] Please install/enable Redux devtools extension\");\n }\n return;\n }\n let isTimeTraveling = false;\n const devtools2 = extension.connect({ name, ...rest });\n const unsub1 = subscribe(proxyObject, (ops) => {\n const action = ops.filter(([_, path]) => path[0] !== DEVTOOLS).map(([op, path]) => `${op}:${path.map(String).join(\".\")}`).join(\", \");\n if (!action) {\n return;\n }\n if (isTimeTraveling) {\n isTimeTraveling = false;\n } else {\n const snapWithoutDevtools = Object.assign({}, snapshot(proxyObject));\n delete snapWithoutDevtools[DEVTOOLS];\n devtools2.send(\n {\n type: action,\n updatedAt: (/* @__PURE__ */ new Date()).toLocaleString()\n },\n snapWithoutDevtools\n );\n }\n });\n const unsub2 = devtools2.subscribe((message) => {\n var _a, _b, _c, _d, _e, _f;\n if (message.type === \"ACTION\" && message.payload) {\n try {\n Object.assign(proxyObject, JSON.parse(message.payload));\n } catch (e) {\n console.error(\n \"please dispatch a serializable value that JSON.parse() and proxy() support\\n\",\n e\n );\n }\n }\n if (message.type === \"DISPATCH\" && message.state) {\n if (((_a = message.payload) == null ? void 0 : _a.type) === \"JUMP_TO_ACTION\" || ((_b = message.payload) == null ? void 0 : _b.type) === \"JUMP_TO_STATE\") {\n isTimeTraveling = true;\n const state = JSON.parse(message.state);\n Object.assign(proxyObject, state);\n }\n proxyObject[DEVTOOLS] = message;\n } else if (message.type === \"DISPATCH\" && ((_c = message.payload) == null ? void 0 : _c.type) === \"COMMIT\") {\n devtools2.init(snapshot(proxyObject));\n } else if (message.type === \"DISPATCH\" && ((_d = message.payload) == null ? void 0 : _d.type) === \"IMPORT_STATE\") {\n const actions = (_e = message.payload.nextLiftedState) == null ? void 0 : _e.actionsById;\n const computedStates = ((_f = message.payload.nextLiftedState) == null ? void 0 : _f.computedStates) || [];\n isTimeTraveling = true;\n computedStates.forEach(({ state }, index) => {\n const action = actions[index] || \"No action found\";\n Object.assign(proxyObject, state);\n if (index === 0) {\n devtools2.init(snapshot(proxyObject));\n } else {\n devtools2.send(action, snapshot(proxyObject));\n }\n });\n }\n });\n devtools2.init(snapshot(proxyObject));\n return () => {\n unsub1();\n unsub2 == null ? void 0 : unsub2();\n };\n}\n\nconst { proxyStateMap: proxyStateMap$1, snapCache: snapCache$1 } = unstable_getInternalStates();\nconst isProxy$1 = (x) => proxyStateMap$1.has(x);\nconst isProxyMap = (obj) => {\n return Symbol.toStringTag in obj && obj[Symbol.toStringTag] === \"Map\" && proxyStateMap$1.has(obj);\n};\nfunction proxyMap(entries) {\n const initialData = [];\n let initialIndex = 0;\n const indexMap = /* @__PURE__ */ new Map();\n const snapMapCache = /* @__PURE__ */ new WeakMap();\n const registerSnapMap = () => {\n const cache = snapCache$1.get(vObject);\n const latestSnap = cache == null ? void 0 : cache[1];\n if (latestSnap && !snapMapCache.has(latestSnap)) {\n const clonedMap = new Map(indexMap);\n snapMapCache.set(latestSnap, clonedMap);\n }\n };\n const getMapForThis = (x) => snapMapCache.get(x) || indexMap;\n if (entries) {\n if (typeof entries[Symbol.iterator] !== \"function\") {\n throw new TypeError(\n \"proxyMap:\\n\tinitial state must be iterable\\n\t\ttip: structure should be [[key, value]]\"\n );\n }\n for (const [key, value] of entries) {\n indexMap.set(key, initialIndex);\n initialData[initialIndex++] = value;\n }\n }\n const vObject = {\n data: initialData,\n index: initialIndex,\n epoch: 0,\n get size() {\n if (!isProxy$1(this)) {\n registerSnapMap();\n }\n const map = getMapForThis(this);\n return map.size;\n },\n get(key) {\n const map = getMapForThis(this);\n const index = map.get(key);\n if (index === void 0) {\n this.epoch;\n return void 0;\n }\n return this.data[index];\n },\n has(key) {\n const map = getMapForThis(this);\n this.epoch;\n return map.has(key);\n },\n set(key, value) {\n if (!isProxy$1(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n const index = indexMap.get(key);\n if (index === void 0) {\n indexMap.set(key, this.index);\n this.data[this.index++] = value;\n } else {\n this.data[index] = value;\n }\n this.epoch++;\n return this;\n },\n delete(key) {\n if (!isProxy$1(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n const index = indexMap.get(key);\n if (index === void 0) {\n return false;\n }\n delete this.data[index];\n indexMap.delete(key);\n this.epoch++;\n return true;\n },\n clear() {\n if (!isProxy$1(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n this.data.length = 0;\n this.index = 0;\n this.epoch++;\n indexMap.clear();\n },\n forEach(cb) {\n this.epoch;\n const map = getMapForThis(this);\n map.forEach((index, key) => {\n cb(this.data[index], key, this);\n });\n },\n *entries() {\n this.epoch;\n const map = getMapForThis(this);\n for (const [key, index] of map) {\n yield [key, this.data[index]];\n }\n },\n *keys() {\n this.epoch;\n const map = getMapForThis(this);\n for (const key of map.keys()) {\n yield key;\n }\n },\n *values() {\n this.epoch;\n const map = getMapForThis(this);\n for (const index of map.values()) {\n yield this.data[index];\n }\n },\n [Symbol.iterator]() {\n return this.entries();\n },\n get [Symbol.toStringTag]() {\n return \"Map\";\n },\n toJSON() {\n return new Map(this.entries());\n }\n };\n const proxiedObject = proxy(vObject);\n Object.defineProperties(proxiedObject, {\n size: { enumerable: false },\n index: { enumerable: false },\n epoch: { enumerable: false },\n data: { enumerable: false },\n toJSON: { enumerable: false }\n });\n Object.seal(proxiedObject);\n return proxiedObject;\n}\n\nconst { proxyStateMap, snapCache } = unstable_getInternalStates();\nconst maybeProxify = (x) => typeof x === \"object\" ? proxy({ x }).x : x;\nconst isProxy = (x) => proxyStateMap.has(x);\nconst isProxySet = (obj) => {\n return Symbol.toStringTag in obj && obj[Symbol.toStringTag] === \"Set\" && proxyStateMap.has(obj);\n};\nfunction proxySet(initialValues) {\n const initialData = [];\n const indexMap = /* @__PURE__ */ new Map();\n let initialIndex = 0;\n const snapMapCache = /* @__PURE__ */ new WeakMap();\n const registerSnapMap = () => {\n const cache = snapCache.get(vObject);\n const latestSnap = cache == null ? void 0 : cache[1];\n if (latestSnap && !snapMapCache.has(latestSnap)) {\n const clonedMap = new Map(indexMap);\n snapMapCache.set(latestSnap, clonedMap);\n }\n };\n const getMapForThis = (x) => snapMapCache.get(x) || indexMap;\n if (initialValues) {\n if (typeof initialValues[Symbol.iterator] !== \"function\") {\n throw new TypeError(\"not iterable\");\n }\n for (const value of initialValues) {\n if (!indexMap.has(value)) {\n const v = maybeProxify(value);\n indexMap.set(v, initialIndex);\n initialData[initialIndex++] = v;\n }\n }\n }\n const vObject = {\n data: initialData,\n index: initialIndex,\n epoch: 0,\n get size() {\n if (!isProxy(this)) {\n registerSnapMap();\n }\n return indexMap.size;\n },\n has(value) {\n const map = getMapForThis(this);\n const v = maybeProxify(value);\n this.epoch;\n return map.has(v);\n },\n add(value) {\n if (!isProxy(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n const v = maybeProxify(value);\n if (!indexMap.has(v)) {\n indexMap.set(v, this.index);\n this.data[this.index++] = v;\n this.epoch++;\n }\n return this;\n },\n delete(value) {\n if (!isProxy(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n const v = maybeProxify(value);\n const index = indexMap.get(v);\n if (index === void 0) {\n return false;\n }\n delete this.data[index];\n indexMap.delete(v);\n this.epoch++;\n return true;\n },\n clear() {\n if (!isProxy(this)) {\n throw new Error(\"Cannot perform mutations on a snapshot\");\n }\n this.data.length = 0;\n this.index = 0;\n this.epoch++;\n indexMap.clear();\n },\n forEach(cb) {\n this.epoch;\n const map = getMapForThis(this);\n map.forEach((index) => {\n cb(this.data[index], this.data[index], this);\n });\n },\n *values() {\n this.epoch;\n const map = getMapForThis(this);\n for (const index of map.values()) {\n yield this.data[index];\n }\n },\n keys() {\n this.epoch;\n return this.values();\n },\n *entries() {\n this.epoch;\n const map = getMapForThis(this);\n for (const index of map.values()) {\n const value = this.data[index];\n yield [value, value];\n }\n },\n toJSON() {\n return new Set(this.values());\n },\n [Symbol.iterator]() {\n return this.values();\n },\n get [Symbol.toStringTag]() {\n return \"Set\";\n },\n intersection(other) {\n this.epoch;\n const otherSet = proxySet(other);\n const resultSet = proxySet();\n for (const value of this.values()) {\n if (otherSet.has(value)) {\n resultSet.add(value);\n }\n }\n return proxySet(resultSet);\n },\n union(other) {\n this.epoch;\n const resultSet = proxySet();\n const otherSet = proxySet(other);\n for (const value of this.values()) {\n resultSet.add(value);\n }\n for (const value of otherSet) {\n resultSet.add(value);\n }\n return proxySet(resultSet);\n },\n difference(other) {\n this.epoch;\n const resultSet = proxySet();\n const otherSet = proxySet(other);\n for (const value of this.values()) {\n if (!otherSet.has(value)) {\n resultSet.add(value);\n }\n }\n return proxySet(resultSet);\n },\n symmetricDifference(other) {\n this.epoch;\n const resultSet = proxySet();\n const otherSet = proxySet(other);\n for (const value of this.values()) {\n if (!otherSet.has(value)) {\n resultSet.add(value);\n }\n }\n for (const value of otherSet.values()) {\n if (!this.has(value)) {\n resultSet.add(value);\n }\n }\n return proxySet(resultSet);\n },\n isSubsetOf(other) {\n this.epoch;\n const otherSet = proxySet(other);\n return this.size <= other.size && [...this.values()].every((value) => otherSet.has(value));\n },\n isSupersetOf(other) {\n this.epoch;\n const otherSet = proxySet(other);\n return this.size >= other.size && [...otherSet].every((value) => this.has(value));\n },\n isDisjointFrom(other) {\n this.epoch;\n const otherSet = proxySet(other);\n return [...this.values()].every((value) => !otherSet.has(value));\n }\n };\n const proxiedObject = proxy(vObject);\n Object.defineProperties(proxiedObject, {\n size: { enumerable: false },\n data: { enumerable: false },\n index: { enumerable: false },\n epoch: { enumerable: false },\n toJSON: { enumerable: false }\n });\n Object.seal(proxiedObject);\n return proxiedObject;\n}\n\nconst isObject = (x) => typeof x === \"object\" && x !== null;\nlet defaultRefSet;\nconst getDefaultRefSet = () => {\n if (!defaultRefSet) {\n defaultRefSet = unstable_getInternalStates().refSet;\n }\n return defaultRefSet;\n};\nfunction deepClone(obj, getRefSet = getDefaultRefSet) {\n if (!isObject(obj) || getRefSet().has(obj)) {\n return obj;\n }\n if (isProxySet(obj)) {\n return proxySet([...obj]);\n }\n if (isProxyMap(obj)) {\n return proxyMap([\n ...obj.entries()\n ]);\n }\n const baseObject = Array.isArray(obj) ? [] : Object.create(Object.getPrototypeOf(obj));\n Reflect.ownKeys(obj).forEach((key) => {\n baseObject[key] = deepClone(obj[key], getRefSet);\n });\n return baseObject;\n}\n\nexport { deepClone, devtools, proxyMap, proxySet, subscribeKey, watch };\n","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport {} from '@reown/appkit-common';\nconst SECURE_SITE = \n// eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n(typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_SECURE_SITE_ORIGIN']\n : undefined) || 'https://secure.walletconnect.org';\nexport const ONRAMP_PROVIDERS = [\n {\n label: 'Meld.io',\n name: 'meld',\n feeRange: '1-2%',\n url: 'https://meldcrypto.com',\n supportedChains: ['eip155', 'solana']\n }\n];\nexport const MELD_PUBLIC_KEY = 'WXETMuFUQmqqybHuRkSgxv:25B8LJHSfpG6LVjR2ytU5Cwh7Z4Sch2ocoU';\nexport const ConstantsUtil = {\n FOUR_MINUTES_MS: 240_000,\n TEN_SEC_MS: 10_000,\n FIVE_SEC_MS: 5_000,\n THREE_SEC_MS: 3_000,\n ONE_SEC_MS: 1_000,\n SECURE_SITE,\n SECURE_SITE_DASHBOARD: `${SECURE_SITE}/dashboard`,\n SECURE_SITE_FAVICON: `${SECURE_SITE}/images/favicon.png`,\n RESTRICTED_TIMEZONES: [\n 'ASIA/SHANGHAI',\n 'ASIA/URUMQI',\n 'ASIA/CHONGQING',\n 'ASIA/HARBIN',\n 'ASIA/KASHGAR',\n 'ASIA/MACAU',\n 'ASIA/HONG_KONG',\n 'ASIA/MACAO',\n 'ASIA/BEIJING',\n 'ASIA/HARBIN'\n ],\n SWAP_SUGGESTED_TOKENS: [\n 'ETH',\n 'UNI',\n '1INCH',\n 'AAVE',\n 'SOL',\n 'ADA',\n 'AVAX',\n 'DOT',\n 'LINK',\n 'NITRO',\n 'GAIA',\n 'MILK',\n 'TRX',\n 'NEAR',\n 'GNO',\n 'WBTC',\n 'DAI',\n 'WETH',\n 'USDC',\n 'USDT',\n 'ARB',\n 'BAL',\n 'BICO',\n 'CRV',\n 'ENS',\n 'MATIC',\n 'OP'\n ],\n SWAP_POPULAR_TOKENS: [\n 'ETH',\n 'UNI',\n '1INCH',\n 'AAVE',\n 'SOL',\n 'ADA',\n 'AVAX',\n 'DOT',\n 'LINK',\n 'NITRO',\n 'GAIA',\n 'MILK',\n 'TRX',\n 'NEAR',\n 'GNO',\n 'WBTC',\n 'DAI',\n 'WETH',\n 'USDC',\n 'USDT',\n 'ARB',\n 'BAL',\n 'BICO',\n 'CRV',\n 'ENS',\n 'MATIC',\n 'OP',\n 'METAL',\n 'DAI',\n 'CHAMP',\n 'WOLF',\n 'SALE',\n 'BAL',\n 'BUSD',\n 'MUST',\n 'BTCpx',\n 'ROUTE',\n 'HEX',\n 'WELT',\n 'amDAI',\n 'VSQ',\n 'VISION',\n 'AURUM',\n 'pSP',\n 'SNX',\n 'VC',\n 'LINK',\n 'CHP',\n 'amUSDT',\n 'SPHERE',\n 'FOX',\n 'GIDDY',\n 'GFC',\n 'OMEN',\n 'OX_OLD',\n 'DE',\n 'WNT'\n ],\n BALANCE_SUPPORTED_CHAINS: [\n CommonConstantsUtil.CHAIN.EVM,\n CommonConstantsUtil.CHAIN.SOLANA\n ],\n SWAP_SUPPORTED_NETWORKS: [\n // Ethereum'\n 'eip155:1',\n // Arbitrum One'\n 'eip155:42161',\n // Optimism'\n 'eip155:10',\n // ZKSync Era'\n 'eip155:324',\n // Base'\n 'eip155:8453',\n // BNB Smart Chain'\n 'eip155:56',\n // Polygon'\n 'eip155:137',\n // Gnosis'\n 'eip155:100',\n // Avalanche'\n 'eip155:43114',\n // Fantom'\n 'eip155:250',\n // Klaytn'\n 'eip155:8217',\n // Aurora\n 'eip155:1313161554'\n ],\n NAMES_SUPPORTED_CHAIN_NAMESPACES: [CommonConstantsUtil.CHAIN.EVM],\n ONRAMP_SUPPORTED_CHAIN_NAMESPACES: [\n CommonConstantsUtil.CHAIN.EVM,\n CommonConstantsUtil.CHAIN.SOLANA\n ],\n ACTIVITY_ENABLED_CHAIN_NAMESPACES: [CommonConstantsUtil.CHAIN.EVM],\n NATIVE_TOKEN_ADDRESS: {\n eip155: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',\n solana: 'So11111111111111111111111111111111111111111',\n polkadot: '0x',\n bip122: '0x',\n cosmos: '0x',\n sui: '0x',\n stacks: '0x'\n },\n CONVERT_SLIPPAGE_TOLERANCE: 1,\n CONNECT_LABELS: {\n MOBILE: 'Open and continue in the wallet app',\n WEB: 'Open and continue in the wallet app'\n },\n SEND_SUPPORTED_NAMESPACES: [\n CommonConstantsUtil.CHAIN.EVM,\n CommonConstantsUtil.CHAIN.SOLANA\n ],\n DEFAULT_REMOTE_FEATURES: {\n swaps: ['1inch'],\n onramp: ['meld'],\n email: true,\n socials: [\n 'google',\n 'x',\n 'discord',\n 'farcaster',\n 'github',\n 'apple',\n 'facebook'\n ],\n activity: true,\n reownBranding: true,\n multiWallet: false,\n emailCapture: false\n },\n DEFAULT_REMOTE_FEATURES_DISABLED: {\n email: false,\n socials: false,\n swaps: false,\n onramp: false,\n activity: false,\n reownBranding: false,\n emailCapture: false\n },\n DEFAULT_FEATURES: {\n receive: true,\n send: true,\n emailShowWallets: true,\n connectorTypeOrder: [\n 'walletConnect',\n 'recent',\n 'injected',\n 'featured',\n 'custom',\n 'external',\n 'recommended'\n ],\n analytics: true,\n allWallets: true,\n legalCheckbox: false,\n smartSessions: false,\n collapseWallets: false,\n walletFeaturesOrder: ['onramp', 'swaps', 'receive', 'send'],\n connectMethodsOrder: undefined,\n pay: false\n },\n DEFAULT_SOCIALS: [\n 'google',\n 'x',\n 'farcaster',\n 'discord',\n 'apple',\n 'github',\n 'facebook'\n ],\n DEFAULT_ACCOUNT_TYPES: {\n bip122: 'payment',\n eip155: 'smartAccount',\n polkadot: 'eoa',\n solana: 'eoa'\n },\n ADAPTER_TYPES: {\n UNIVERSAL: 'universal',\n SOLANA: 'solana',\n WAGMI: 'wagmi',\n ETHERS: 'ethers',\n ETHERS5: 'ethers5',\n BITCOIN: 'bitcoin'\n },\n SIWX_DEFAULTS: {\n signOutOnDisconnect: true\n }\n};\n//# sourceMappingURL=ConstantsUtil.js.map","/* eslint-disable no-console */\nimport { ConstantsUtil as CommonConstantsUtil, SafeLocalStorage, SafeLocalStorageKeys, getSafeConnectorIdKey } from '@reown/appkit-common';\n// -- Utility -----------------------------------------------------------------\nexport const StorageUtil = {\n // Cache expiry in milliseconds\n cacheExpiry: {\n portfolio: 30000,\n nativeBalance: 30000,\n ens: 300000,\n identity: 300000,\n transactionsHistory: 15000,\n tokenPrice: 15000\n },\n isCacheExpired(timestamp, cacheExpiry) {\n return Date.now() - timestamp > cacheExpiry;\n },\n getActiveNetworkProps() {\n const namespace = StorageUtil.getActiveNamespace();\n const caipNetworkId = StorageUtil.getActiveCaipNetworkId();\n const stringChainId = caipNetworkId ? caipNetworkId.split(':')[1] : undefined;\n // eslint-disable-next-line no-nested-ternary\n const chainId = stringChainId\n ? isNaN(Number(stringChainId))\n ? stringChainId\n : Number(stringChainId)\n : undefined;\n return {\n namespace,\n caipNetworkId,\n chainId\n };\n },\n setWalletConnectDeepLink({ name, href }) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.DEEPLINK_CHOICE, JSON.stringify({ href, name }));\n }\n catch {\n console.info('Unable to set WalletConnect deep link');\n }\n },\n getWalletConnectDeepLink() {\n try {\n const deepLink = SafeLocalStorage.getItem(SafeLocalStorageKeys.DEEPLINK_CHOICE);\n if (deepLink) {\n return JSON.parse(deepLink);\n }\n }\n catch {\n console.info('Unable to get WalletConnect deep link');\n }\n return undefined;\n },\n deleteWalletConnectDeepLink() {\n try {\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.DEEPLINK_CHOICE);\n }\n catch {\n console.info('Unable to delete WalletConnect deep link');\n }\n },\n setActiveNamespace(namespace) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.ACTIVE_NAMESPACE, namespace);\n }\n catch {\n console.info('Unable to set active namespace');\n }\n },\n setActiveCaipNetworkId(caipNetworkId) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID, caipNetworkId);\n StorageUtil.setActiveNamespace(caipNetworkId.split(':')[0]);\n }\n catch {\n console.info('Unable to set active caip network id');\n }\n },\n getActiveCaipNetworkId() {\n try {\n return SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);\n }\n catch {\n console.info('Unable to get active caip network id');\n return undefined;\n }\n },\n deleteActiveCaipNetworkId() {\n try {\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);\n }\n catch {\n console.info('Unable to delete active caip network id');\n }\n },\n deleteConnectedConnectorId(namespace) {\n try {\n const key = getSafeConnectorIdKey(namespace);\n SafeLocalStorage.removeItem(key);\n }\n catch {\n console.info('Unable to delete connected connector id');\n }\n },\n setAppKitRecent(wallet) {\n try {\n const recentWallets = StorageUtil.getRecentWallets();\n const exists = recentWallets.find(w => w.id === wallet.id);\n if (!exists) {\n recentWallets.unshift(wallet);\n if (recentWallets.length > 2) {\n recentWallets.pop();\n }\n SafeLocalStorage.setItem(SafeLocalStorageKeys.RECENT_WALLETS, JSON.stringify(recentWallets));\n }\n }\n catch {\n console.info('Unable to set AppKit recent');\n }\n },\n getRecentWallets() {\n try {\n const recent = SafeLocalStorage.getItem(SafeLocalStorageKeys.RECENT_WALLETS);\n return recent ? JSON.parse(recent) : [];\n }\n catch {\n console.info('Unable to get AppKit recent');\n }\n return [];\n },\n setConnectedConnectorId(namespace, connectorId) {\n try {\n const key = getSafeConnectorIdKey(namespace);\n SafeLocalStorage.setItem(key, connectorId);\n }\n catch {\n console.info('Unable to set Connected Connector Id');\n }\n },\n getActiveNamespace() {\n try {\n const activeNamespace = SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_NAMESPACE);\n return activeNamespace;\n }\n catch {\n console.info('Unable to get active namespace');\n }\n return undefined;\n },\n getConnectedConnectorId(namespace) {\n if (!namespace) {\n return undefined;\n }\n try {\n const key = getSafeConnectorIdKey(namespace);\n return SafeLocalStorage.getItem(key);\n }\n catch (e) {\n console.info('Unable to get connected connector id in namespace', namespace);\n }\n return undefined;\n },\n setConnectedSocialProvider(socialProvider) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTED_SOCIAL, socialProvider);\n }\n catch {\n console.info('Unable to set connected social provider');\n }\n },\n getConnectedSocialProvider() {\n try {\n return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_SOCIAL);\n }\n catch {\n console.info('Unable to get connected social provider');\n }\n return undefined;\n },\n deleteConnectedSocialProvider() {\n try {\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.CONNECTED_SOCIAL);\n }\n catch {\n console.info('Unable to delete connected social provider');\n }\n },\n getConnectedSocialUsername() {\n try {\n return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_SOCIAL_USERNAME);\n }\n catch {\n console.info('Unable to get connected social username');\n }\n return undefined;\n },\n getStoredActiveCaipNetworkId() {\n const storedCaipNetworkId = SafeLocalStorage.getItem(SafeLocalStorageKeys.ACTIVE_CAIP_NETWORK_ID);\n const networkId = storedCaipNetworkId?.split(':')?.[1];\n return networkId;\n },\n setConnectionStatus(status) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTION_STATUS, status);\n }\n catch {\n console.info('Unable to set connection status');\n }\n },\n getConnectionStatus() {\n try {\n return SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTION_STATUS);\n }\n catch {\n return undefined;\n }\n },\n getConnectedNamespaces() {\n try {\n const namespaces = SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTED_NAMESPACES);\n if (!namespaces?.length) {\n return [];\n }\n return namespaces.split(',');\n }\n catch {\n return [];\n }\n },\n setConnectedNamespaces(namespaces) {\n try {\n const uniqueNamespaces = Array.from(new Set(namespaces));\n SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTED_NAMESPACES, uniqueNamespaces.join(','));\n }\n catch {\n console.info('Unable to set namespaces in storage');\n }\n },\n addConnectedNamespace(namespace) {\n try {\n const namespaces = StorageUtil.getConnectedNamespaces();\n if (!namespaces.includes(namespace)) {\n namespaces.push(namespace);\n StorageUtil.setConnectedNamespaces(namespaces);\n }\n }\n catch {\n console.info('Unable to add connected namespace');\n }\n },\n removeConnectedNamespace(namespace) {\n try {\n const namespaces = StorageUtil.getConnectedNamespaces();\n const index = namespaces.indexOf(namespace);\n if (index > -1) {\n namespaces.splice(index, 1);\n StorageUtil.setConnectedNamespaces(namespaces);\n }\n }\n catch {\n console.info('Unable to remove connected namespace');\n }\n },\n getTelegramSocialProvider() {\n try {\n return SafeLocalStorage.getItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER);\n }\n catch {\n console.info('Unable to get telegram social provider');\n return null;\n }\n },\n setTelegramSocialProvider(socialProvider) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER, socialProvider);\n }\n catch {\n console.info('Unable to set telegram social provider');\n }\n },\n removeTelegramSocialProvider() {\n try {\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.TELEGRAM_SOCIAL_PROVIDER);\n }\n catch {\n console.info('Unable to remove telegram social provider');\n }\n },\n getBalanceCache() {\n let cache = {};\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.PORTFOLIO_CACHE);\n cache = result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get balance cache');\n }\n return cache;\n },\n removeAddressFromBalanceCache(caipAddress) {\n try {\n const cache = StorageUtil.getBalanceCache();\n SafeLocalStorage.setItem(SafeLocalStorageKeys.PORTFOLIO_CACHE, JSON.stringify({ ...cache, [caipAddress]: undefined }));\n }\n catch {\n console.info('Unable to remove address from balance cache', caipAddress);\n }\n },\n getBalanceCacheForCaipAddress(caipAddress) {\n try {\n const cache = StorageUtil.getBalanceCache();\n const balanceCache = cache[caipAddress];\n // We want to discard cache if it's older than the cache expiry\n if (balanceCache &&\n !this.isCacheExpired(balanceCache.timestamp, this.cacheExpiry.portfolio)) {\n return balanceCache.balance;\n }\n StorageUtil.removeAddressFromBalanceCache(caipAddress);\n }\n catch {\n console.info('Unable to get balance cache for address', caipAddress);\n }\n return undefined;\n },\n updateBalanceCache(params) {\n try {\n const cache = StorageUtil.getBalanceCache();\n cache[params.caipAddress] = params;\n SafeLocalStorage.setItem(SafeLocalStorageKeys.PORTFOLIO_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update balance cache', params);\n }\n },\n getNativeBalanceCache() {\n let cache = {};\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE);\n cache = result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get balance cache');\n }\n return cache;\n },\n removeAddressFromNativeBalanceCache(caipAddress) {\n try {\n const cache = StorageUtil.getBalanceCache();\n SafeLocalStorage.setItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE, JSON.stringify({ ...cache, [caipAddress]: undefined }));\n }\n catch {\n console.info('Unable to remove address from balance cache', caipAddress);\n }\n },\n getNativeBalanceCacheForCaipAddress(caipAddress) {\n try {\n const cache = StorageUtil.getNativeBalanceCache();\n const nativeBalanceCache = cache[caipAddress];\n // We want to discard cache if it's older than the cache expiry\n if (nativeBalanceCache &&\n !this.isCacheExpired(nativeBalanceCache.timestamp, this.cacheExpiry.nativeBalance)) {\n return nativeBalanceCache;\n }\n console.info('Discarding cache for address', caipAddress);\n StorageUtil.removeAddressFromBalanceCache(caipAddress);\n }\n catch {\n console.info('Unable to get balance cache for address', caipAddress);\n }\n return undefined;\n },\n updateNativeBalanceCache(params) {\n try {\n const cache = StorageUtil.getNativeBalanceCache();\n cache[params.caipAddress] = params;\n SafeLocalStorage.setItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update balance cache', params);\n }\n },\n getEnsCache() {\n let cache = {};\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.ENS_CACHE);\n cache = result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get ens name cache');\n }\n return cache;\n },\n getEnsFromCacheForAddress(address) {\n try {\n const cache = StorageUtil.getEnsCache();\n const ensCache = cache[address];\n // We want to discard cache if it's older than the cache expiry\n if (ensCache && !this.isCacheExpired(ensCache.timestamp, this.cacheExpiry.ens)) {\n return ensCache.ens;\n }\n StorageUtil.removeEnsFromCache(address);\n }\n catch {\n console.info('Unable to get ens name from cache', address);\n }\n return undefined;\n },\n updateEnsCache(params) {\n try {\n const cache = StorageUtil.getEnsCache();\n cache[params.address] = params;\n SafeLocalStorage.setItem(SafeLocalStorageKeys.ENS_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update ens name cache', params);\n }\n },\n removeEnsFromCache(address) {\n try {\n const cache = StorageUtil.getEnsCache();\n SafeLocalStorage.setItem(SafeLocalStorageKeys.ENS_CACHE, JSON.stringify({ ...cache, [address]: undefined }));\n }\n catch {\n console.info('Unable to remove ens name from cache', address);\n }\n },\n getIdentityCache() {\n let cache = {};\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.IDENTITY_CACHE);\n cache = result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get identity cache');\n }\n return cache;\n },\n getIdentityFromCacheForAddress(address) {\n try {\n const cache = StorageUtil.getIdentityCache();\n const identityCache = cache[address];\n // We want to discard cache if it's older than the cache expiry\n if (identityCache &&\n !this.isCacheExpired(identityCache.timestamp, this.cacheExpiry.identity)) {\n return identityCache.identity;\n }\n StorageUtil.removeIdentityFromCache(address);\n }\n catch {\n console.info('Unable to get identity from cache', address);\n }\n return undefined;\n },\n updateIdentityCache(params) {\n try {\n const cache = StorageUtil.getIdentityCache();\n cache[params.address] = {\n identity: params.identity,\n timestamp: params.timestamp\n };\n SafeLocalStorage.setItem(SafeLocalStorageKeys.IDENTITY_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update identity cache', params);\n }\n },\n removeIdentityFromCache(address) {\n try {\n const cache = StorageUtil.getIdentityCache();\n SafeLocalStorage.setItem(SafeLocalStorageKeys.IDENTITY_CACHE, JSON.stringify({ ...cache, [address]: undefined }));\n }\n catch {\n console.info('Unable to remove identity from cache', address);\n }\n },\n clearAddressCache() {\n try {\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.PORTFOLIO_CACHE);\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.NATIVE_BALANCE_CACHE);\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.ENS_CACHE);\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.IDENTITY_CACHE);\n SafeLocalStorage.removeItem(SafeLocalStorageKeys.HISTORY_TRANSACTIONS_CACHE);\n }\n catch {\n console.info('Unable to clear address cache');\n }\n },\n setPreferredAccountTypes(accountTypes) {\n try {\n SafeLocalStorage.setItem(SafeLocalStorageKeys.PREFERRED_ACCOUNT_TYPES, JSON.stringify(accountTypes));\n }\n catch {\n console.info('Unable to set preferred account types', accountTypes);\n }\n },\n getPreferredAccountTypes() {\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.PREFERRED_ACCOUNT_TYPES);\n if (!result) {\n return {};\n }\n return JSON.parse(result);\n }\n catch {\n console.info('Unable to get preferred account types');\n }\n return {};\n },\n setConnections(connections, chainNamespace) {\n try {\n const existingConnections = StorageUtil.getConnections();\n const existing = existingConnections[chainNamespace] ?? [];\n const connectorConnectionMap = new Map();\n for (const conn of existing) {\n connectorConnectionMap.set(conn.connectorId, { ...conn });\n }\n for (const conn of connections) {\n const existingConn = connectorConnectionMap.get(conn.connectorId);\n const isAuth = conn.connectorId === CommonConstantsUtil.CONNECTOR_ID.AUTH;\n if (existingConn && !isAuth) {\n const existingAddrs = new Set(existingConn.accounts.map(a => a.address.toLowerCase()));\n const newAccounts = conn.accounts.filter(a => !existingAddrs.has(a.address.toLowerCase()));\n existingConn.accounts.push(...newAccounts);\n }\n else {\n connectorConnectionMap.set(conn.connectorId, { ...conn });\n }\n }\n const dedupedConnections = {\n ...existingConnections,\n [chainNamespace]: Array.from(connectorConnectionMap.values())\n };\n SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTIONS, JSON.stringify(dedupedConnections));\n }\n catch (error) {\n console.error('Unable to sync connections to storage', error);\n }\n },\n getConnections() {\n try {\n const connectionsStorage = SafeLocalStorage.getItem(SafeLocalStorageKeys.CONNECTIONS);\n if (!connectionsStorage) {\n return {};\n }\n return JSON.parse(connectionsStorage);\n }\n catch (error) {\n console.error('Unable to get connections from storage', error);\n return {};\n }\n },\n deleteAddressFromConnection({ connectorId, address, namespace }) {\n try {\n const connections = StorageUtil.getConnections();\n const namespaceConnections = connections[namespace] ?? [];\n const connectionMap = new Map(namespaceConnections.map(conn => [conn.connectorId, conn]));\n const connector = connectionMap.get(connectorId);\n if (connector) {\n const updatedAccounts = connector.accounts.filter(acc => acc.address.toLowerCase() !== address.toLowerCase());\n if (updatedAccounts.length === 0) {\n connectionMap.delete(connectorId);\n }\n else {\n connectionMap.set(connectorId, {\n ...connector,\n accounts: connector.accounts.filter(acc => acc.address.toLowerCase() !== address.toLowerCase())\n });\n }\n }\n SafeLocalStorage.setItem(SafeLocalStorageKeys.CONNECTIONS, JSON.stringify({\n ...connections,\n [namespace]: Array.from(connectionMap.values())\n }));\n }\n catch {\n console.error(`Unable to remove address \"${address}\" from connector \"${connectorId}\" in namespace \"${namespace}\"`);\n }\n },\n getDisconnectedConnectorIds() {\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.DISCONNECTED_CONNECTOR_IDS);\n if (!result) {\n return {};\n }\n return JSON.parse(result);\n }\n catch {\n console.info('Unable to get disconnected connector ids');\n }\n return {};\n },\n addDisconnectedConnectorId(connectorId, chainNamespace) {\n try {\n const currentDisconnectedConnectorIds = StorageUtil.getDisconnectedConnectorIds();\n const disconnectedConnectorIdsByNamespace = currentDisconnectedConnectorIds[chainNamespace] ?? [];\n disconnectedConnectorIdsByNamespace.push(connectorId);\n SafeLocalStorage.setItem(SafeLocalStorageKeys.DISCONNECTED_CONNECTOR_IDS, JSON.stringify({\n ...currentDisconnectedConnectorIds,\n [chainNamespace]: Array.from(new Set(disconnectedConnectorIdsByNamespace))\n }));\n }\n catch {\n console.error(`Unable to set disconnected connector id \"${connectorId}\" for namespace \"${chainNamespace}\"`);\n }\n },\n removeDisconnectedConnectorId(connectorId, chainNamespace) {\n try {\n const currentDisconnectedConnectorIds = StorageUtil.getDisconnectedConnectorIds();\n let disconnectedConnectorIdsByNamespace = currentDisconnectedConnectorIds[chainNamespace] ?? [];\n disconnectedConnectorIdsByNamespace = disconnectedConnectorIdsByNamespace.filter(id => id.toLowerCase() !== connectorId.toLowerCase());\n SafeLocalStorage.setItem(SafeLocalStorageKeys.DISCONNECTED_CONNECTOR_IDS, JSON.stringify({\n ...currentDisconnectedConnectorIds,\n [chainNamespace]: Array.from(new Set(disconnectedConnectorIdsByNamespace))\n }));\n }\n catch {\n console.error(`Unable to remove disconnected connector id \"${connectorId}\" for namespace \"${chainNamespace}\"`);\n }\n },\n isConnectorDisconnected(connectorId, chainNamespace) {\n try {\n const currentDisconnectedConnectorIds = StorageUtil.getDisconnectedConnectorIds();\n const disconnectedConnectorIdsByNamespace = currentDisconnectedConnectorIds[chainNamespace] ?? [];\n return disconnectedConnectorIdsByNamespace.some(id => id.toLowerCase() === connectorId.toLowerCase());\n }\n catch {\n console.info(`Unable to get disconnected connector id \"${connectorId}\" for namespace \"${chainNamespace}\"`);\n }\n return false;\n },\n getTransactionsCache() {\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.HISTORY_TRANSACTIONS_CACHE);\n return result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get transactions cache');\n }\n return {};\n },\n getTransactionsCacheForAddress({ address, chainId = '' }) {\n try {\n const cache = StorageUtil.getTransactionsCache();\n const transactionsCache = cache[address]?.[chainId];\n // We want to discard cache if it's older than the cache expiry\n if (transactionsCache &&\n !this.isCacheExpired(transactionsCache.timestamp, this.cacheExpiry.transactionsHistory)) {\n return transactionsCache.transactions;\n }\n StorageUtil.removeTransactionsCache({ address, chainId });\n }\n catch {\n console.info('Unable to get transactions cache');\n }\n return undefined;\n },\n updateTransactionsCache({ address, chainId = '', timestamp, transactions }) {\n try {\n const cache = StorageUtil.getTransactionsCache();\n cache[address] = {\n ...cache[address],\n [chainId]: {\n timestamp,\n transactions\n }\n };\n SafeLocalStorage.setItem(SafeLocalStorageKeys.HISTORY_TRANSACTIONS_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update transactions cache', {\n address,\n chainId,\n timestamp,\n transactions\n });\n }\n },\n removeTransactionsCache({ address, chainId }) {\n try {\n const cache = StorageUtil.getTransactionsCache();\n const addressCache = cache?.[address] || {};\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [chainId]: _removed, ...updatedChainData } = addressCache;\n SafeLocalStorage.setItem(SafeLocalStorageKeys.HISTORY_TRANSACTIONS_CACHE, JSON.stringify({\n ...cache,\n [address]: updatedChainData\n }));\n }\n catch {\n console.info('Unable to remove transactions cache', { address, chainId });\n }\n },\n getTokenPriceCache() {\n try {\n const result = SafeLocalStorage.getItem(SafeLocalStorageKeys.TOKEN_PRICE_CACHE);\n return result ? JSON.parse(result) : {};\n }\n catch {\n console.info('Unable to get token price cache');\n }\n return {};\n },\n getTokenPriceCacheForAddresses(addresses) {\n try {\n const cache = StorageUtil.getTokenPriceCache();\n const tokenPriceCache = cache[addresses.join(',')];\n if (tokenPriceCache &&\n !this.isCacheExpired(tokenPriceCache.timestamp, this.cacheExpiry.tokenPrice)) {\n return tokenPriceCache.tokenPrice;\n }\n StorageUtil.removeTokenPriceCache(addresses);\n }\n catch {\n console.info('Unable to get token price cache for addresses', addresses);\n }\n return undefined;\n },\n updateTokenPriceCache(params) {\n try {\n const cache = StorageUtil.getTokenPriceCache();\n cache[params.addresses.join(',')] = {\n timestamp: params.timestamp,\n tokenPrice: params.tokenPrice\n };\n SafeLocalStorage.setItem(SafeLocalStorageKeys.TOKEN_PRICE_CACHE, JSON.stringify(cache));\n }\n catch {\n console.info('Unable to update token price cache', params);\n }\n },\n removeTokenPriceCache(addresses) {\n try {\n const cache = StorageUtil.getTokenPriceCache();\n SafeLocalStorage.setItem(SafeLocalStorageKeys.TOKEN_PRICE_CACHE, JSON.stringify({ ...cache, [addresses.join(',')]: undefined }));\n }\n catch {\n console.info('Unable to remove token price cache', addresses);\n }\n }\n};\n//# sourceMappingURL=StorageUtil.js.map","import { ConstantsUtil as CommonConstants } from '@reown/appkit-common';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nimport { StorageUtil } from './StorageUtil.js';\nexport const CoreHelperUtil = {\n isMobile() {\n if (this.isClient()) {\n return Boolean((window?.matchMedia &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(pointer:coarse)')?.matches) ||\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini/u.test(navigator.userAgent));\n }\n return false;\n },\n checkCaipNetwork(network, networkName = '') {\n return network?.caipNetworkId.toLocaleLowerCase().includes(networkName.toLowerCase());\n },\n isAndroid() {\n if (!this.isMobile()) {\n return false;\n }\n const ua = window?.navigator.userAgent.toLowerCase();\n return CoreHelperUtil.isMobile() && ua.includes('android');\n },\n isIos() {\n if (!this.isMobile()) {\n return false;\n }\n const ua = window?.navigator.userAgent.toLowerCase();\n return ua.includes('iphone') || ua.includes('ipad');\n },\n isSafari() {\n if (!this.isClient()) {\n return false;\n }\n const ua = window?.navigator.userAgent.toLowerCase();\n return ua.includes('safari');\n },\n isClient() {\n return typeof window !== 'undefined';\n },\n isPairingExpired(expiry) {\n return expiry ? expiry - Date.now() <= ConstantsUtil.TEN_SEC_MS : true;\n },\n isAllowedRetry(lastRetry, differenceMs = ConstantsUtil.ONE_SEC_MS) {\n return Date.now() - lastRetry >= differenceMs;\n },\n copyToClopboard(text) {\n navigator.clipboard.writeText(text);\n },\n isIframe() {\n try {\n return window?.self !== window?.top;\n }\n catch (e) {\n return false;\n }\n },\n isSafeApp() {\n if (CoreHelperUtil.isClient() && window.self !== window.top) {\n try {\n const ancestor = window?.location?.ancestorOrigins?.[0];\n const safeAppUrl = 'https://app.safe.global';\n if (ancestor) {\n const ancestorUrl = new URL(ancestor);\n const safeUrl = new URL(safeAppUrl);\n return ancestorUrl.hostname === safeUrl.hostname;\n }\n }\n catch {\n return false;\n }\n }\n return false;\n },\n getPairingExpiry() {\n return Date.now() + ConstantsUtil.FOUR_MINUTES_MS;\n },\n getNetworkId(caipAddress) {\n return caipAddress?.split(':')[1];\n },\n getPlainAddress(caipAddress) {\n return caipAddress?.split(':')[2];\n },\n async wait(milliseconds) {\n return new Promise(resolve => {\n setTimeout(resolve, milliseconds);\n });\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debounce(func, timeout = 500) {\n let timer = undefined;\n return (...args) => {\n function next() {\n func(...args);\n }\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(next, timeout);\n };\n },\n isHttpUrl(url) {\n return url.startsWith('http://') || url.startsWith('https://');\n },\n formatNativeUrl(appUrl, wcUri, universalLink = null) {\n if (CoreHelperUtil.isHttpUrl(appUrl)) {\n return this.formatUniversalUrl(appUrl, wcUri);\n }\n let safeAppUrl = appUrl;\n let safeUniversalLink = universalLink;\n if (!safeAppUrl.includes('://')) {\n safeAppUrl = appUrl.replaceAll('/', '').replaceAll(':', '');\n safeAppUrl = `${safeAppUrl}://`;\n }\n if (!safeAppUrl.endsWith('/')) {\n safeAppUrl = `${safeAppUrl}/`;\n }\n if (safeUniversalLink && !safeUniversalLink?.endsWith('/')) {\n safeUniversalLink = `${safeUniversalLink}/`;\n }\n // Android deeplinks in tg context require the uri to be encoded twice\n if (this.isTelegram() && this.isAndroid()) {\n // eslint-disable-next-line no-param-reassign\n wcUri = encodeURIComponent(wcUri);\n }\n const encodedWcUrl = encodeURIComponent(wcUri);\n return {\n redirect: `${safeAppUrl}wc?uri=${encodedWcUrl}`,\n redirectUniversalLink: safeUniversalLink\n ? `${safeUniversalLink}wc?uri=${encodedWcUrl}`\n : undefined,\n href: safeAppUrl\n };\n },\n formatUniversalUrl(appUrl, wcUri) {\n if (!CoreHelperUtil.isHttpUrl(appUrl)) {\n return this.formatNativeUrl(appUrl, wcUri);\n }\n let safeAppUrl = appUrl;\n if (!safeAppUrl.endsWith('/')) {\n safeAppUrl = `${safeAppUrl}/`;\n }\n const encodedWcUrl = encodeURIComponent(wcUri);\n return {\n redirect: `${safeAppUrl}wc?uri=${encodedWcUrl}`,\n href: safeAppUrl\n };\n },\n getOpenTargetForPlatform(target) {\n if (target === 'popupWindow') {\n return target;\n }\n // Only '_blank' deeplinks work in Telegram context\n if (this.isTelegram()) {\n // But for social login, we need to load the page in the same context\n if (StorageUtil.getTelegramSocialProvider()) {\n return '_top';\n }\n return '_blank';\n }\n return target;\n },\n openHref(href, target, features) {\n window?.open(href, this.getOpenTargetForPlatform(target), features || 'noreferrer noopener');\n },\n returnOpenHref(href, target, features) {\n return window?.open(href, this.getOpenTargetForPlatform(target), features || 'noreferrer noopener');\n },\n isTelegram() {\n return (typeof window !== 'undefined' &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (Boolean(window.TelegramWebviewProxy) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Boolean(window.Telegram) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Boolean(window.TelegramWebviewProxyProto)));\n },\n isPWA() {\n if (typeof window === 'undefined') {\n return false;\n }\n const isStandaloneDisplayMode = window?.matchMedia && typeof window.matchMedia === 'function'\n ? window.matchMedia('(display-mode: standalone)')?.matches\n : false;\n const isIOSStandalone = window?.navigator?.standalone;\n return Boolean(isStandaloneDisplayMode || isIOSStandalone);\n },\n async preloadImage(src) {\n const imagePromise = new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = resolve;\n image.onerror = reject;\n image.crossOrigin = 'anonymous';\n image.src = src;\n });\n return Promise.race([imagePromise, CoreHelperUtil.wait(2000)]);\n },\n formatBalance(balance, symbol) {\n let formattedBalance = '0.000';\n if (typeof balance === 'string') {\n const number = Number(balance);\n if (number) {\n const formattedValue = Math.floor(number * 1000) / 1000;\n if (formattedValue) {\n formattedBalance = formattedValue.toString();\n }\n }\n }\n return `${formattedBalance}${symbol ? ` ${symbol}` : ''}`;\n },\n formatBalance2(balance, symbol) {\n let formattedBalance = undefined;\n if (balance === '0') {\n formattedBalance = '0';\n }\n else if (typeof balance === 'string') {\n const number = Number(balance);\n if (number) {\n formattedBalance = number.toString().match(/^-?\\d+(?:\\.\\d{0,3})?/u)?.[0];\n }\n }\n return {\n value: formattedBalance ?? '0',\n rest: formattedBalance === '0' ? '000' : '',\n symbol\n };\n },\n getApiUrl() {\n return CommonConstants.W3M_API_URL;\n },\n getBlockchainApiUrl() {\n return CommonConstants.BLOCKCHAIN_API_RPC_URL;\n },\n getAnalyticsUrl() {\n return CommonConstants.PULSE_API_URL;\n },\n getUUID() {\n if (crypto?.randomUUID) {\n return crypto.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/gu, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseError(error) {\n if (typeof error === 'string') {\n return error;\n }\n else if (typeof error?.issues?.[0]?.message === 'string') {\n return error.issues[0].message;\n }\n else if (error instanceof Error) {\n return error.message;\n }\n return 'Unknown error';\n },\n sortRequestedNetworks(approvedIds, requestedNetworks = []) {\n const approvedIndexMap = {};\n if (requestedNetworks && approvedIds) {\n approvedIds.forEach((id, index) => {\n approvedIndexMap[id] = index;\n });\n requestedNetworks.sort((a, b) => {\n const indexA = approvedIndexMap[a.id];\n const indexB = approvedIndexMap[b.id];\n if (indexA !== undefined && indexB !== undefined) {\n return indexA - indexB;\n }\n else if (indexA !== undefined) {\n return -1;\n }\n else if (indexB !== undefined) {\n return 1;\n }\n return 0;\n });\n }\n return requestedNetworks;\n },\n calculateBalance(array) {\n let sum = 0;\n for (const item of array) {\n sum += item.value ?? 0;\n }\n return sum;\n },\n formatTokenBalance(number) {\n const roundedNumber = number.toFixed(2);\n const [dollars, pennies] = roundedNumber.split('.');\n return { dollars, pennies };\n },\n isAddress(address, chain = 'eip155') {\n switch (chain) {\n case 'eip155':\n if (!/^(?:0x)?[0-9a-f]{40}$/iu.test(address)) {\n return false;\n }\n else if (/^(?:0x)?[0-9a-f]{40}$/iu.test(address) ||\n /^(?:0x)?[0-9A-F]{40}$/iu.test(address)) {\n return true;\n }\n return false;\n case 'solana':\n return /[1-9A-HJ-NP-Za-km-z]{32,44}$/iu.test(address);\n default:\n return false;\n }\n },\n uniqueBy(arr, key) {\n const set = new Set();\n return arr.filter(item => {\n const keyValue = item[key];\n if (set.has(keyValue)) {\n return false;\n }\n set.add(keyValue);\n return true;\n });\n },\n generateSdkVersion(adapters, platform, version) {\n const hasNoAdapters = adapters.length === 0;\n const adapterNames = (hasNoAdapters\n ? ConstantsUtil.ADAPTER_TYPES.UNIVERSAL\n : adapters.map(adapter => adapter.adapterType).join(','));\n return `${platform}-${adapterNames}-${version}`;\n },\n // eslint-disable-next-line max-params\n createAccount(namespace, address, type, publicKey, path) {\n return {\n namespace,\n address,\n type,\n publicKey,\n path\n };\n },\n isCaipAddress(address) {\n if (typeof address !== 'string') {\n return false;\n }\n const sections = address.split(':');\n const namespace = sections[0];\n return (sections.filter(Boolean).length === 3 &&\n namespace in CommonConstants.CHAIN_NAME_MAP);\n },\n getAccount(account) {\n if (!account) {\n return {\n address: undefined,\n chainId: undefined\n };\n }\n if (typeof account === 'string') {\n return {\n address: account,\n chainId: undefined\n };\n }\n return {\n address: account.address,\n chainId: account.chainId\n };\n },\n isMac() {\n const ua = window?.navigator.userAgent.toLowerCase();\n return ua.includes('macintosh') && !ua.includes('safari');\n },\n formatTelegramSocialLoginUrl(url) {\n const valueToInject = `--${encodeURIComponent(window?.location.href)}`;\n const paramToInject = 'state=';\n const parsedUrl = new URL(url);\n if (parsedUrl.host === 'auth.magic.link') {\n const providerParam = 'provider_authorization_url=';\n const providerUrl = url.substring(url.indexOf(providerParam) + providerParam.length);\n const resultUrl = this.injectIntoUrl(decodeURIComponent(providerUrl), paramToInject, valueToInject);\n return url.replace(providerUrl, encodeURIComponent(resultUrl));\n }\n return this.injectIntoUrl(url, paramToInject, valueToInject);\n },\n injectIntoUrl(url, key, appendString) {\n // Find the position of \"key\" e.g. \"state=\" in the URL\n const keyIndex = url.indexOf(key);\n if (keyIndex === -1) {\n throw new Error(`${key} parameter not found in the URL: ${url}`);\n }\n // Find the position of the next \"&\" after \"key\"\n const keyEndIndex = url.indexOf('&', keyIndex);\n const keyLength = key.length;\n // If there is no \"&\" after key, it means \"key\" is the last parameter\n // eslint-disable-next-line no-negated-condition\n const keyParamEnd = keyEndIndex !== -1 ? keyEndIndex : url.length;\n // Extract the part of the URL before the key value\n const beforeKeyValue = url.substring(0, keyIndex + keyLength);\n // Extract the current key value\n const currentKeyValue = url.substring(keyIndex + keyLength, keyParamEnd);\n // Extract the part of the URL after the key value\n const afterKeyValue = url.substring(keyEndIndex);\n // Append the new string to the key value\n const newKeyValue = currentKeyValue + appendString;\n // Reconstruct the URL with the appended key value\n const newUrl = beforeKeyValue + newKeyValue + afterKeyValue;\n return newUrl;\n }\n};\n//# sourceMappingURL=CoreHelperUtil.js.map","async function fetchData(...args) {\n const response = await fetch(...args);\n if (!response.ok) {\n // Create error object and reject if not a 2xx response code\n const err = new Error(`HTTP status code: ${response.status}`, {\n cause: response\n });\n throw err;\n }\n return response;\n}\n// -- Utility --------------------------------------------------------------------\nexport class FetchUtil {\n constructor({ baseUrl, clientId }) {\n this.baseUrl = baseUrl;\n this.clientId = clientId;\n }\n async get({ headers, signal, cache, ...args }) {\n const url = this.createUrl(args);\n const response = await fetchData(url, { method: 'GET', headers, signal, cache });\n return response.json();\n }\n async getBlob({ headers, signal, ...args }) {\n const url = this.createUrl(args);\n const response = await fetchData(url, { method: 'GET', headers, signal });\n return response.blob();\n }\n async post({ body, headers, signal, ...args }) {\n const url = this.createUrl(args);\n const response = await fetchData(url, {\n method: 'POST',\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal\n });\n return response.json();\n }\n async put({ body, headers, signal, ...args }) {\n const url = this.createUrl(args);\n const response = await fetchData(url, {\n method: 'PUT',\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal\n });\n return response.json();\n }\n async delete({ body, headers, signal, ...args }) {\n const url = this.createUrl(args);\n const response = await fetchData(url, {\n method: 'DELETE',\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal\n });\n return response.json();\n }\n createUrl({ path, params }) {\n const url = new URL(path, this.baseUrl);\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n if (value) {\n url.searchParams.append(key, value);\n }\n });\n }\n if (this.clientId) {\n url.searchParams.append('clientId', this.clientId);\n }\n return url;\n }\n}\n//# sourceMappingURL=FetchUtil.js.map","import { ConstantsUtil } from './ConstantsUtil.js';\nimport { CoreHelperUtil } from './CoreHelperUtil.js';\nexport const OptionsUtil = {\n getFeatureValue(key, features) {\n const optionValue = features?.[key];\n if (optionValue === undefined) {\n return ConstantsUtil.DEFAULT_FEATURES[key];\n }\n return optionValue;\n },\n filterSocialsByPlatform(socials) {\n if (!socials || !socials.length) {\n return socials;\n }\n if (CoreHelperUtil.isTelegram()) {\n if (CoreHelperUtil.isIos()) {\n return socials.filter(s => s !== 'google');\n }\n if (CoreHelperUtil.isMac()) {\n return socials.filter(s => s !== 'x');\n }\n if (CoreHelperUtil.isAndroid()) {\n return socials.filter(s => !['facebook', 'x'].includes(s));\n }\n }\n return socials;\n }\n};\n//# sourceMappingURL=OptionsUtil.js.map","import { proxy, snapshot } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil } from '../utils/ConstantsUtil.js';\nimport { OptionsUtil } from '../utils/OptionsUtil.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n features: ConstantsUtil.DEFAULT_FEATURES,\n projectId: '',\n sdkType: 'appkit',\n sdkVersion: 'html-wagmi-undefined',\n defaultAccountTypes: ConstantsUtil.DEFAULT_ACCOUNT_TYPES,\n enableNetworkSwitch: true,\n experimental_preferUniversalLinks: false,\n remoteFeatures: {}\n});\n// -- Controller ---------------------------------------- //\nexport const OptionsController = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n setOptions(options) {\n Object.assign(state, options);\n },\n setRemoteFeatures(remoteFeatures) {\n if (!remoteFeatures) {\n return;\n }\n const newRemoteFeatures = { ...state.remoteFeatures, ...remoteFeatures };\n state.remoteFeatures = newRemoteFeatures;\n if (state.remoteFeatures?.socials) {\n state.remoteFeatures.socials = OptionsUtil.filterSocialsByPlatform(state.remoteFeatures.socials);\n }\n if (state.features?.pay) {\n state.remoteFeatures.email = false;\n state.remoteFeatures.socials = false;\n }\n },\n setFeatures(features) {\n if (!features) {\n return;\n }\n if (!state.features) {\n state.features = ConstantsUtil.DEFAULT_FEATURES;\n }\n const newFeatures = { ...state.features, ...features };\n state.features = newFeatures;\n if (state.features?.pay && state.remoteFeatures) {\n state.remoteFeatures.email = false;\n state.remoteFeatures.socials = false;\n }\n },\n setProjectId(projectId) {\n state.projectId = projectId;\n },\n setCustomRpcUrls(customRpcUrls) {\n state.customRpcUrls = customRpcUrls;\n },\n setAllWallets(allWallets) {\n state.allWallets = allWallets;\n },\n setIncludeWalletIds(includeWalletIds) {\n state.includeWalletIds = includeWalletIds;\n },\n setExcludeWalletIds(excludeWalletIds) {\n state.excludeWalletIds = excludeWalletIds;\n },\n setFeaturedWalletIds(featuredWalletIds) {\n state.featuredWalletIds = featuredWalletIds;\n },\n setTokens(tokens) {\n state.tokens = tokens;\n },\n setTermsConditionsUrl(termsConditionsUrl) {\n state.termsConditionsUrl = termsConditionsUrl;\n },\n setPrivacyPolicyUrl(privacyPolicyUrl) {\n state.privacyPolicyUrl = privacyPolicyUrl;\n },\n setCustomWallets(customWallets) {\n state.customWallets = customWallets;\n },\n setIsSiweEnabled(isSiweEnabled) {\n state.isSiweEnabled = isSiweEnabled;\n },\n setIsUniversalProvider(isUniversalProvider) {\n state.isUniversalProvider = isUniversalProvider;\n },\n setSdkVersion(sdkVersion) {\n state.sdkVersion = sdkVersion;\n },\n setMetadata(metadata) {\n state.metadata = metadata;\n },\n setDisableAppend(disableAppend) {\n state.disableAppend = disableAppend;\n },\n setEIP6963Enabled(enableEIP6963) {\n state.enableEIP6963 = enableEIP6963;\n },\n setDebug(debug) {\n state.debug = debug;\n },\n setEnableWalletConnect(enableWalletConnect) {\n state.enableWalletConnect = enableWalletConnect;\n },\n setEnableWalletGuide(enableWalletGuide) {\n state.enableWalletGuide = enableWalletGuide;\n },\n setEnableAuthLogger(enableAuthLogger) {\n state.enableAuthLogger = enableAuthLogger;\n },\n setEnableWallets(enableWallets) {\n state.enableWallets = enableWallets;\n },\n setPreferUniversalLinks(preferUniversalLinks) {\n state.experimental_preferUniversalLinks = preferUniversalLinks;\n },\n setSIWX(siwx) {\n if (siwx) {\n for (const [key, isVal] of Object.entries(ConstantsUtil.SIWX_DEFAULTS)) {\n /*\n * Only writes when siwx[key] is null or undefined\n * (use ||= if you only want to check “falsy”, not recommended here)\n */\n siwx[key] ??= isVal;\n }\n }\n state.siwx = siwx;\n },\n setConnectMethodsOrder(connectMethodsOrder) {\n state.features = {\n ...state.features,\n connectMethodsOrder\n };\n },\n setWalletFeaturesOrder(walletFeaturesOrder) {\n state.features = {\n ...state.features,\n walletFeaturesOrder\n };\n },\n setSocialsOrder(socialsOrder) {\n state.remoteFeatures = {\n ...state.remoteFeatures,\n socials: socialsOrder\n };\n },\n setCollapseWallets(collapseWallets) {\n state.features = {\n ...state.features,\n collapseWallets\n };\n },\n setEnableEmbedded(enableEmbedded) {\n state.enableEmbedded = enableEmbedded;\n },\n setAllowUnsupportedChain(allowUnsupportedChain) {\n state.allowUnsupportedChain = allowUnsupportedChain;\n },\n setManualWCControl(manualWCControl) {\n state.manualWCControl = manualWCControl;\n },\n setEnableNetworkSwitch(enableNetworkSwitch) {\n state.enableNetworkSwitch = enableNetworkSwitch;\n },\n setEnableReconnect(enableReconnect) {\n state.enableReconnect = enableReconnect;\n },\n setDefaultAccountTypes(defaultAccountType = {}) {\n Object.entries(defaultAccountType).forEach(([namespace, accountType]) => {\n if (accountType) {\n // @ts-expect-error - Keys are validated by the param type\n state.defaultAccountTypes[namespace] = accountType;\n }\n });\n },\n setUniversalProviderConfigOverride(universalProviderConfigOverride) {\n state.universalProviderConfigOverride = universalProviderConfigOverride;\n },\n getUniversalProviderConfigOverride() {\n return state.universalProviderConfigOverride;\n },\n getSnapshot() {\n return snapshot(state);\n }\n};\n//# sourceMappingURL=OptionsController.js.map","import { proxy } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { FetchUtil } from '../utils/FetchUtil.js';\nimport { OptionsController } from './OptionsController.js';\n// -- Constants ----------------------------------------- //\nconst DEFAULT_STATE = Object.freeze({\n enabled: true,\n events: []\n});\nconst api = new FetchUtil({ baseUrl: CoreHelperUtil.getAnalyticsUrl(), clientId: null });\n// Rate limiting constants\nconst MAX_ERRORS_PER_MINUTE = 5;\nconst ONE_MINUTE_MS = 60 * 1000;\n// -- State --------------------------------------------- //\nconst state = proxy({\n ...DEFAULT_STATE\n});\n// -- Controller ---------------------------------------- //\nexport const TelemetryController = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n async sendError(error, category) {\n if (!state.enabled) {\n return;\n }\n // Check rate limiting using events array\n const now = Date.now();\n const recentErrors = state.events.filter(event => {\n const eventTime = new Date(event.properties.timestamp || '').getTime();\n return now - eventTime < ONE_MINUTE_MS;\n });\n if (recentErrors.length >= MAX_ERRORS_PER_MINUTE) {\n // Exit silently\n return;\n }\n const errorEvent = {\n type: 'error',\n event: category,\n properties: {\n errorType: error.name,\n errorMessage: error.message,\n stackTrace: error.stack,\n timestamp: new Date().toISOString()\n }\n };\n state.events.push(errorEvent);\n try {\n if (typeof window === 'undefined') {\n return;\n }\n const { projectId, sdkType, sdkVersion } = OptionsController.state;\n await api.post({\n path: '/e',\n params: {\n projectId,\n st: sdkType,\n sv: sdkVersion || 'html-wagmi-4.2.2'\n },\n body: {\n eventId: CoreHelperUtil.getUUID(),\n url: window.location.href,\n domain: window.location.hostname,\n timestamp: new Date().toISOString(),\n props: {\n type: 'error',\n event: category,\n errorType: error.name,\n errorMessage: error.message,\n stackTrace: error.stack\n }\n }\n });\n }\n catch {\n // Do nothing\n }\n },\n enable() {\n state.enabled = true;\n },\n disable() {\n state.enabled = false;\n },\n clearEvents() {\n state.events = [];\n }\n};\n//# sourceMappingURL=TelemetryController.js.map","import { TelemetryController } from '../controllers/TelemetryController.js';\nexport class AppKitError extends Error {\n constructor(message, category, originalError) {\n super(message);\n this.name = 'AppKitError';\n this.category = category;\n this.originalError = originalError;\n // Ensure `this instanceof AppKitError` is true, important for custom errors.\n Object.setPrototypeOf(this, AppKitError.prototype);\n let isStackConstructedFromOriginal = false;\n if (originalError instanceof Error &&\n typeof originalError.stack === 'string' &&\n originalError.stack) {\n const originalErrorStack = originalError.stack;\n /**\n * Most error stacks start with \"ErrorName: ErrorMessage\\n...frames...\"\n * We want to take the \"...frames...\" part.\n */\n const firstNewlineIndex = originalErrorStack.indexOf('\\n');\n if (firstNewlineIndex > -1) {\n const originalFrames = originalErrorStack.substring(firstNewlineIndex + 1);\n this.stack = `${this.name}: ${this.message}\\n${originalFrames}`;\n isStackConstructedFromOriginal = true;\n }\n }\n if (!isStackConstructedFromOriginal) {\n /**\n * If stack was not (or could not be) constructed from originalError,\n * generate a standard stack trace for this AppKitError instance.\n * This will point to where `new AppKitError()` was called.\n */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, AppKitError);\n }\n else if (!this.stack) {\n /**\n * Fallback for environments without Error.captureStackTrace.\n * `super(message)` might have set a stack.\n * If `this.stack` is still undefined/empty, provide a minimal one.\n * Node.js and modern browsers typically set `this.stack` from `super(message)`.\n */\n this.stack = `${this.name}: ${this.message}`;\n }\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction errorHandler(err, defaultCategory) {\n const error = err instanceof AppKitError\n ? err\n : new AppKitError(err instanceof Error ? err.message : String(err), defaultCategory, err);\n TelemetryController.sendError(error, error.category);\n throw error;\n}\nexport function withErrorBoundary(controller, defaultCategory = 'INTERNAL_SDK_ERROR') {\n const newController = {};\n Object.keys(controller).forEach(key => {\n const original = controller[key];\n if (typeof original === 'function') {\n let wrapped = original;\n if (original.constructor.name === 'AsyncFunction') {\n wrapped = async (...args) => {\n try {\n return await original(...args);\n }\n catch (err) {\n return errorHandler(err, defaultCategory);\n }\n };\n }\n else {\n wrapped = (...args) => {\n try {\n return original(...args);\n }\n catch (err) {\n return errorHandler(err, defaultCategory);\n }\n };\n }\n newController[key] = wrapped;\n }\n else {\n newController[key] = original;\n }\n });\n return newController;\n}\n//# sourceMappingURL=withErrorBoundary.js.map","const DEFAULT_SDK_URL = 'https://secure.walletconnect.org/sdk';\nexport const SECURE_SITE_SDK = (typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_SECURE_SITE_SDK_URL']\n : undefined) || DEFAULT_SDK_URL;\nexport const DEFAULT_LOG_LEVEL = (typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_DEFAULT_LOG_LEVEL']\n : undefined) || 'error';\nexport const SECURE_SITE_SDK_VERSION = (typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_SECURE_SITE_SDK_VERSION']\n : undefined) || '4';\nexport const W3mFrameConstants = {\n APP_EVENT_KEY: '@w3m-app/',\n FRAME_EVENT_KEY: '@w3m-frame/',\n RPC_METHOD_KEY: 'RPC_',\n STORAGE_KEY: '@appkit-wallet/',\n SESSION_TOKEN_KEY: 'SESSION_TOKEN_KEY',\n EMAIL_LOGIN_USED_KEY: 'EMAIL_LOGIN_USED_KEY',\n LAST_USED_CHAIN_KEY: 'LAST_USED_CHAIN_KEY',\n LAST_EMAIL_LOGIN_TIME: 'LAST_EMAIL_LOGIN_TIME',\n EMAIL: 'EMAIL',\n PREFERRED_ACCOUNT_TYPE: 'PREFERRED_ACCOUNT_TYPE',\n SMART_ACCOUNT_ENABLED: 'SMART_ACCOUNT_ENABLED',\n SMART_ACCOUNT_ENABLED_NETWORKS: 'SMART_ACCOUNT_ENABLED_NETWORKS',\n SOCIAL_USERNAME: 'SOCIAL_USERNAME',\n APP_SWITCH_NETWORK: '@w3m-app/SWITCH_NETWORK',\n APP_CONNECT_EMAIL: '@w3m-app/CONNECT_EMAIL',\n APP_CONNECT_DEVICE: '@w3m-app/CONNECT_DEVICE',\n APP_CONNECT_OTP: '@w3m-app/CONNECT_OTP',\n APP_CONNECT_SOCIAL: '@w3m-app/CONNECT_SOCIAL',\n APP_GET_SOCIAL_REDIRECT_URI: '@w3m-app/GET_SOCIAL_REDIRECT_URI',\n APP_GET_USER: '@w3m-app/GET_USER',\n APP_SIGN_OUT: '@w3m-app/SIGN_OUT',\n APP_IS_CONNECTED: '@w3m-app/IS_CONNECTED',\n APP_GET_CHAIN_ID: '@w3m-app/GET_CHAIN_ID',\n APP_RPC_REQUEST: '@w3m-app/RPC_REQUEST',\n APP_UPDATE_EMAIL: '@w3m-app/UPDATE_EMAIL',\n APP_UPDATE_EMAIL_PRIMARY_OTP: '@w3m-app/UPDATE_EMAIL_PRIMARY_OTP',\n APP_UPDATE_EMAIL_SECONDARY_OTP: '@w3m-app/UPDATE_EMAIL_SECONDARY_OTP',\n APP_AWAIT_UPDATE_EMAIL: '@w3m-app/AWAIT_UPDATE_EMAIL',\n APP_SYNC_THEME: '@w3m-app/SYNC_THEME',\n APP_SYNC_DAPP_DATA: '@w3m-app/SYNC_DAPP_DATA',\n APP_GET_SMART_ACCOUNT_ENABLED_NETWORKS: '@w3m-app/GET_SMART_ACCOUNT_ENABLED_NETWORKS',\n APP_INIT_SMART_ACCOUNT: '@w3m-app/INIT_SMART_ACCOUNT',\n APP_SET_PREFERRED_ACCOUNT: '@w3m-app/SET_PREFERRED_ACCOUNT',\n APP_CONNECT_FARCASTER: '@w3m-app/CONNECT_FARCASTER',\n APP_GET_FARCASTER_URI: '@w3m-app/GET_FARCASTER_URI',\n APP_RELOAD: '@w3m-app/RELOAD',\n APP_RPC_ABORT: '@w3m-app/RPC_ABORT',\n FRAME_SWITCH_NETWORK_ERROR: '@w3m-frame/SWITCH_NETWORK_ERROR',\n FRAME_SWITCH_NETWORK_SUCCESS: '@w3m-frame/SWITCH_NETWORK_SUCCESS',\n FRAME_CONNECT_EMAIL_ERROR: '@w3m-frame/CONNECT_EMAIL_ERROR',\n FRAME_CONNECT_EMAIL_SUCCESS: '@w3m-frame/CONNECT_EMAIL_SUCCESS',\n FRAME_CONNECT_DEVICE_ERROR: '@w3m-frame/CONNECT_DEVICE_ERROR',\n FRAME_CONNECT_DEVICE_SUCCESS: '@w3m-frame/CONNECT_DEVICE_SUCCESS',\n FRAME_CONNECT_OTP_SUCCESS: '@w3m-frame/CONNECT_OTP_SUCCESS',\n FRAME_CONNECT_OTP_ERROR: '@w3m-frame/CONNECT_OTP_ERROR',\n FRAME_CONNECT_SOCIAL_SUCCESS: '@w3m-frame/CONNECT_SOCIAL_SUCCESS',\n FRAME_CONNECT_SOCIAL_ERROR: '@w3m-frame/CONNECT_SOCIAL_ERROR',\n FRAME_CONNECT_FARCASTER_SUCCESS: '@w3m-frame/CONNECT_FARCASTER_SUCCESS',\n FRAME_CONNECT_FARCASTER_ERROR: '@w3m-frame/CONNECT_FARCASTER_ERROR',\n FRAME_GET_FARCASTER_URI_SUCCESS: '@w3m-frame/GET_FARCASTER_URI_SUCCESS',\n FRAME_GET_FARCASTER_URI_ERROR: '@w3m-frame/GET_FARCASTER_URI_ERROR',\n FRAME_GET_SOCIAL_REDIRECT_URI_SUCCESS: '@w3m-frame/GET_SOCIAL_REDIRECT_URI_SUCCESS',\n FRAME_GET_SOCIAL_REDIRECT_URI_ERROR: '@w3m-frame/GET_SOCIAL_REDIRECT_URI_ERROR',\n FRAME_GET_USER_SUCCESS: '@w3m-frame/GET_USER_SUCCESS',\n FRAME_GET_USER_ERROR: '@w3m-frame/GET_USER_ERROR',\n FRAME_SIGN_OUT_SUCCESS: '@w3m-frame/SIGN_OUT_SUCCESS',\n FRAME_SIGN_OUT_ERROR: '@w3m-frame/SIGN_OUT_ERROR',\n FRAME_IS_CONNECTED_SUCCESS: '@w3m-frame/IS_CONNECTED_SUCCESS',\n FRAME_IS_CONNECTED_ERROR: '@w3m-frame/IS_CONNECTED_ERROR',\n FRAME_GET_CHAIN_ID_SUCCESS: '@w3m-frame/GET_CHAIN_ID_SUCCESS',\n FRAME_GET_CHAIN_ID_ERROR: '@w3m-frame/GET_CHAIN_ID_ERROR',\n FRAME_RPC_REQUEST_SUCCESS: '@w3m-frame/RPC_REQUEST_SUCCESS',\n FRAME_RPC_REQUEST_ERROR: '@w3m-frame/RPC_REQUEST_ERROR',\n FRAME_SESSION_UPDATE: '@w3m-frame/SESSION_UPDATE',\n FRAME_UPDATE_EMAIL_SUCCESS: '@w3m-frame/UPDATE_EMAIL_SUCCESS',\n FRAME_UPDATE_EMAIL_ERROR: '@w3m-frame/UPDATE_EMAIL_ERROR',\n FRAME_UPDATE_EMAIL_PRIMARY_OTP_SUCCESS: '@w3m-frame/UPDATE_EMAIL_PRIMARY_OTP_SUCCESS',\n FRAME_UPDATE_EMAIL_PRIMARY_OTP_ERROR: '@w3m-frame/UPDATE_EMAIL_PRIMARY_OTP_ERROR',\n FRAME_UPDATE_EMAIL_SECONDARY_OTP_SUCCESS: '@w3m-frame/UPDATE_EMAIL_SECONDARY_OTP_SUCCESS',\n FRAME_UPDATE_EMAIL_SECONDARY_OTP_ERROR: '@w3m-frame/UPDATE_EMAIL_SECONDARY_OTP_ERROR',\n FRAME_SYNC_THEME_SUCCESS: '@w3m-frame/SYNC_THEME_SUCCESS',\n FRAME_SYNC_THEME_ERROR: '@w3m-frame/SYNC_THEME_ERROR',\n FRAME_SYNC_DAPP_DATA_SUCCESS: '@w3m-frame/SYNC_DAPP_DATA_SUCCESS',\n FRAME_SYNC_DAPP_DATA_ERROR: '@w3m-frame/SYNC_DAPP_DATA_ERROR',\n FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_SUCCESS: '@w3m-frame/GET_SMART_ACCOUNT_ENABLED_NETWORKS_SUCCESS',\n FRAME_GET_SMART_ACCOUNT_ENABLED_NETWORKS_ERROR: '@w3m-frame/GET_SMART_ACCOUNT_ENABLED_NETWORKS_ERROR',\n FRAME_INIT_SMART_ACCOUNT_SUCCESS: '@w3m-frame/INIT_SMART_ACCOUNT_SUCCESS',\n FRAME_INIT_SMART_ACCOUNT_ERROR: '@w3m-frame/INIT_SMART_ACCOUNT_ERROR',\n FRAME_SET_PREFERRED_ACCOUNT_SUCCESS: '@w3m-frame/SET_PREFERRED_ACCOUNT_SUCCESS',\n FRAME_SET_PREFERRED_ACCOUNT_ERROR: '@w3m-frame/SET_PREFERRED_ACCOUNT_ERROR',\n FRAME_READY: '@w3m-frame/READY',\n FRAME_RELOAD_SUCCESS: '@w3m-frame/RELOAD_SUCCESS',\n FRAME_RELOAD_ERROR: '@w3m-frame/RELOAD_ERROR',\n FRAME_RPC_ABORT_SUCCESS: '@w3m-frame/RPC_ABORT_SUCCESS',\n FRAME_RPC_ABORT_ERROR: '@w3m-frame/RPC_ABORT_ERROR',\n RPC_RESPONSE_TYPE_ERROR: 'RPC_RESPONSE_ERROR',\n RPC_RESPONSE_TYPE_TX: 'RPC_RESPONSE_TRANSACTION_HASH',\n RPC_RESPONSE_TYPE_OBJECT: 'RPC_RESPONSE_OBJECT'\n};\nexport const W3mFrameRpcConstants = {\n SAFE_RPC_METHODS: [\n 'eth_accounts',\n 'eth_blockNumber',\n 'eth_call',\n 'eth_chainId',\n 'eth_estimateGas',\n 'eth_feeHistory',\n 'eth_gasPrice',\n 'eth_getAccount',\n 'eth_getBalance',\n 'eth_getBlockByHash',\n 'eth_getBlockByNumber',\n 'eth_getBlockReceipts',\n 'eth_getBlockTransactionCountByHash',\n 'eth_getBlockTransactionCountByNumber',\n 'eth_getCode',\n 'eth_getFilterChanges',\n 'eth_getFilterLogs',\n 'eth_getLogs',\n 'eth_getProof',\n 'eth_getStorageAt',\n 'eth_getTransactionByBlockHashAndIndex',\n 'eth_getTransactionByBlockNumberAndIndex',\n 'eth_getTransactionByHash',\n 'eth_getTransactionCount',\n 'eth_getTransactionReceipt',\n 'eth_getUncleCountByBlockHash',\n 'eth_getUncleCountByBlockNumber',\n 'eth_maxPriorityFeePerGas',\n 'eth_newBlockFilter',\n 'eth_newFilter',\n 'eth_newPendingTransactionFilter',\n 'eth_sendRawTransaction',\n 'eth_syncing',\n 'eth_uninstallFilter',\n 'wallet_getCapabilities',\n 'wallet_getCallsStatus',\n 'eth_getUserOperationReceipt',\n 'eth_estimateUserOperationGas',\n 'eth_getUserOperationByHash',\n 'eth_supportedEntryPoints',\n 'wallet_getAssets'\n ],\n NOT_SAFE_RPC_METHODS: [\n 'personal_sign',\n 'eth_signTypedData_v4',\n 'eth_sendTransaction',\n 'solana_signMessage',\n 'solana_signTransaction',\n 'solana_signAllTransactions',\n 'solana_signAndSendTransaction',\n 'wallet_sendCalls',\n 'wallet_grantPermissions',\n 'wallet_revokePermissions',\n 'eth_sendUserOperation'\n ],\n GET_CHAIN_ID: 'eth_chainId',\n RPC_METHOD_NOT_ALLOWED_MESSAGE: 'Requested RPC call is not allowed',\n RPC_METHOD_NOT_ALLOWED_UI_MESSAGE: 'Action not allowed',\n ACCOUNT_TYPES: {\n EOA: 'eoa',\n SMART_ACCOUNT: 'smartAccount'\n }\n};\n//# sourceMappingURL=W3mFrameConstants.js.map","import { ConstantsUtil } from '@reown/appkit-common';\n/*\n * Exclude wallets that do not support relay connections but have custom deeplink mechanisms\n * Excludes:\n * - Phantom\n * - Coinbase\n */\nexport const CUSTOM_DEEPLINK_WALLETS = {\n PHANTOM: {\n id: 'a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393',\n url: 'https://phantom.app'\n },\n SOLFLARE: {\n id: '1ca0bdd4747578705b1939af023d120677c64fe6ca76add81fda36e350605e79',\n url: 'https://solflare.com'\n },\n COINBASE: {\n id: 'fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa',\n url: 'https://go.cb-w.com'\n }\n};\nexport const MobileWalletUtil = {\n /**\n * Handles mobile wallet redirection for wallets that have Universal Links and doesn't support WalletConnect Deep Links.\n *\n * @param {string} id - The id of the wallet.\n * @param {ChainNamespace} namespace - The namespace of the chain.\n */\n handleMobileDeeplinkRedirect(id, namespace) {\n /**\n * Universal Links requires explicit user interaction to open the wallet app.\n * Previously we've been calling this with the life-cycle methods in the Solana clients by listening the SELECT_WALLET event of EventController.\n * But this breaks the UL functionality for some wallets like Phantom.\n */\n const href = window.location.href;\n const encodedHref = encodeURIComponent(href);\n if (id === CUSTOM_DEEPLINK_WALLETS.PHANTOM.id && !('phantom' in window)) {\n const protocol = href.startsWith('https') ? 'https' : 'http';\n const host = href.split('/')[2];\n const encodedRef = encodeURIComponent(`${protocol}://${host}`);\n window.location.href = `${CUSTOM_DEEPLINK_WALLETS.PHANTOM.url}/ul/browse/${encodedHref}?ref=${encodedRef}`;\n }\n if (id === CUSTOM_DEEPLINK_WALLETS.SOLFLARE.id && !('solflare' in window)) {\n window.location.href = `${CUSTOM_DEEPLINK_WALLETS.SOLFLARE.url}/ul/v1/browse/${encodedHref}?ref=${encodedHref}`;\n }\n if (namespace === ConstantsUtil.CHAIN.SOLANA) {\n if (id === CUSTOM_DEEPLINK_WALLETS.COINBASE.id && !('coinbaseSolana' in window)) {\n window.location.href = `${CUSTOM_DEEPLINK_WALLETS.COINBASE.url}/dapp?cb_url=${encodedHref}`;\n }\n }\n }\n};\n//# sourceMappingURL=MobileWallet.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n walletImages: {},\n networkImages: {},\n chainImages: {},\n connectorImages: {},\n tokenImages: {},\n currencyImages: {}\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribeNetworkImages(callback) {\n return sub(state.networkImages, () => callback(state.networkImages));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n setWalletImage(key, value) {\n state.walletImages[key] = value;\n },\n setNetworkImage(key, value) {\n state.networkImages[key] = value;\n },\n setChainImage(key, value) {\n state.chainImages[key] = value;\n },\n setConnectorImage(key, value) {\n state.connectorImages = { ...state.connectorImages, [key]: value };\n },\n setTokenImage(key, value) {\n state.tokenImages[key] = value;\n },\n setCurrencyImage(key, value) {\n state.currencyImages[key] = value;\n }\n};\n// Export the controller wrapped with our error boundary\nexport const AssetController = withErrorBoundary(controller);\n//# sourceMappingURL=AssetController.js.map","import { proxy } from 'valtio/vanilla';\nimport { ApiController } from '../controllers/ApiController.js';\nimport { AssetController } from '../controllers/AssetController.js';\nconst namespaceImageIds = {\n // Ethereum\n eip155: 'ba0ba0cd-17c6-4806-ad93-f9d174f17900',\n // Solana\n solana: 'a1b58899-f671-4276-6a5e-56ca5bd59700',\n // Polkadot\n polkadot: '',\n // Bitcoin\n bip122: '0b4838db-0161-4ffe-022d-532bf03dba00',\n // Cosmos\n cosmos: '',\n // Sui\n sui: '',\n // Stacks\n stacks: ''\n};\n// -- State --------------------------------------------- //\nconst state = proxy({\n networkImagePromises: {}\n});\n// -- Util ---------------------------------------- //\nexport const AssetUtil = {\n async fetchWalletImage(imageId) {\n if (!imageId) {\n return undefined;\n }\n await ApiController._fetchWalletImage(imageId);\n return this.getWalletImageById(imageId);\n },\n async fetchNetworkImage(imageId) {\n if (!imageId) {\n return undefined;\n }\n const existingImage = this.getNetworkImageById(imageId);\n // Check if the image already exists\n if (existingImage) {\n return existingImage;\n }\n // Check if the promise is already created\n if (!state.networkImagePromises[imageId]) {\n state.networkImagePromises[imageId] = ApiController._fetchNetworkImage(imageId);\n }\n await state.networkImagePromises[imageId];\n return this.getNetworkImageById(imageId);\n },\n getWalletImageById(imageId) {\n if (!imageId) {\n return undefined;\n }\n return AssetController.state.walletImages[imageId];\n },\n getWalletImage(wallet) {\n if (wallet?.image_url) {\n return wallet?.image_url;\n }\n if (wallet?.image_id) {\n return AssetController.state.walletImages[wallet.image_id];\n }\n return undefined;\n },\n getNetworkImage(network) {\n if (network?.assets?.imageUrl) {\n return network?.assets?.imageUrl;\n }\n if (network?.assets?.imageId) {\n return AssetController.state.networkImages[network.assets.imageId];\n }\n return undefined;\n },\n getNetworkImageById(imageId) {\n if (!imageId) {\n return undefined;\n }\n return AssetController.state.networkImages[imageId];\n },\n getConnectorImage(connector) {\n if (connector?.imageUrl) {\n return connector.imageUrl;\n }\n if (connector?.info?.icon) {\n return connector.info.icon;\n }\n if (connector?.imageId) {\n return AssetController.state.connectorImages[connector.imageId];\n }\n return undefined;\n },\n getChainImage(chain) {\n return AssetController.state.networkImages[namespaceImageIds[chain]];\n }\n};\n//# sourceMappingURL=AssetUtil.js.map","import { proxy } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { OptionsController } from './OptionsController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n message: '',\n variant: 'info',\n open: false\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n open(message, variant) {\n const { debug } = OptionsController.state;\n const { code, displayMessage, debugMessage } = message;\n if (displayMessage && debug) {\n state.message = displayMessage;\n state.variant = variant;\n state.open = true;\n }\n if (debugMessage) {\n // eslint-disable-next-line no-console\n console.error(typeof debugMessage === 'function' ? debugMessage() : debugMessage, code ? { code } : undefined);\n }\n },\n close() {\n state.open = false;\n state.message = '';\n state.variant = 'info';\n }\n};\n// Export the controller wrapped with our error boundary\nexport const AlertController = withErrorBoundary(controller);\n//# sourceMappingURL=AlertController.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { ConstantsUtil, isSafe } from '@reown/appkit-common';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { FetchUtil } from '../utils/FetchUtil.js';\nimport { AccountController } from './AccountController.js';\nimport { AlertController } from './AlertController.js';\nimport { OptionsController } from './OptionsController.js';\n// -- Helpers ------------------------------------------- //\nconst baseUrl = CoreHelperUtil.getAnalyticsUrl();\nconst api = new FetchUtil({ baseUrl, clientId: null });\nconst excluded = ['MODAL_CREATED'];\n// -- State --------------------------------------------- //\nconst state = proxy({\n timestamp: Date.now(),\n reportedErrors: {},\n data: {\n type: 'track',\n event: 'MODAL_CREATED'\n }\n});\n// -- Controller ---------------------------------------- //\nexport const EventsController = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n getSdkProperties() {\n const { projectId, sdkType, sdkVersion } = OptionsController.state;\n return {\n projectId,\n st: sdkType,\n sv: sdkVersion || 'html-wagmi-4.2.2'\n };\n },\n async _sendAnalyticsEvent(payload) {\n try {\n const address = AccountController.state.address;\n if (excluded.includes(payload.data.event) || typeof window === 'undefined') {\n return;\n }\n await api.post({\n path: '/e',\n params: EventsController.getSdkProperties(),\n body: {\n eventId: CoreHelperUtil.getUUID(),\n url: window.location.href,\n domain: window.location.hostname,\n timestamp: payload.timestamp,\n props: { ...payload.data, address }\n }\n });\n state.reportedErrors['FORBIDDEN'] = false;\n }\n catch (err) {\n const isForbiddenError = err instanceof Error &&\n err.cause instanceof Response &&\n err.cause.status === ConstantsUtil.HTTP_STATUS_CODES.FORBIDDEN &&\n !state.reportedErrors['FORBIDDEN'];\n if (isForbiddenError) {\n AlertController.open({\n displayMessage: 'Invalid App Configuration',\n debugMessage: `Origin ${isSafe() ? window.origin : 'uknown'} not found on Allowlist - update configuration on cloud.reown.com`\n }, 'error');\n state.reportedErrors['FORBIDDEN'] = true;\n }\n }\n },\n sendEvent(data) {\n state.timestamp = Date.now();\n state.data = data;\n if (OptionsController.state.features?.analytics || data.event === 'INITIALIZE') {\n EventsController._sendAnalyticsEvent(state);\n }\n }\n};\n//# sourceMappingURL=EventsController.js.map","import { proxy } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil } from '@reown/appkit-common';\nimport { AssetUtil } from '../utils/AssetUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { FetchUtil } from '../utils/FetchUtil.js';\nimport { CUSTOM_DEEPLINK_WALLETS } from '../utils/MobileWallet.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { AssetController } from './AssetController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { EventsController } from './EventsController.js';\nimport { OptionsController } from './OptionsController.js';\n// -- Helpers ------------------------------------------- //\nconst baseUrl = CoreHelperUtil.getApiUrl();\nexport const api = new FetchUtil({\n baseUrl,\n clientId: null\n});\nconst entries = 40;\nconst recommendedEntries = 4;\nconst imageCountToFetch = 20;\n// -- State --------------------------------------------- //\nconst state = proxy({\n promises: {},\n page: 1,\n count: 0,\n featured: [],\n allFeatured: [],\n recommended: [],\n allRecommended: [],\n wallets: [],\n filteredWallets: [],\n search: [],\n isAnalyticsEnabled: false,\n excludedWallets: [],\n isFetchingRecommendedWallets: false\n});\n// -- Controller ---------------------------------------- //\nexport const ApiController = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n _getSdkProperties() {\n const { projectId, sdkType, sdkVersion } = OptionsController.state;\n return {\n projectId,\n st: sdkType || 'appkit',\n sv: sdkVersion || 'html-wagmi-4.2.2'\n };\n },\n _filterOutExtensions(wallets) {\n if (OptionsController.state.isUniversalProvider) {\n return wallets.filter(w => Boolean(w.mobile_link || w.desktop_link || w.webapp_link));\n }\n return wallets;\n },\n async _fetchWalletImage(imageId) {\n const imageUrl = `${api.baseUrl}/getWalletImage/${imageId}`;\n const blob = await api.getBlob({ path: imageUrl, params: ApiController._getSdkProperties() });\n AssetController.setWalletImage(imageId, URL.createObjectURL(blob));\n },\n async _fetchNetworkImage(imageId) {\n const imageUrl = `${api.baseUrl}/public/getAssetImage/${imageId}`;\n const blob = await api.getBlob({ path: imageUrl, params: ApiController._getSdkProperties() });\n AssetController.setNetworkImage(imageId, URL.createObjectURL(blob));\n },\n async _fetchConnectorImage(imageId) {\n const imageUrl = `${api.baseUrl}/public/getAssetImage/${imageId}`;\n const blob = await api.getBlob({ path: imageUrl, params: ApiController._getSdkProperties() });\n AssetController.setConnectorImage(imageId, URL.createObjectURL(blob));\n },\n async _fetchCurrencyImage(countryCode) {\n const imageUrl = `${api.baseUrl}/public/getCurrencyImage/${countryCode}`;\n const blob = await api.getBlob({ path: imageUrl, params: ApiController._getSdkProperties() });\n AssetController.setCurrencyImage(countryCode, URL.createObjectURL(blob));\n },\n async _fetchTokenImage(symbol) {\n const imageUrl = `${api.baseUrl}/public/getTokenImage/${symbol}`;\n const blob = await api.getBlob({ path: imageUrl, params: ApiController._getSdkProperties() });\n AssetController.setTokenImage(symbol, URL.createObjectURL(blob));\n },\n _filterWalletsByPlatform(wallets) {\n const filteredWallets = CoreHelperUtil.isMobile()\n ? wallets?.filter(w => {\n if (w.mobile_link) {\n return true;\n }\n if (w.id === CUSTOM_DEEPLINK_WALLETS.COINBASE.id) {\n return true;\n }\n const isSolana = ChainController.state.activeChain === 'solana';\n return (isSolana &&\n (w.id === CUSTOM_DEEPLINK_WALLETS.SOLFLARE.id ||\n w.id === CUSTOM_DEEPLINK_WALLETS.PHANTOM.id));\n })\n : wallets;\n return filteredWallets;\n },\n async fetchProjectConfig() {\n const response = await api.get({\n path: '/appkit/v1/config',\n params: ApiController._getSdkProperties()\n });\n return response.features;\n },\n async fetchAllowedOrigins() {\n try {\n const { allowedOrigins } = await api.get({\n path: '/projects/v1/origins',\n params: ApiController._getSdkProperties()\n });\n return allowedOrigins;\n }\n catch (error) {\n if (error instanceof Error && error.cause instanceof Response) {\n const status = error.cause.status;\n if (status === ConstantsUtil.HTTP_STATUS_CODES.TOO_MANY_REQUESTS) {\n throw new Error('RATE_LIMITED', { cause: error });\n }\n if (status >= ConstantsUtil.HTTP_STATUS_CODES.SERVER_ERROR && status < 600) {\n throw new Error('SERVER_ERROR', { cause: error });\n }\n return [];\n }\n return [];\n }\n },\n async fetchNetworkImages() {\n const requestedCaipNetworks = ChainController.getAllRequestedCaipNetworks();\n const ids = requestedCaipNetworks\n ?.map(({ assets }) => assets?.imageId)\n .filter(Boolean)\n .filter(imageId => !AssetUtil.getNetworkImageById(imageId));\n if (ids) {\n await Promise.allSettled(ids.map(id => ApiController._fetchNetworkImage(id)));\n }\n },\n async fetchConnectorImages() {\n const { connectors } = ConnectorController.state;\n const ids = connectors.map(({ imageId }) => imageId).filter(Boolean);\n await Promise.allSettled(ids.map(id => ApiController._fetchConnectorImage(id)));\n },\n async fetchCurrencyImages(currencies = []) {\n await Promise.allSettled(currencies.map(currency => ApiController._fetchCurrencyImage(currency)));\n },\n async fetchTokenImages(tokens = []) {\n await Promise.allSettled(tokens.map(token => ApiController._fetchTokenImage(token)));\n },\n async fetchWallets(params) {\n const exclude = params.exclude ?? [];\n const sdkProperties = ApiController._getSdkProperties();\n if (sdkProperties.sv.startsWith('html-core-')) {\n exclude.push(...Object.values(CUSTOM_DEEPLINK_WALLETS).map(w => w.id));\n }\n const wallets = await api.get({\n path: '/getWallets',\n params: {\n ...ApiController._getSdkProperties(),\n ...params,\n page: String(params.page),\n entries: String(params.entries),\n include: params.include?.join(','),\n exclude: exclude.join(',')\n }\n });\n const filteredWallets = ApiController._filterWalletsByPlatform(wallets?.data);\n return {\n data: filteredWallets || [],\n // Keep original count for display on main page\n count: wallets?.count\n };\n },\n async fetchFeaturedWallets() {\n const { featuredWalletIds } = OptionsController.state;\n if (featuredWalletIds?.length) {\n const params = {\n ...ApiController._getSdkProperties(),\n page: 1,\n entries: featuredWalletIds?.length ?? recommendedEntries,\n include: featuredWalletIds\n };\n const { data } = await ApiController.fetchWallets(params);\n const sortedData = [...data].sort((a, b) => featuredWalletIds.indexOf(a.id) - featuredWalletIds.indexOf(b.id));\n const images = sortedData.map(d => d.image_id).filter(Boolean);\n await Promise.allSettled(images.map(id => ApiController._fetchWalletImage(id)));\n state.featured = sortedData;\n state.allFeatured = sortedData;\n }\n },\n async fetchRecommendedWallets() {\n try {\n state.isFetchingRecommendedWallets = true;\n const { includeWalletIds, excludeWalletIds, featuredWalletIds } = OptionsController.state;\n const exclude = [...(excludeWalletIds ?? []), ...(featuredWalletIds ?? [])].filter(Boolean);\n const chains = ChainController.getRequestedCaipNetworkIds().join(',');\n const params = {\n page: 1,\n entries: recommendedEntries,\n include: includeWalletIds,\n exclude,\n chains\n };\n const { data, count } = await ApiController.fetchWallets(params);\n const recent = StorageUtil.getRecentWallets();\n const recommendedImages = data.map(d => d.image_id).filter(Boolean);\n const recentImages = recent.map(r => r.image_id).filter(Boolean);\n await Promise.allSettled([...recommendedImages, ...recentImages].map(id => ApiController._fetchWalletImage(id)));\n state.recommended = data;\n state.allRecommended = data;\n state.count = count ?? 0;\n }\n catch {\n // Catch silently\n }\n finally {\n state.isFetchingRecommendedWallets = false;\n }\n },\n async fetchWalletsByPage({ page }) {\n const { includeWalletIds, excludeWalletIds, featuredWalletIds } = OptionsController.state;\n const chains = ChainController.getRequestedCaipNetworkIds().join(',');\n const exclude = [\n ...state.recommended.map(({ id }) => id),\n ...(excludeWalletIds ?? []),\n ...(featuredWalletIds ?? [])\n ].filter(Boolean);\n const params = {\n page,\n entries,\n include: includeWalletIds,\n exclude,\n chains\n };\n const { data, count } = await ApiController.fetchWallets(params);\n const images = data\n .slice(0, imageCountToFetch)\n .map(w => w.image_id)\n .filter(Boolean);\n await Promise.allSettled(images.map(id => ApiController._fetchWalletImage(id)));\n state.wallets = CoreHelperUtil.uniqueBy([...state.wallets, ...ApiController._filterOutExtensions(data)], 'id').filter(w => w.chains?.some(chain => chains.includes(chain)));\n state.count = count > state.count ? count : state.count;\n state.page = page;\n },\n async initializeExcludedWallets({ ids }) {\n const params = {\n page: 1,\n entries: ids.length,\n include: ids\n };\n const { data } = await ApiController.fetchWallets(params);\n if (data) {\n data.forEach(wallet => {\n state.excludedWallets.push({ rdns: wallet.rdns, name: wallet.name });\n });\n }\n },\n async searchWallet({ search, badge }) {\n const { includeWalletIds, excludeWalletIds } = OptionsController.state;\n const chains = ChainController.getRequestedCaipNetworkIds().join(',');\n state.search = [];\n const params = {\n page: 1,\n entries: 100,\n search: search?.trim(),\n badge_type: badge,\n include: includeWalletIds,\n exclude: excludeWalletIds,\n chains\n };\n const { data } = await ApiController.fetchWallets(params);\n EventsController.sendEvent({\n type: 'track',\n event: 'SEARCH_WALLET',\n properties: { badge: badge ?? '', search: search ?? '' }\n });\n const images = data.map(w => w.image_id).filter(Boolean);\n await Promise.allSettled([\n ...images.map(id => ApiController._fetchWalletImage(id)),\n CoreHelperUtil.wait(300)\n ]);\n state.search = ApiController._filterOutExtensions(data);\n },\n initPromise(key, fetchFn) {\n const existingPromise = state.promises[key];\n if (existingPromise) {\n return existingPromise;\n }\n return (state.promises[key] = fetchFn());\n },\n prefetch({ fetchConnectorImages = true, fetchFeaturedWallets = true, fetchRecommendedWallets = true, fetchNetworkImages = true } = {}) {\n const promises = [\n fetchConnectorImages &&\n ApiController.initPromise('connectorImages', ApiController.fetchConnectorImages),\n fetchFeaturedWallets &&\n ApiController.initPromise('featuredWallets', ApiController.fetchFeaturedWallets),\n fetchRecommendedWallets &&\n ApiController.initPromise('recommendedWallets', ApiController.fetchRecommendedWallets),\n fetchNetworkImages &&\n ApiController.initPromise('networkImages', ApiController.fetchNetworkImages)\n ].filter(Boolean);\n return Promise.allSettled(promises);\n },\n prefetchAnalyticsConfig() {\n if (OptionsController.state.features?.analytics) {\n ApiController.fetchAnalyticsConfig();\n }\n },\n async fetchAnalyticsConfig() {\n try {\n const { isAnalyticsEnabled } = await api.get({\n path: '/getAnalyticsConfig',\n params: ApiController._getSdkProperties()\n });\n OptionsController.setFeatures({ analytics: isAnalyticsEnabled });\n }\n catch (error) {\n OptionsController.setFeatures({ analytics: false });\n }\n },\n filterByNamespaces(namespaces) {\n if (!namespaces?.length) {\n state.featured = state.allFeatured;\n state.recommended = state.allRecommended;\n return;\n }\n const caipNetworkIds = ChainController.getRequestedCaipNetworkIds().join(',');\n state.featured = state.allFeatured.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n state.recommended = state.allRecommended.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n state.filteredWallets = state.wallets.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n },\n clearFilterByNamespaces() {\n state.filteredWallets = [];\n },\n setFilterByNamespace(namespace) {\n if (!namespace) {\n state.featured = state.allFeatured;\n state.recommended = state.allRecommended;\n return;\n }\n const caipNetworkIds = ChainController.getRequestedCaipNetworkIds().join(',');\n state.featured = state.allFeatured.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n state.recommended = state.allRecommended.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n state.filteredWallets = state.wallets.filter(wallet => wallet.chains?.some(chain => caipNetworkIds.includes(chain)));\n }\n};\n//# sourceMappingURL=ApiController.js.map","import { proxy, snapshot } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { AccountController } from './AccountController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { ModalController } from './ModalController.js';\nimport { OptionsController } from './OptionsController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n view: 'Connect',\n history: ['Connect'],\n transactionStack: []\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n pushTransactionStack(action) {\n state.transactionStack.push(action);\n },\n popTransactionStack(status) {\n const action = state.transactionStack.pop();\n if (!action) {\n return;\n }\n const { onSuccess, onError, onCancel } = action;\n switch (status) {\n case 'success':\n onSuccess?.();\n break;\n case 'error':\n onError?.();\n RouterController.goBack();\n break;\n case 'cancel':\n onCancel?.();\n RouterController.goBack();\n break;\n default:\n }\n },\n push(view, data) {\n if (view !== state.view) {\n state.view = view;\n state.history.push(view);\n state.data = data;\n }\n },\n reset(view, data) {\n state.view = view;\n state.history = [view];\n state.data = data;\n },\n replace(view, data) {\n const lastView = state.history.at(-1);\n const isSameView = lastView === view;\n if (!isSameView) {\n state.view = view;\n state.history[state.history.length - 1] = view;\n state.data = data;\n }\n },\n goBack() {\n const isConnected = ChainController.state.activeCaipAddress;\n const isFarcasterView = RouterController.state.view === 'ConnectingFarcaster';\n const shouldReload = !isConnected && isFarcasterView;\n if (state.history.length > 1) {\n state.history.pop();\n const [last] = state.history.slice(-1);\n if (last) {\n const isConnectView = last === 'Connect';\n if (isConnected && isConnectView) {\n state.view = 'Account';\n }\n else {\n state.view = last;\n }\n }\n }\n else {\n ModalController.close();\n }\n if (state.data?.wallet) {\n state.data.wallet = undefined;\n }\n // Reloading the iframe contentwindow and doing the view animation in the modal causes a small freeze in the transition. Doing these separately fixes that.\n setTimeout(() => {\n if (shouldReload) {\n AccountController.setFarcasterUrl(undefined, ChainController.state.activeChain);\n const authConnector = ConnectorController.getAuthConnector();\n authConnector?.provider?.reload();\n const optionsState = snapshot(OptionsController.state);\n authConnector?.provider?.syncDappData?.({\n metadata: optionsState.metadata,\n sdkVersion: optionsState.sdkVersion,\n projectId: optionsState.projectId,\n sdkType: optionsState.sdkType\n });\n }\n }, 100);\n },\n goBackToIndex(historyIndex) {\n if (state.history.length > 1) {\n state.history = state.history.slice(0, historyIndex + 1);\n const [last] = state.history.slice(-1);\n if (last) {\n state.view = last;\n }\n }\n },\n goBackOrCloseModal() {\n if (RouterController.state.history.length > 1) {\n RouterController.goBack();\n }\n else {\n ModalController.close();\n }\n }\n};\n// Export the controller wrapped with our error boundary\nexport const RouterController = withErrorBoundary(controller);\n//# sourceMappingURL=RouterController.js.map","import { proxy, snapshot, subscribe as sub } from 'valtio/vanilla';\nimport { getW3mThemeVariables } from '@reown/appkit-common';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { ConnectorController } from './ConnectorController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n themeMode: 'dark',\n themeVariables: {},\n w3mThemeVariables: undefined\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n setThemeMode(themeMode) {\n state.themeMode = themeMode;\n try {\n const authConnector = ConnectorController.getAuthConnector();\n if (authConnector) {\n const themeVariables = controller.getSnapshot().themeVariables;\n authConnector.provider.syncTheme({\n themeMode,\n themeVariables,\n w3mThemeVariables: getW3mThemeVariables(themeVariables, themeMode)\n });\n }\n }\n catch {\n // eslint-disable-next-line no-console\n console.info('Unable to sync theme to auth connector');\n }\n },\n setThemeVariables(themeVariables) {\n state.themeVariables = { ...state.themeVariables, ...themeVariables };\n try {\n const authConnector = ConnectorController.getAuthConnector();\n if (authConnector) {\n const themeVariablesSnapshot = controller.getSnapshot().themeVariables;\n authConnector.provider.syncTheme({\n themeVariables: themeVariablesSnapshot,\n w3mThemeVariables: getW3mThemeVariables(state.themeVariables, state.themeMode)\n });\n }\n }\n catch {\n // eslint-disable-next-line no-console\n console.info('Unable to sync theme to auth connector');\n }\n },\n getSnapshot() {\n return snapshot(state);\n }\n};\n// Export the controller wrapped with our error boundary\nexport const ThemeController = withErrorBoundary(controller);\n//# sourceMappingURL=ThemeController.js.map","import { proxy, ref, snapshot, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { AVAILABLE_NAMESPACES, ConstantsUtil, getW3mThemeVariables } from '@reown/appkit-common';\nimport { W3mFrameRpcConstants } from '@reown/appkit-wallet/utils';\nimport { getPreferredAccountType } from '../utils/ChainControllerUtil.js';\nimport { MobileWalletUtil } from '../utils/MobileWallet.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { ApiController } from './ApiController.js';\nimport { ChainController } from './ChainController.js';\nimport { OptionsController } from './OptionsController.js';\nimport { RouterController } from './RouterController.js';\nimport { ThemeController } from './ThemeController.js';\nconst defaultActiveConnectors = Object.fromEntries(AVAILABLE_NAMESPACES.map(namespace => [namespace, undefined]));\nconst defaultFilterByNamespaceMap = Object.fromEntries(AVAILABLE_NAMESPACES.map(namespace => [namespace, true]));\n// -- State --------------------------------------------- //\nconst state = proxy({\n allConnectors: [],\n connectors: [],\n activeConnector: undefined,\n filterByNamespace: undefined,\n activeConnectorIds: defaultActiveConnectors,\n filterByNamespaceMap: defaultFilterByNamespaceMap\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => {\n callback(state);\n });\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n initialize(namespaces) {\n namespaces.forEach(namespace => {\n const connectorId = StorageUtil.getConnectedConnectorId(namespace);\n if (connectorId) {\n ConnectorController.setConnectorId(connectorId, namespace);\n }\n });\n },\n setActiveConnector(connector) {\n if (connector) {\n state.activeConnector = ref(connector);\n }\n },\n setConnectors(connectors) {\n const newConnectors = connectors.filter(newConnector => !state.allConnectors.some(existingConnector => existingConnector.id === newConnector.id &&\n ConnectorController.getConnectorName(existingConnector.name) ===\n ConnectorController.getConnectorName(newConnector.name) &&\n existingConnector.chain === newConnector.chain));\n /**\n * We are reassigning the state of the proxy to a new array of new objects, ConnectorController can cause issues. So it is better to use ref in ConnectorController case.\n * Check more about proxy on https://valtio.dev/docs/api/basic/proxy#Gotchas\n * Check more about ref on https://valtio.dev/docs/api/basic/ref\n */\n newConnectors.forEach(connector => {\n if (connector.type !== 'MULTI_CHAIN') {\n state.allConnectors.push(ref(connector));\n }\n });\n const enabledNamespaces = ConnectorController.getEnabledNamespaces();\n const connectorsFilteredByNamespaces = ConnectorController.getEnabledConnectors(enabledNamespaces);\n state.connectors = ConnectorController.mergeMultiChainConnectors(connectorsFilteredByNamespaces);\n },\n filterByNamespaces(enabledNamespaces) {\n Object.keys(state.filterByNamespaceMap).forEach(namespace => {\n state.filterByNamespaceMap[namespace] = false;\n });\n enabledNamespaces.forEach(namespace => {\n state.filterByNamespaceMap[namespace] = true;\n });\n ConnectorController.updateConnectorsForEnabledNamespaces();\n },\n filterByNamespace(namespace, enabled) {\n state.filterByNamespaceMap[namespace] = enabled;\n ConnectorController.updateConnectorsForEnabledNamespaces();\n },\n updateConnectorsForEnabledNamespaces() {\n const enabledNamespaces = ConnectorController.getEnabledNamespaces();\n const enabledConnectors = ConnectorController.getEnabledConnectors(enabledNamespaces);\n const areAllNamespacesEnabled = ConnectorController.areAllNamespacesEnabled();\n state.connectors = ConnectorController.mergeMultiChainConnectors(enabledConnectors);\n if (areAllNamespacesEnabled) {\n ApiController.clearFilterByNamespaces();\n }\n else {\n ApiController.filterByNamespaces(enabledNamespaces);\n }\n },\n getEnabledNamespaces() {\n return Object.entries(state.filterByNamespaceMap)\n .filter(([_, enabled]) => enabled)\n .map(([namespace]) => namespace);\n },\n getEnabledConnectors(enabledNamespaces) {\n return state.allConnectors.filter(connector => enabledNamespaces.includes(connector.chain));\n },\n areAllNamespacesEnabled() {\n return Object.values(state.filterByNamespaceMap).every(enabled => enabled);\n },\n mergeMultiChainConnectors(connectors) {\n const connectorsByNameMap = ConnectorController.generateConnectorMapByName(connectors);\n const mergedConnectors = [];\n connectorsByNameMap.forEach(keyConnectors => {\n const firstItem = keyConnectors[0];\n const isAuthConnector = firstItem?.id === ConstantsUtil.CONNECTOR_ID.AUTH;\n if (keyConnectors.length > 1 && firstItem) {\n mergedConnectors.push({\n name: firstItem.name,\n imageUrl: firstItem.imageUrl,\n imageId: firstItem.imageId,\n connectors: [...keyConnectors],\n type: isAuthConnector ? 'AUTH' : 'MULTI_CHAIN',\n // These values are just placeholders, we don't use them in multi-chain connector select screen\n chain: 'eip155',\n id: firstItem?.id || ''\n });\n }\n else if (firstItem) {\n mergedConnectors.push(firstItem);\n }\n });\n return mergedConnectors;\n },\n generateConnectorMapByName(connectors) {\n const connectorsByNameMap = new Map();\n connectors.forEach(connector => {\n const { name } = connector;\n const connectorName = ConnectorController.getConnectorName(name);\n if (!connectorName) {\n return;\n }\n const connectorsByName = connectorsByNameMap.get(connectorName) || [];\n const haveSameConnector = connectorsByName.find(c => c.chain === connector.chain);\n if (!haveSameConnector) {\n connectorsByName.push(connector);\n }\n connectorsByNameMap.set(connectorName, connectorsByName);\n });\n return connectorsByNameMap;\n },\n getConnectorName(name) {\n if (!name) {\n return name;\n }\n const nameOverrideMap = {\n 'Trust Wallet': 'Trust'\n };\n return nameOverrideMap[name] || name;\n },\n getUniqueConnectorsByName(connectors) {\n const uniqueConnectors = [];\n connectors.forEach(c => {\n if (!uniqueConnectors.find(uc => uc.chain === c.chain)) {\n uniqueConnectors.push(c);\n }\n });\n return uniqueConnectors;\n },\n addConnector(connector) {\n if (connector.id === ConstantsUtil.CONNECTOR_ID.AUTH) {\n const authConnector = connector;\n const optionsState = snapshot(OptionsController.state);\n const themeMode = ThemeController.getSnapshot().themeMode;\n const themeVariables = ThemeController.getSnapshot().themeVariables;\n authConnector?.provider?.syncDappData?.({\n metadata: optionsState.metadata,\n sdkVersion: optionsState.sdkVersion,\n projectId: optionsState.projectId,\n sdkType: optionsState.sdkType\n });\n authConnector?.provider?.syncTheme({\n themeMode,\n themeVariables,\n w3mThemeVariables: getW3mThemeVariables(themeVariables, themeMode)\n });\n ConnectorController.setConnectors([connector]);\n }\n else {\n ConnectorController.setConnectors([connector]);\n }\n },\n getAuthConnector(chainNamespace) {\n const activeNamespace = chainNamespace || ChainController.state.activeChain;\n const authConnector = state.connectors.find(c => c.id === ConstantsUtil.CONNECTOR_ID.AUTH);\n if (!authConnector) {\n return undefined;\n }\n if (authConnector?.connectors?.length) {\n const connector = authConnector.connectors.find(c => c.chain === activeNamespace);\n return connector;\n }\n return authConnector;\n },\n getAnnouncedConnectorRdns() {\n return state.connectors.filter(c => c.type === 'ANNOUNCED').map(c => c.info?.rdns);\n },\n getConnectorById(id) {\n return state.allConnectors.find(c => c.id === id);\n },\n getConnector({ id, rdns, namespace }) {\n const namespaceToUse = namespace || ChainController.state.activeChain;\n const connectorsByNamespace = state.allConnectors.filter(c => c.chain === namespaceToUse);\n return connectorsByNamespace.find(c => c.explorerId === id || c.info?.rdns === rdns);\n },\n syncIfAuthConnector(connector) {\n if (connector.id !== 'ID_AUTH') {\n return;\n }\n const authConnector = connector;\n const optionsState = snapshot(OptionsController.state);\n const themeMode = ThemeController.getSnapshot().themeMode;\n const themeVariables = ThemeController.getSnapshot().themeVariables;\n authConnector?.provider?.syncDappData?.({\n metadata: optionsState.metadata,\n sdkVersion: optionsState.sdkVersion,\n sdkType: optionsState.sdkType,\n projectId: optionsState.projectId\n });\n authConnector.provider.syncTheme({\n themeMode,\n themeVariables,\n w3mThemeVariables: getW3mThemeVariables(themeVariables, themeMode)\n });\n },\n /**\n * Returns the connectors filtered by namespace.\n * @param namespace - The namespace to filter the connectors by.\n * @returns ConnectorWithProviders[].\n */\n getConnectorsByNamespace(namespace) {\n const namespaceConnectors = state.allConnectors.filter(connector => connector.chain === namespace);\n return ConnectorController.mergeMultiChainConnectors(namespaceConnectors);\n },\n canSwitchToSmartAccount(namespace) {\n const isSmartAccountEnabled = ChainController.checkIfSmartAccountEnabled();\n return (isSmartAccountEnabled &&\n getPreferredAccountType(namespace) === W3mFrameRpcConstants.ACCOUNT_TYPES.EOA);\n },\n selectWalletConnector(wallet) {\n const connector = ConnectorController.getConnector({\n id: wallet.id,\n rdns: wallet.rdns\n });\n MobileWalletUtil.handleMobileDeeplinkRedirect(connector?.explorerId || wallet.id, ChainController.state.activeChain);\n if (connector) {\n RouterController.push('ConnectingExternal', { connector, wallet });\n }\n else {\n RouterController.push('ConnectingWalletConnect', { wallet });\n }\n },\n /**\n * Returns the connectors. If a namespace is provided, the connectors are filtered by namespace.\n * @param namespace - The namespace to filter the connectors by. If not provided, all connectors are returned.\n * @returns ConnectorWithProviders[].\n */\n getConnectors(namespace) {\n if (namespace) {\n return ConnectorController.getConnectorsByNamespace(namespace);\n }\n return ConnectorController.mergeMultiChainConnectors(state.allConnectors);\n },\n /**\n * Sets the filter by namespace and updates the connectors.\n * @param namespace - The namespace to filter the connectors by.\n */\n setFilterByNamespace(namespace) {\n state.filterByNamespace = namespace;\n state.connectors = ConnectorController.getConnectors(namespace);\n ApiController.setFilterByNamespace(namespace);\n },\n setConnectorId(connectorId, namespace) {\n if (connectorId) {\n state.activeConnectorIds = {\n ...state.activeConnectorIds,\n [namespace]: connectorId\n };\n StorageUtil.setConnectedConnectorId(namespace, connectorId);\n }\n },\n removeConnectorId(namespace) {\n state.activeConnectorIds = {\n ...state.activeConnectorIds,\n [namespace]: undefined\n };\n StorageUtil.deleteConnectedConnectorId(namespace);\n },\n getConnectorId(namespace) {\n if (!namespace) {\n return undefined;\n }\n return state.activeConnectorIds[namespace];\n },\n isConnected(namespace) {\n if (!namespace) {\n return Object.values(state.activeConnectorIds).some(id => Boolean(id));\n }\n return Boolean(state.activeConnectorIds[namespace]);\n },\n resetConnectorIds() {\n state.activeConnectorIds = { ...defaultActiveConnectors };\n }\n};\n// Export the controller wrapped with our error boundary\nexport const ConnectorController = withErrorBoundary(controller);\n//# sourceMappingURL=ConnectorController.js.map","/* eslint-disable max-depth */\nimport { ParseUtil } from '@reown/appkit-common';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { W3mFrameRpcConstants } from '@reown/appkit-wallet/utils';\nimport { AccountController } from '../controllers/AccountController.js';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectionController } from '../controllers/ConnectionController.js';\nimport { ConnectorController } from '../controllers/ConnectorController.js';\nimport { EventsController } from '../controllers/EventsController.js';\nimport { ModalController } from '../controllers/ModalController.js';\nimport { RouterController } from '../controllers/RouterController.js';\nimport { getPreferredAccountType } from './ChainControllerUtil.js';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nimport { CoreHelperUtil } from './CoreHelperUtil.js';\nimport { StorageUtil } from './StorageUtil.js';\n// -- Constants ------------------------------------------ //\nconst UPDATE_EMAIL_INTERVAL_MS = 1_000;\nexport const ConnectorControllerUtil = {\n checkNamespaceConnectorId(namespace, connectorId) {\n return ConnectorController.getConnectorId(namespace) === connectorId;\n },\n isSocialProvider(socialProvider) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.socials.includes(socialProvider);\n },\n connectWalletConnect({ walletConnect, connector, closeModalOnConnect = true, redirectViewOnModalClose = 'Connect', onOpen, onConnect }) {\n return new Promise((resolve, reject) => {\n if (walletConnect) {\n ConnectorController.setActiveConnector(connector);\n }\n onOpen?.(CoreHelperUtil.isMobile() && walletConnect);\n if (redirectViewOnModalClose) {\n const unsubscribeModalController = ModalController.subscribeKey('open', val => {\n if (!val) {\n if (RouterController.state.view !== redirectViewOnModalClose) {\n RouterController.replace(redirectViewOnModalClose);\n }\n unsubscribeModalController();\n reject(new Error('Modal closed'));\n }\n });\n }\n const unsubscribeChainController = ChainController.subscribeKey('activeCaipAddress', val => {\n if (val) {\n onConnect?.();\n if (closeModalOnConnect) {\n ModalController.close();\n }\n unsubscribeChainController();\n resolve(ParseUtil.parseCaipAddress(val));\n }\n });\n });\n },\n connectExternal(connector) {\n return new Promise((resolve, reject) => {\n const unsubscribeChainController = ChainController.subscribeKey('activeCaipAddress', val => {\n if (val) {\n ModalController.close();\n unsubscribeChainController();\n resolve(ParseUtil.parseCaipAddress(val));\n }\n });\n ConnectionController.connectExternal(connector, connector.chain).catch(() => {\n unsubscribeChainController();\n reject(new Error('Connection rejected'));\n });\n });\n },\n connectSocial({ social, namespace, closeModalOnConnect = true, onOpenFarcaster, onConnect }) {\n let socialWindow = AccountController.state.socialWindow;\n let socialProvider = AccountController.state.socialProvider;\n let connectingSocial = false;\n let popupWindow = null;\n const namespaceToUse = namespace || ChainController.state.activeChain;\n const unsubscribeChainController = ChainController.subscribeKey('activeCaipAddress', val => {\n if (val) {\n if (closeModalOnConnect) {\n ModalController.close();\n }\n unsubscribeChainController();\n }\n });\n return new Promise((resolve, reject) => {\n async function handleSocialConnection(event) {\n if (event.data?.resultUri) {\n if (event.origin === CommonConstantsUtil.SECURE_SITE_SDK_ORIGIN) {\n window.removeEventListener('message', handleSocialConnection, false);\n try {\n const authConnector = ConnectorController.getAuthConnector(namespaceToUse);\n if (authConnector && !connectingSocial) {\n if (socialWindow) {\n socialWindow.close();\n AccountController.setSocialWindow(undefined, namespaceToUse);\n socialWindow = AccountController.state.socialWindow;\n }\n connectingSocial = true;\n const uri = event.data.resultUri;\n if (socialProvider) {\n EventsController.sendEvent({\n type: 'track',\n event: 'SOCIAL_LOGIN_REQUEST_USER_DATA',\n properties: { provider: socialProvider }\n });\n }\n if (socialProvider) {\n StorageUtil.setConnectedSocialProvider(socialProvider);\n await ConnectionController.connectExternal({\n id: authConnector.id,\n type: authConnector.type,\n socialUri: uri\n }, authConnector.chain);\n const caipAddress = ChainController.state.activeCaipAddress;\n if (!caipAddress) {\n reject(new Error('Failed to connect'));\n return;\n }\n resolve(ParseUtil.parseCaipAddress(caipAddress));\n EventsController.sendEvent({\n type: 'track',\n event: 'SOCIAL_LOGIN_SUCCESS',\n properties: {\n provider: socialProvider,\n caipNetworkId: ChainController.getActiveCaipNetwork()?.caipNetworkId\n }\n });\n }\n }\n }\n catch (err) {\n if (socialProvider) {\n EventsController.sendEvent({\n type: 'track',\n event: 'SOCIAL_LOGIN_ERROR',\n properties: { provider: socialProvider }\n });\n }\n reject(new Error('Failed to connect'));\n }\n }\n else if (socialProvider) {\n EventsController.sendEvent({\n type: 'track',\n event: 'SOCIAL_LOGIN_ERROR',\n properties: { provider: socialProvider }\n });\n }\n }\n }\n async function connectSocial() {\n if (social) {\n AccountController.setSocialProvider(social, namespaceToUse);\n socialProvider = AccountController.state.socialProvider;\n EventsController.sendEvent({\n type: 'track',\n event: 'SOCIAL_LOGIN_STARTED',\n properties: { provider: socialProvider }\n });\n }\n if (socialProvider === 'farcaster') {\n onOpenFarcaster?.();\n const unsubscribeModalController = ModalController.subscribeKey('open', val => {\n if (!val && social === 'farcaster') {\n reject(new Error('Popup closed'));\n onConnect?.();\n unsubscribeModalController();\n }\n });\n const authConnector = ConnectorController.getAuthConnector();\n if (authConnector) {\n if (!AccountController.state.farcasterUrl) {\n try {\n const { url } = await authConnector.provider.getFarcasterUri();\n AccountController.setFarcasterUrl(url, namespaceToUse);\n }\n catch {\n reject(new Error('Failed to connect to farcaster'));\n }\n }\n }\n }\n else {\n const authConnector = ConnectorController.getAuthConnector();\n popupWindow = CoreHelperUtil.returnOpenHref(`${CommonConstantsUtil.SECURE_SITE_SDK_ORIGIN}/loading`, 'popupWindow', 'width=600,height=800,scrollbars=yes');\n try {\n if (authConnector && socialProvider) {\n const { uri } = await authConnector.provider.getSocialRedirectUri({\n provider: socialProvider\n });\n if (popupWindow && uri) {\n AccountController.setSocialWindow(popupWindow, namespaceToUse);\n socialWindow = AccountController.state.socialWindow;\n popupWindow.location.href = uri;\n const interval = setInterval(() => {\n if (socialWindow?.closed && !connectingSocial) {\n reject(new Error('Popup closed'));\n clearInterval(interval);\n }\n }, 1000);\n window.addEventListener('message', handleSocialConnection, false);\n }\n else {\n popupWindow?.close();\n reject(new Error('Failed to initiate social connection'));\n }\n }\n }\n catch {\n reject(new Error('Failed to initiate social connection'));\n popupWindow?.close();\n }\n }\n }\n connectSocial();\n });\n },\n connectEmail({ closeModalOnConnect = true, redirectViewOnModalClose = 'Connect', onOpen, onConnect }) {\n return new Promise((resolve, reject) => {\n onOpen?.();\n if (redirectViewOnModalClose) {\n const unsubscribeModalController = ModalController.subscribeKey('open', val => {\n if (!val) {\n if (RouterController.state.view !== redirectViewOnModalClose) {\n RouterController.replace(redirectViewOnModalClose);\n }\n unsubscribeModalController();\n reject(new Error('Modal closed'));\n }\n });\n }\n const unsubscribeChainController = ChainController.subscribeKey('activeCaipAddress', val => {\n if (val) {\n onConnect?.();\n if (closeModalOnConnect) {\n ModalController.close();\n }\n unsubscribeChainController();\n resolve(ParseUtil.parseCaipAddress(val));\n }\n });\n });\n },\n async updateEmail() {\n const connectorId = StorageUtil.getConnectedConnectorId(ChainController.state.activeChain);\n const authConnector = ConnectorController.getAuthConnector();\n if (!authConnector) {\n throw new Error('No auth connector found');\n }\n if (connectorId !== CommonConstantsUtil.CONNECTOR_ID.AUTH) {\n throw new Error('Not connected to email or social');\n }\n const initialEmail = authConnector.provider.getEmail() ?? '';\n await ModalController.open({\n view: 'UpdateEmailWallet',\n data: {\n email: initialEmail,\n redirectView: undefined\n }\n });\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n const newEmail = authConnector.provider.getEmail() ?? '';\n if (newEmail !== initialEmail) {\n ModalController.close();\n clearInterval(interval);\n unsubscribeModalController();\n resolve({ email: newEmail });\n }\n }, UPDATE_EMAIL_INTERVAL_MS);\n const unsubscribeModalController = ModalController.subscribeKey('open', val => {\n if (!val) {\n if (RouterController.state.view !== 'Connect') {\n RouterController.push('Connect');\n }\n clearInterval(interval);\n unsubscribeModalController();\n reject(new Error('Modal closed'));\n }\n });\n });\n },\n canSwitchToSmartAccount(namespace) {\n const isSmartAccountEnabled = ChainController.checkIfSmartAccountEnabled();\n return (isSmartAccountEnabled &&\n getPreferredAccountType(namespace) === W3mFrameRpcConstants.ACCOUNT_TYPES.EOA);\n }\n};\n//# sourceMappingURL=ConnectorControllerUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectorControllerUtil } from './ConnectorControllerUtil.js';\nimport { ConstantsUtil } from './ConstantsUtil.js';\n/**\n * Returns the array of chains to disconnect from the connector with the given namespace.\n * If no namespace is provided, it returns all chains.\n * @param namespace - The namespace of the connector to disconnect from.\n * @returns An array of chains to disconnect.\n */\nexport function getChainsToDisconnect(namespace) {\n const namespaces = Array.from(ChainController.state.chains.keys());\n let chains = [];\n if (namespace) {\n chains.push([namespace, ChainController.state.chains.get(namespace)]);\n if (ConnectorControllerUtil.checkNamespaceConnectorId(namespace, CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT)) {\n namespaces.forEach(ns => {\n if (ns !== namespace &&\n ConnectorControllerUtil.checkNamespaceConnectorId(ns, CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT)) {\n chains.push([ns, ChainController.state.chains.get(ns)]);\n }\n });\n }\n else if (ConnectorControllerUtil.checkNamespaceConnectorId(namespace, CommonConstantsUtil.CONNECTOR_ID.AUTH)) {\n namespaces.forEach(ns => {\n if (ns !== namespace &&\n ConnectorControllerUtil.checkNamespaceConnectorId(ns, CommonConstantsUtil.CONNECTOR_ID.AUTH)) {\n chains.push([ns, ChainController.state.chains.get(ns)]);\n }\n });\n }\n }\n else {\n chains = Array.from(ChainController.state.chains.entries());\n }\n return chains;\n}\n/**\n * Get the active network token address\n * @returns The active network token address\n */\nexport function getActiveNetworkTokenAddress() {\n const namespace = ChainController.state.activeCaipNetwork?.chainNamespace || 'eip155';\n const chainId = ChainController.state.activeCaipNetwork?.id || 1;\n const address = ConstantsUtil.NATIVE_TOKEN_ADDRESS[namespace];\n return `${namespace}:${chainId}:${address}`;\n}\n/**\n * Get the preferred account type for a given namespace\n * @param namespace - The namespace of the account\n * @returns The preferred account type\n */\nexport function getPreferredAccountType(namespace) {\n const preferredAccountType = ChainController.getAccountData(namespace)?.preferredAccountType;\n return preferredAccountType;\n}\n/**\n * Get the active CAIP network for a given chain namespace, if no namespace is provided, it returns the active CAIP network\n * @param chainNamespace - The chain namespace to get the active CAIP network for\n * @returns The active CAIP network\n */\nexport function getActiveCaipNetwork(chainNamespace) {\n if (chainNamespace) {\n return ChainController.state.chains.get(chainNamespace)?.networkState?.caipNetwork;\n }\n return ChainController.state.activeCaipNetwork;\n}\n//# sourceMappingURL=ChainControllerUtil.js.map","import {} from '@reown/appkit-common';\nimport { ConnectionController } from '../controllers/ConnectionController.js';\nimport { ConnectorController } from '../controllers/ConnectorController.js';\nimport { OptionsController } from '../controllers/OptionsController.js';\n// -- Utils ------------------------------------------ //\nexport const ConnectionControllerUtil = {\n getConnectionStatus(connection, namespace) {\n const connectedConnectorId = ConnectorController.state.activeConnectorIds[namespace];\n const connections = ConnectionController.getConnections(namespace);\n const isConnectorConnected = Boolean(connectedConnectorId) && connection.connectorId === connectedConnectorId;\n if (isConnectorConnected) {\n return 'connected';\n }\n const isConnectionConnected = connections.some(c => c.connectorId.toLowerCase() === connection.connectorId.toLowerCase());\n if (isConnectionConnected) {\n return 'active';\n }\n return 'disconnected';\n },\n excludeConnectorAddressFromConnections({ connections, connectorId, addresses }) {\n return connections.map(connection => {\n const isConnectorMatch = connectorId\n ? connection.connectorId.toLowerCase() === connectorId.toLowerCase()\n : false;\n if (isConnectorMatch && addresses) {\n const filteredAccounts = connection.accounts.filter(account => {\n const isAddressIncluded = addresses.some(address => address.toLowerCase() === account.address.toLowerCase());\n return !isAddressIncluded;\n });\n return { ...connection, accounts: filteredAccounts };\n }\n return connection;\n });\n },\n excludeExistingConnections(connectorIds, newConnections) {\n const existingConnectorIds = new Set(connectorIds);\n return newConnections.filter(c => !existingConnectorIds.has(c.connectorId));\n },\n getConnectionsByConnectorId(connections, connectorId) {\n return connections.filter(c => c.connectorId.toLowerCase() === connectorId.toLowerCase());\n },\n getConnectionsData(namespace) {\n const isMultiWalletEnabled = Boolean(OptionsController.state.remoteFeatures?.multiWallet);\n const activeConnectorId = ConnectorController.state.activeConnectorIds[namespace];\n const connections = ConnectionController.getConnections(namespace);\n const recentConnections = ConnectionController.state.recentConnections.get(namespace) ?? [];\n const recentConnectionsWithCurrentActiveConnectors = recentConnections.filter(connection => ConnectorController.getConnectorById(connection.connectorId));\n const dedupedRecentConnections = ConnectionControllerUtil.excludeExistingConnections([...connections.map(c => c.connectorId), ...(activeConnectorId ? [activeConnectorId] : [])], recentConnectionsWithCurrentActiveConnectors);\n if (!isMultiWalletEnabled) {\n return {\n connections: connections.filter(c => c.connectorId.toLowerCase() === activeConnectorId?.toLowerCase()),\n recentConnections: []\n };\n }\n return {\n connections,\n recentConnections: dedupedRecentConnections\n };\n }\n};\n//# sourceMappingURL=ConnectionControllerUtil.js.map","import { proxy } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\n// -- Constants ----------------------------------------- //\nconst DEFAULT_STATE = Object.freeze({\n message: '',\n variant: 'success',\n svg: undefined,\n open: false,\n autoClose: true\n});\n// -- State --------------------------------------------- //\nconst state = proxy({\n ...DEFAULT_STATE\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n showLoading(message, options = {}) {\n this._showMessage({ message, variant: 'loading', ...options });\n },\n showSuccess(message) {\n this._showMessage({ message, variant: 'success' });\n },\n showSvg(message, svg) {\n this._showMessage({ message, svg });\n },\n showError(message) {\n const errorMessage = CoreHelperUtil.parseError(message);\n this._showMessage({ message: errorMessage, variant: 'error' });\n },\n hide() {\n state.message = DEFAULT_STATE.message;\n state.variant = DEFAULT_STATE.variant;\n state.svg = DEFAULT_STATE.svg;\n state.open = DEFAULT_STATE.open;\n state.autoClose = DEFAULT_STATE.autoClose;\n },\n _showMessage({ message, svg, variant = 'success', autoClose = DEFAULT_STATE.autoClose }) {\n if (state.open) {\n state.open = false;\n setTimeout(() => {\n state.message = message;\n state.variant = variant;\n state.svg = svg;\n state.open = true;\n state.autoClose = autoClose;\n }, 150);\n }\n else {\n state.message = message;\n state.variant = variant;\n state.svg = svg;\n state.open = true;\n state.autoClose = autoClose;\n }\n }\n};\nexport const SnackController = controller;\n//# sourceMappingURL=SnackController.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { W3mFrameRpcConstants } from '@reown/appkit-wallet/utils';\nimport { getPreferredAccountType } from '../utils/ChainControllerUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { BlockchainApiController } from './BlockchainApiController.js';\nimport { ChainController } from './ChainController.js';\nimport { EventsController } from './EventsController.js';\nimport { OptionsController } from './OptionsController.js';\nimport { SnackController } from './SnackController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n transactions: [],\n transactionsByYear: {},\n lastNetworkInView: undefined,\n loading: false,\n empty: false,\n next: undefined\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n setLastNetworkInView(lastNetworkInView) {\n state.lastNetworkInView = lastNetworkInView;\n },\n async fetchTransactions(accountAddress) {\n if (!accountAddress) {\n throw new Error(\"Transactions can't be fetched without an accountAddress\");\n }\n state.loading = true;\n try {\n const response = await BlockchainApiController.fetchTransactions({\n account: accountAddress,\n cursor: state.next,\n chainId: ChainController.state.activeCaipNetwork?.caipNetworkId\n });\n const nonSpamTransactions = TransactionsController.filterSpamTransactions(response.data);\n const sameChainTransactions = TransactionsController.filterByConnectedChain(nonSpamTransactions);\n const filteredTransactions = [...state.transactions, ...sameChainTransactions];\n state.loading = false;\n state.transactions = filteredTransactions;\n state.transactionsByYear = TransactionsController.groupTransactionsByYearAndMonth(state.transactionsByYear, sameChainTransactions);\n state.empty = filteredTransactions.length === 0;\n state.next = response.next ? response.next : undefined;\n }\n catch (error) {\n const activeChainNamespace = ChainController.state.activeChain;\n EventsController.sendEvent({\n type: 'track',\n event: 'ERROR_FETCH_TRANSACTIONS',\n properties: {\n address: accountAddress,\n projectId: OptionsController.state.projectId,\n cursor: state.next,\n isSmartAccount: getPreferredAccountType(activeChainNamespace) ===\n W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT\n }\n });\n SnackController.showError('Failed to fetch transactions');\n state.loading = false;\n state.empty = true;\n state.next = undefined;\n }\n },\n groupTransactionsByYearAndMonth(transactionsMap = {}, transactions = []) {\n const grouped = transactionsMap;\n transactions.forEach(transaction => {\n const year = new Date(transaction.metadata.minedAt).getFullYear();\n const month = new Date(transaction.metadata.minedAt).getMonth();\n const yearTransactions = grouped[year] ?? {};\n const monthTransactions = yearTransactions[month] ?? [];\n // If there's a transaction with the same id, remove the old one\n const newMonthTransactions = monthTransactions.filter(tx => tx.id !== transaction.id);\n grouped[year] = {\n ...yearTransactions,\n [month]: [...newMonthTransactions, transaction].sort((a, b) => new Date(b.metadata.minedAt).getTime() - new Date(a.metadata.minedAt).getTime())\n };\n });\n return grouped;\n },\n filterSpamTransactions(transactions) {\n return transactions.filter(transaction => {\n const isAllSpam = transaction.transfers.every(transfer => transfer.nft_info?.flags.is_spam === true);\n return !isAllSpam;\n });\n },\n filterByConnectedChain(transactions) {\n const chainId = ChainController.state.activeCaipNetwork?.caipNetworkId;\n const filteredTransactions = transactions.filter(transaction => transaction.metadata.chain === chainId);\n return filteredTransactions;\n },\n clearCursor() {\n state.next = undefined;\n },\n resetTransactions() {\n state.transactions = [];\n state.transactionsByYear = {};\n state.lastNetworkInView = undefined;\n state.loading = false;\n state.empty = false;\n state.next = undefined;\n }\n};\n// Export the controller wrapped with our error boundary\nexport const TransactionsController = withErrorBoundary(controller, 'API_ERROR');\n//# sourceMappingURL=TransactionsController.js.map","/* eslint-disable no-console */\nimport { proxy, ref, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil as CommonConstantsUtil, ParseUtil } from '@reown/appkit-common';\nimport { getPreferredAccountType } from '../utils/ChainControllerUtil.js';\nimport { ConnectionControllerUtil } from '../utils/ConnectionControllerUtil.js';\nimport { ConnectorControllerUtil } from '../utils/ConnectorControllerUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { AppKitError, withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { AccountController } from './AccountController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { EventsController } from './EventsController.js';\nimport { ModalController } from './ModalController.js';\nimport { RouterController } from './RouterController.js';\nimport { TransactionsController } from './TransactionsController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n connections: new Map(),\n recentConnections: new Map(),\n isSwitchingConnection: false,\n wcError: false,\n buffering: false,\n status: 'disconnected'\n});\n// eslint-disable-next-line init-declarations\nlet wcConnectionPromise;\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n _getClient() {\n return state._client;\n },\n setClient(client) {\n state._client = ref(client);\n },\n initialize(adapters) {\n const namespaces = adapters\n .filter((a) => Boolean(a.namespace))\n .map(a => a.namespace);\n ConnectionController.syncStorageConnections(namespaces);\n },\n syncStorageConnections(namespaces) {\n const storageConnections = StorageUtil.getConnections();\n const namespacesToSync = namespaces ?? Array.from(ChainController.state.chains.keys());\n for (const namespace of namespacesToSync) {\n const storageConnectionsByNamespace = storageConnections[namespace] ?? [];\n const recentConnectionsMap = new Map(state.recentConnections);\n recentConnectionsMap.set(namespace, storageConnectionsByNamespace);\n state.recentConnections = recentConnectionsMap;\n }\n },\n getConnections(namespace) {\n return namespace ? (state.connections.get(namespace) ?? []) : [];\n },\n hasAnyConnection(connectorId) {\n const connections = ConnectionController.state.connections;\n return Array.from(connections.values())\n .flatMap(_connections => _connections)\n .some(({ connectorId: _connectorId }) => _connectorId === connectorId);\n },\n async connectWalletConnect() {\n if (CoreHelperUtil.isTelegram() || (CoreHelperUtil.isSafari() && CoreHelperUtil.isIos())) {\n if (wcConnectionPromise) {\n await wcConnectionPromise;\n wcConnectionPromise = undefined;\n return;\n }\n if (!CoreHelperUtil.isPairingExpired(state?.wcPairingExpiry)) {\n const link = state.wcUri;\n state.wcUri = link;\n return;\n }\n wcConnectionPromise = ConnectionController._getClient()\n ?.connectWalletConnect?.()\n .catch(() => undefined);\n ConnectionController.state.status = 'connecting';\n await wcConnectionPromise;\n wcConnectionPromise = undefined;\n state.wcPairingExpiry = undefined;\n ConnectionController.state.status = 'connected';\n }\n else {\n await ConnectionController._getClient()?.connectWalletConnect?.();\n }\n },\n async connectExternal(options, chain, setChain = true) {\n const connectData = await ConnectionController._getClient()?.connectExternal?.(options);\n if (setChain) {\n ChainController.setActiveNamespace(chain);\n }\n return connectData;\n },\n async reconnectExternal(options) {\n await ConnectionController._getClient()?.reconnectExternal?.(options);\n const namespace = options.chain || ChainController.state.activeChain;\n if (namespace) {\n ConnectorController.setConnectorId(options.id, namespace);\n }\n },\n async setPreferredAccountType(accountType, namespace) {\n if (!namespace) {\n return;\n }\n ModalController.setLoading(true, ChainController.state.activeChain);\n const authConnector = ConnectorController.getAuthConnector();\n if (!authConnector) {\n return;\n }\n AccountController.setPreferredAccountType(accountType, namespace);\n await authConnector.provider.setPreferredAccount(accountType);\n StorageUtil.setPreferredAccountTypes(Object.entries(ChainController.state.chains).reduce((acc, [key, _]) => {\n const namespace = key;\n const accountType = getPreferredAccountType(namespace);\n if (accountType !== undefined) {\n ;\n acc[namespace] = accountType;\n }\n return acc;\n }, {}));\n await ConnectionController.reconnectExternal(authConnector);\n ModalController.setLoading(false, ChainController.state.activeChain);\n EventsController.sendEvent({\n type: 'track',\n event: 'SET_PREFERRED_ACCOUNT_TYPE',\n properties: {\n accountType,\n network: ChainController.state.activeCaipNetwork?.caipNetworkId || ''\n }\n });\n },\n async signMessage(message) {\n return ConnectionController._getClient()?.signMessage(message);\n },\n parseUnits(value, decimals) {\n return ConnectionController._getClient()?.parseUnits(value, decimals);\n },\n formatUnits(value, decimals) {\n return ConnectionController._getClient()?.formatUnits(value, decimals);\n },\n async sendTransaction(args) {\n return ConnectionController._getClient()?.sendTransaction(args);\n },\n async getCapabilities(params) {\n return ConnectionController._getClient()?.getCapabilities(params);\n },\n async grantPermissions(params) {\n return ConnectionController._getClient()?.grantPermissions(params);\n },\n async walletGetAssets(params) {\n return ConnectionController._getClient()?.walletGetAssets(params) ?? {};\n },\n async estimateGas(args) {\n return ConnectionController._getClient()?.estimateGas(args);\n },\n async writeContract(args) {\n return ConnectionController._getClient()?.writeContract(args);\n },\n async getEnsAddress(value) {\n return ConnectionController._getClient()?.getEnsAddress(value);\n },\n async getEnsAvatar(value) {\n return ConnectionController._getClient()?.getEnsAvatar(value);\n },\n checkInstalled(ids) {\n return ConnectionController._getClient()?.checkInstalled?.(ids) || false;\n },\n resetWcConnection() {\n state.wcUri = undefined;\n state.wcPairingExpiry = undefined;\n state.wcLinking = undefined;\n state.recentWallet = undefined;\n state.status = 'disconnected';\n TransactionsController.resetTransactions();\n StorageUtil.deleteWalletConnectDeepLink();\n },\n resetUri() {\n state.wcUri = undefined;\n state.wcPairingExpiry = undefined;\n wcConnectionPromise = undefined;\n },\n finalizeWcConnection() {\n const { wcLinking, recentWallet } = ConnectionController.state;\n if (wcLinking) {\n StorageUtil.setWalletConnectDeepLink(wcLinking);\n }\n if (recentWallet) {\n StorageUtil.setAppKitRecent(recentWallet);\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'CONNECT_SUCCESS',\n properties: {\n method: wcLinking ? 'mobile' : 'qrcode',\n name: RouterController.state.data?.wallet?.name || 'Unknown',\n caipNetworkId: ChainController.getActiveCaipNetwork()?.caipNetworkId\n }\n });\n },\n setWcBasic(wcBasic) {\n state.wcBasic = wcBasic;\n },\n setUri(uri) {\n state.wcUri = uri;\n state.wcPairingExpiry = CoreHelperUtil.getPairingExpiry();\n },\n setWcLinking(wcLinking) {\n state.wcLinking = wcLinking;\n },\n setWcError(wcError) {\n state.wcError = wcError;\n state.buffering = false;\n },\n setRecentWallet(wallet) {\n state.recentWallet = wallet;\n },\n setBuffering(buffering) {\n state.buffering = buffering;\n },\n setStatus(status) {\n state.status = status;\n },\n setIsSwitchingConnection(isSwitchingConnection) {\n state.isSwitchingConnection = isSwitchingConnection;\n },\n async disconnect({ id, namespace, initialDisconnect } = {}) {\n try {\n await ConnectionController._getClient()?.disconnect({\n id,\n chainNamespace: namespace,\n initialDisconnect\n });\n }\n catch (error) {\n throw new AppKitError('Failed to disconnect', 'INTERNAL_SDK_ERROR', error);\n }\n },\n setConnections(connections, chainNamespace) {\n const connectionsMap = new Map(state.connections);\n connectionsMap.set(chainNamespace, connections);\n state.connections = connectionsMap;\n },\n async handleAuthAccountSwitch({ address, namespace }) {\n const smartAccount = AccountController.state.user?.accounts?.find(c => c.type === 'smartAccount');\n const accountType = smartAccount &&\n smartAccount.address.toLowerCase() === address.toLowerCase() &&\n ConnectorControllerUtil.canSwitchToSmartAccount(namespace)\n ? 'smartAccount'\n : 'eoa';\n await ConnectionController.setPreferredAccountType(accountType, namespace);\n },\n async handleActiveConnection({ connection, namespace, address }) {\n const connector = ConnectorController.getConnectorById(connection.connectorId);\n const isAuthConnector = connection.connectorId === CommonConstantsUtil.CONNECTOR_ID.AUTH;\n if (!connector) {\n throw new Error(`No connector found for connection: ${connection.connectorId}`);\n }\n if (!isAuthConnector) {\n const connectData = await ConnectionController.connectExternal({\n id: connector.id,\n type: connector.type,\n provider: connector.provider,\n address,\n chain: namespace\n }, namespace);\n return connectData?.address;\n }\n else if (isAuthConnector && address) {\n await ConnectionController.handleAuthAccountSwitch({ address, namespace });\n }\n return address;\n },\n async handleDisconnectedConnection({ connection, namespace, address, closeModalOnConnect }) {\n const connector = ConnectorController.getConnectorById(connection.connectorId);\n const authName = connection.auth?.name?.toLowerCase();\n const isAuthConnector = connection.connectorId === CommonConstantsUtil.CONNECTOR_ID.AUTH;\n const isWCConnector = connection.connectorId === CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n if (!connector) {\n throw new Error(`No connector found for connection: ${connection.connectorId}`);\n }\n let newAddress = undefined;\n if (isAuthConnector) {\n if (authName && ConnectorControllerUtil.isSocialProvider(authName)) {\n const { address: socialAddress } = await ConnectorControllerUtil.connectSocial({\n social: authName,\n closeModalOnConnect,\n onOpenFarcaster() {\n ModalController.open({ view: 'ConnectingFarcaster' });\n },\n onConnect() {\n RouterController.replace('ProfileWallets');\n }\n });\n newAddress = socialAddress;\n }\n else {\n const { address: emailAddress } = await ConnectorControllerUtil.connectEmail({\n closeModalOnConnect,\n onOpen() {\n ModalController.open({ view: 'EmailLogin' });\n },\n onConnect() {\n RouterController.replace('ProfileWallets');\n }\n });\n newAddress = emailAddress;\n }\n }\n else if (isWCConnector) {\n const { address: wcAddress } = await ConnectorControllerUtil.connectWalletConnect({\n walletConnect: true,\n connector,\n closeModalOnConnect,\n onOpen(isMobile) {\n ModalController.open({ view: isMobile ? 'AllWallets' : 'ConnectingWalletConnect' });\n },\n onConnect() {\n RouterController.replace('ProfileWallets');\n }\n });\n newAddress = wcAddress;\n }\n else {\n const connectData = await ConnectionController.connectExternal({\n id: connector.id,\n type: connector.type,\n provider: connector.provider,\n chain: namespace\n }, namespace);\n if (connectData) {\n newAddress = connectData.address;\n }\n }\n if (isAuthConnector && address) {\n await ConnectionController.handleAuthAccountSwitch({ address, namespace });\n }\n return newAddress;\n },\n async switchConnection({ connection, address, namespace, closeModalOnConnect, onChange }) {\n let currentAddress = undefined;\n const caipAddress = AccountController.getCaipAddress(namespace);\n if (caipAddress) {\n const { address: currentAddressParsed } = ParseUtil.parseCaipAddress(caipAddress);\n currentAddress = currentAddressParsed;\n }\n const status = ConnectionControllerUtil.getConnectionStatus(connection, namespace);\n switch (status) {\n case 'connected':\n case 'active': {\n const newAddress = await ConnectionController.handleActiveConnection({\n connection,\n namespace,\n address\n });\n if (currentAddress && newAddress) {\n const hasSwitchedAccount = newAddress.toLowerCase() !== currentAddress.toLowerCase();\n onChange?.({\n address: newAddress,\n namespace,\n hasSwitchedAccount,\n hasSwitchedWallet: status === 'active'\n });\n }\n break;\n }\n case 'disconnected': {\n const newAddress = await ConnectionController.handleDisconnectedConnection({\n connection,\n namespace,\n address,\n closeModalOnConnect\n });\n if (newAddress) {\n onChange?.({\n address: newAddress,\n namespace,\n hasSwitchedAccount: true,\n hasSwitchedWallet: true\n });\n }\n break;\n }\n default:\n throw new Error(`Invalid connection status: ${status}`);\n }\n }\n};\n// Export the controller wrapped with our error boundary\nexport const ConnectionController = withErrorBoundary(controller);\n//# sourceMappingURL=ConnectionController.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey } from 'valtio/vanilla/utils';\n// -- State --------------------------------------------- //\nconst state = proxy({\n loading: false,\n open: false,\n selectedNetworkId: undefined,\n activeChain: undefined,\n initialized: false\n});\n// -- Controller ---------------------------------------- //\nexport const PublicStateController = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeOpen(callback) {\n return subscribeKey(state, 'open', callback);\n },\n set(newState) {\n Object.assign(state, { ...state, ...newState });\n }\n};\n//# sourceMappingURL=PublicStateController.js.map","import { AccountController } from '../controllers/AccountController.js';\nimport { BlockchainApiController } from '../controllers/BlockchainApiController.js';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectionController } from '../controllers/ConnectionController.js';\nimport { BalanceUtil } from './BalanceUtil.js';\nimport { getActiveNetworkTokenAddress } from './ChainControllerUtil.js';\n// -- Controller ---------------------------------------- //\nexport const SwapApiUtil = {\n async getTokenList() {\n const caipNetwork = ChainController.state.activeCaipNetwork;\n const response = await BlockchainApiController.fetchSwapTokens({\n chainId: caipNetwork?.caipNetworkId\n });\n const tokens = response?.tokens?.map(token => ({\n ...token,\n eip2612: false,\n quantity: {\n decimals: '0',\n numeric: '0'\n },\n price: 0,\n value: 0\n })) || [];\n return tokens;\n },\n async fetchGasPrice() {\n const caipNetwork = ChainController.state.activeCaipNetwork;\n if (!caipNetwork) {\n return null;\n }\n try {\n switch (caipNetwork.chainNamespace) {\n case 'solana':\n // eslint-disable-next-line no-case-declarations\n const lamportsPerSignature = (await ConnectionController?.estimateGas({ chainNamespace: 'solana' }))?.toString();\n return {\n standard: lamportsPerSignature,\n fast: lamportsPerSignature,\n instant: lamportsPerSignature\n };\n case 'eip155':\n default:\n return await BlockchainApiController.fetchGasPrice({\n chainId: caipNetwork.caipNetworkId\n });\n }\n }\n catch {\n return null;\n }\n },\n async fetchSwapAllowance({ tokenAddress, userAddress, sourceTokenAmount, sourceTokenDecimals }) {\n const response = await BlockchainApiController.fetchSwapAllowance({\n tokenAddress,\n userAddress\n });\n if (response?.allowance && sourceTokenAmount && sourceTokenDecimals) {\n const parsedValue = ConnectionController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0;\n const hasAllowance = BigInt(response.allowance) >= parsedValue;\n return hasAllowance;\n }\n return false;\n },\n async getMyTokensWithBalance(forceUpdate) {\n const balances = await BalanceUtil.getMyTokensWithBalance(forceUpdate);\n AccountController.setTokenBalance(balances, ChainController.state.activeChain);\n return this.mapBalancesToSwapTokens(balances);\n },\n /**\n * Maps the balances from Blockchain API to SwapTokenWithBalance array\n * @param balances\n * @returns SwapTokenWithBalance[]\n */\n mapBalancesToSwapTokens(balances) {\n return (balances?.map(token => ({\n ...token,\n address: token?.address ? token.address : getActiveNetworkTokenAddress(),\n decimals: parseInt(token.quantity.decimals, 10),\n logoUri: token.iconUrl,\n eip2612: false\n })) || []);\n }\n};\n//# sourceMappingURL=SwapApiUtil.js.map","import { proxy, ref, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil as CommonConstantsUtil, NumberUtil } from '@reown/appkit-common';\nimport { ContractUtil } from '@reown/appkit-common';\nimport { W3mFrameRpcConstants } from '@reown/appkit-wallet/utils';\nimport { BalanceUtil } from '../utils/BalanceUtil.js';\nimport { getActiveNetworkTokenAddress, getPreferredAccountType } from '../utils/ChainControllerUtil.js';\nimport { ConstantsUtil } from '../utils/ConstantsUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { SwapApiUtil } from '../utils/SwapApiUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { AccountController } from './AccountController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectionController } from './ConnectionController.js';\nimport { EventsController } from './EventsController.js';\nimport { RouterController } from './RouterController.js';\nimport { SnackController } from './SnackController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n tokenBalances: [],\n loading: false\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n setToken(token) {\n if (token) {\n state.token = ref(token);\n }\n },\n setTokenAmount(sendTokenAmount) {\n state.sendTokenAmount = sendTokenAmount;\n },\n setReceiverAddress(receiverAddress) {\n state.receiverAddress = receiverAddress;\n },\n setReceiverProfileImageUrl(receiverProfileImageUrl) {\n state.receiverProfileImageUrl = receiverProfileImageUrl;\n },\n setReceiverProfileName(receiverProfileName) {\n state.receiverProfileName = receiverProfileName;\n },\n setNetworkBalanceInUsd(networkBalanceInUSD) {\n state.networkBalanceInUSD = networkBalanceInUSD;\n },\n setLoading(loading) {\n state.loading = loading;\n },\n async sendToken() {\n try {\n SendController.setLoading(true);\n switch (ChainController.state.activeCaipNetwork?.chainNamespace) {\n case 'eip155':\n await SendController.sendEvmToken();\n return;\n case 'solana':\n await SendController.sendSolanaToken();\n return;\n default:\n throw new Error('Unsupported chain');\n }\n }\n finally {\n SendController.setLoading(false);\n }\n },\n async sendEvmToken() {\n const activeChainNamespace = ChainController.state.activeChain;\n if (!activeChainNamespace) {\n throw new Error('SendController:sendEvmToken - activeChainNamespace is required');\n }\n const activeAccountType = getPreferredAccountType(activeChainNamespace);\n if (!SendController.state.sendTokenAmount || !SendController.state.receiverAddress) {\n throw new Error('An amount and receiver address are required');\n }\n if (!SendController.state.token) {\n throw new Error('A token is required');\n }\n if (SendController.state.token?.address) {\n EventsController.sendEvent({\n type: 'track',\n event: 'SEND_INITIATED',\n properties: {\n isSmartAccount: activeAccountType === W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT,\n token: SendController.state.token.address,\n amount: SendController.state.sendTokenAmount,\n network: ChainController.state.activeCaipNetwork?.caipNetworkId || ''\n }\n });\n await SendController.sendERC20Token({\n receiverAddress: SendController.state.receiverAddress,\n tokenAddress: SendController.state.token.address,\n sendTokenAmount: SendController.state.sendTokenAmount,\n decimals: SendController.state.token.quantity.decimals\n });\n }\n else {\n EventsController.sendEvent({\n type: 'track',\n event: 'SEND_INITIATED',\n properties: {\n isSmartAccount: activeAccountType === W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT,\n token: SendController.state.token.symbol || '',\n amount: SendController.state.sendTokenAmount,\n network: ChainController.state.activeCaipNetwork?.caipNetworkId || ''\n }\n });\n await SendController.sendNativeToken({\n receiverAddress: SendController.state.receiverAddress,\n sendTokenAmount: SendController.state.sendTokenAmount,\n decimals: SendController.state.token.quantity.decimals\n });\n }\n },\n async fetchTokenBalance(onError) {\n state.loading = true;\n const chainId = ChainController.state.activeCaipNetwork?.caipNetworkId;\n const chain = ChainController.state.activeCaipNetwork?.chainNamespace;\n const caipAddress = ChainController.state.activeCaipAddress;\n const address = caipAddress ? CoreHelperUtil.getPlainAddress(caipAddress) : undefined;\n if (state.lastRetry &&\n !CoreHelperUtil.isAllowedRetry(state.lastRetry, 30 * ConstantsUtil.ONE_SEC_MS)) {\n state.loading = false;\n return [];\n }\n try {\n if (address && chainId && chain) {\n const balances = await BalanceUtil.getMyTokensWithBalance();\n state.tokenBalances = balances;\n state.lastRetry = undefined;\n return balances;\n }\n }\n catch (error) {\n state.lastRetry = Date.now();\n onError?.(error);\n SnackController.showError('Token Balance Unavailable');\n }\n finally {\n state.loading = false;\n }\n return [];\n },\n fetchNetworkBalance() {\n if (state.tokenBalances.length === 0) {\n return;\n }\n const networkTokenBalances = SwapApiUtil.mapBalancesToSwapTokens(state.tokenBalances);\n if (!networkTokenBalances) {\n return;\n }\n const networkToken = networkTokenBalances.find(token => token.address === getActiveNetworkTokenAddress());\n if (!networkToken) {\n return;\n }\n state.networkBalanceInUSD = networkToken\n ? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString()\n : '0';\n },\n async sendNativeToken(params) {\n RouterController.pushTransactionStack({});\n const to = params.receiverAddress;\n const address = AccountController.state.address;\n const value = ConnectionController.parseUnits(params.sendTokenAmount.toString(), Number(params.decimals));\n const data = '0x';\n await ConnectionController.sendTransaction({\n chainNamespace: CommonConstantsUtil.CHAIN.EVM,\n to,\n address,\n data,\n value: value ?? BigInt(0)\n });\n EventsController.sendEvent({\n type: 'track',\n event: 'SEND_SUCCESS',\n properties: {\n isSmartAccount: getPreferredAccountType('eip155') === W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT,\n token: SendController.state.token?.symbol || '',\n amount: params.sendTokenAmount,\n network: ChainController.state.activeCaipNetwork?.caipNetworkId || ''\n }\n });\n ConnectionController._getClient()?.updateBalance('eip155');\n SendController.resetSend();\n },\n async sendERC20Token(params) {\n RouterController.pushTransactionStack({\n onSuccess() {\n RouterController.replace('Account');\n }\n });\n const amount = ConnectionController.parseUnits(params.sendTokenAmount.toString(), Number(params.decimals));\n if (AccountController.state.address &&\n params.sendTokenAmount &&\n params.receiverAddress &&\n params.tokenAddress) {\n const tokenAddress = CoreHelperUtil.getPlainAddress(params.tokenAddress);\n if (!tokenAddress) {\n throw new Error('SendController:sendERC20Token - tokenAddress is required');\n }\n await ConnectionController.writeContract({\n fromAddress: AccountController.state.address,\n tokenAddress,\n args: [params.receiverAddress, amount ?? BigInt(0)],\n method: 'transfer',\n abi: ContractUtil.getERC20Abi(tokenAddress),\n chainNamespace: CommonConstantsUtil.CHAIN.EVM\n });\n SendController.resetSend();\n }\n },\n async sendSolanaToken() {\n if (!SendController.state.sendTokenAmount || !SendController.state.receiverAddress) {\n throw new Error('An amount and receiver address are required');\n }\n RouterController.pushTransactionStack({\n onSuccess() {\n RouterController.replace('Account');\n }\n });\n await ConnectionController.sendTransaction({\n chainNamespace: 'solana',\n to: SendController.state.receiverAddress,\n value: SendController.state.sendTokenAmount\n });\n ConnectionController._getClient()?.updateBalance('solana');\n SendController.resetSend();\n },\n resetSend() {\n state.token = undefined;\n state.sendTokenAmount = undefined;\n state.receiverAddress = undefined;\n state.receiverProfileImageUrl = undefined;\n state.receiverProfileName = undefined;\n state.loading = false;\n state.tokenBalances = [];\n }\n};\n// Export the controller wrapped with our error boundary\nexport const SendController = withErrorBoundary(controller);\n//# sourceMappingURL=SendController.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { proxyMap, subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil as CommonConstantsUtil, NetworkUtil } from '@reown/appkit-common';\nimport { ConstantsUtil } from '../utils/ConstantsUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { AccountController } from './AccountController.js';\nimport { ConnectionController } from './ConnectionController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { EventsController } from './EventsController.js';\nimport { ModalController } from './ModalController.js';\nimport { OptionsController } from './OptionsController.js';\nimport { PublicStateController } from './PublicStateController.js';\nimport { RouterController } from './RouterController.js';\nimport { SendController } from './SendController.js';\n// -- Constants ----------------------------------------- //\nconst accountState = {\n currentTab: 0,\n tokenBalance: [],\n smartAccountDeployed: false,\n addressLabels: new Map(),\n user: undefined,\n preferredAccountType: undefined\n};\nconst networkState = {\n caipNetwork: undefined,\n supportsAllNetworks: true,\n smartAccountEnabledNetworks: []\n};\n// -- State --------------------------------------------- //\nconst state = proxy({\n chains: proxyMap(),\n activeCaipAddress: undefined,\n activeChain: undefined,\n activeCaipNetwork: undefined,\n noAdapters: false,\n universalAdapter: {\n networkControllerClient: undefined,\n connectionControllerClient: undefined\n },\n isSwitchingNamespace: false\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => {\n callback(state);\n });\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n subscribeChainProp(property, callback, chain) {\n let prev = undefined;\n return sub(state.chains, () => {\n const activeChain = chain || state.activeChain;\n if (activeChain) {\n const nextValue = state.chains.get(activeChain)?.[property];\n if (prev !== nextValue) {\n prev = nextValue;\n callback(nextValue);\n }\n }\n });\n },\n initialize(adapters, caipNetworks, clients) {\n const { chainId: activeChainId, namespace: activeNamespace } = StorageUtil.getActiveNetworkProps();\n const activeCaipNetwork = caipNetworks?.find(network => network.id.toString() === activeChainId?.toString());\n const defaultAdapter = adapters.find(adapter => adapter?.namespace === activeNamespace);\n const adapterToActivate = defaultAdapter || adapters?.[0];\n const namespacesFromAdapters = adapters.map(a => a.namespace).filter(n => n !== undefined);\n /**\n * If the AppKit is in embedded mode (for Demo app), we should get the available namespaces from the adapters.\n */\n const namespaces = OptionsController.state.enableEmbedded\n ? new Set([...namespacesFromAdapters])\n : new Set([...(caipNetworks?.map(network => network.chainNamespace) ?? [])]);\n if (adapters?.length === 0 || !adapterToActivate) {\n state.noAdapters = true;\n }\n if (!state.noAdapters) {\n state.activeChain = adapterToActivate?.namespace;\n state.activeCaipNetwork = activeCaipNetwork;\n ChainController.setChainNetworkData(adapterToActivate?.namespace, {\n caipNetwork: activeCaipNetwork\n });\n if (state.activeChain) {\n PublicStateController.set({ activeChain: adapterToActivate?.namespace });\n }\n }\n namespaces.forEach(namespace => {\n const namespaceNetworks = caipNetworks?.filter(network => network.chainNamespace === namespace);\n const storedAccountTypes = StorageUtil.getPreferredAccountTypes() || {};\n const defaultTypes = { ...OptionsController.state.defaultAccountTypes, ...storedAccountTypes };\n ChainController.state.chains.set(namespace, {\n namespace,\n networkState: proxy({ ...networkState, caipNetwork: namespaceNetworks?.[0] }),\n accountState: proxy({ ...accountState, preferredAccountType: defaultTypes[namespace] }),\n caipNetworks: namespaceNetworks ?? [],\n ...clients\n });\n ChainController.setRequestedCaipNetworks(namespaceNetworks ?? [], namespace);\n });\n },\n removeAdapter(namespace) {\n if (state.activeChain === namespace) {\n const nextAdapter = Array.from(state.chains.entries()).find(([chainNamespace]) => chainNamespace !== namespace);\n if (nextAdapter) {\n const caipNetwork = nextAdapter[1]?.caipNetworks?.[0];\n if (caipNetwork) {\n ChainController.setActiveCaipNetwork(caipNetwork);\n }\n }\n }\n state.chains.delete(namespace);\n },\n addAdapter(adapter, { networkControllerClient, connectionControllerClient }, caipNetworks) {\n if (!adapter.namespace) {\n throw new Error('ChainController:addAdapter - adapter must have a namespace');\n }\n state.chains.set(adapter.namespace, {\n namespace: adapter.namespace,\n networkState: { ...networkState, caipNetwork: caipNetworks[0] },\n accountState,\n caipNetworks,\n connectionControllerClient,\n networkControllerClient\n });\n ChainController.setRequestedCaipNetworks(caipNetworks?.filter(caipNetwork => caipNetwork.chainNamespace === adapter.namespace) ?? [], adapter.namespace);\n },\n addNetwork(network) {\n const chainAdapter = state.chains.get(network.chainNamespace);\n if (chainAdapter) {\n const newNetworks = [...(chainAdapter.caipNetworks || [])];\n if (!chainAdapter.caipNetworks?.find(caipNetwork => caipNetwork.id === network.id)) {\n newNetworks.push(network);\n }\n state.chains.set(network.chainNamespace, { ...chainAdapter, caipNetworks: newNetworks });\n ChainController.setRequestedCaipNetworks(newNetworks, network.chainNamespace);\n ConnectorController.filterByNamespace(network.chainNamespace, true);\n }\n },\n removeNetwork(namespace, networkId) {\n const chainAdapter = state.chains.get(namespace);\n if (chainAdapter) {\n // Check if network being removed is active network\n const isActiveNetwork = state.activeCaipNetwork?.id === networkId;\n // Filter out the network being removed\n const newCaipNetworksOfAdapter = [\n ...(chainAdapter.caipNetworks?.filter(network => network.id !== networkId) || [])\n ];\n // If active network was removed and there are other networks available, switch to first one\n if (isActiveNetwork && chainAdapter?.caipNetworks?.[0]) {\n ChainController.setActiveCaipNetwork(chainAdapter.caipNetworks[0]);\n }\n state.chains.set(namespace, { ...chainAdapter, caipNetworks: newCaipNetworksOfAdapter });\n ChainController.setRequestedCaipNetworks(newCaipNetworksOfAdapter || [], namespace);\n if (newCaipNetworksOfAdapter.length === 0) {\n ConnectorController.filterByNamespace(namespace, false);\n }\n }\n },\n setAdapterNetworkState(chain, props) {\n const chainAdapter = state.chains.get(chain);\n if (chainAdapter) {\n chainAdapter.networkState = {\n ...(chainAdapter.networkState || networkState),\n ...props\n };\n state.chains.set(chain, chainAdapter);\n }\n },\n setChainAccountData(chain, accountProps, _unknown = true) {\n if (!chain) {\n throw new Error('Chain is required to update chain account data');\n }\n const chainAdapter = state.chains.get(chain);\n if (chainAdapter) {\n const newAccountState = { ...(chainAdapter.accountState || accountState), ...accountProps };\n state.chains.set(chain, { ...chainAdapter, accountState: newAccountState });\n if (state.chains.size === 1 || state.activeChain === chain) {\n if (accountProps.caipAddress) {\n state.activeCaipAddress = accountProps.caipAddress;\n }\n AccountController.replaceState(newAccountState);\n }\n }\n },\n setChainNetworkData(chain, networkProps) {\n if (!chain) {\n return;\n }\n const chainAdapter = state.chains.get(chain);\n if (chainAdapter) {\n const newNetworkState = { ...(chainAdapter.networkState || networkState), ...networkProps };\n state.chains.set(chain, { ...chainAdapter, networkState: newNetworkState });\n }\n },\n // eslint-disable-next-line max-params\n setAccountProp(prop, value, chain, replaceState = true) {\n ChainController.setChainAccountData(chain, { [prop]: value }, replaceState);\n },\n setActiveNamespace(chain) {\n state.activeChain = chain;\n const newAdapter = chain ? state.chains.get(chain) : undefined;\n const caipNetwork = newAdapter?.networkState?.caipNetwork;\n if (caipNetwork?.id && chain) {\n state.activeCaipAddress = newAdapter?.accountState?.caipAddress;\n state.activeCaipNetwork = caipNetwork;\n ChainController.setChainNetworkData(chain, { caipNetwork });\n StorageUtil.setActiveCaipNetworkId(caipNetwork?.caipNetworkId);\n PublicStateController.set({\n activeChain: chain,\n selectedNetworkId: caipNetwork?.caipNetworkId\n });\n }\n },\n setActiveCaipNetwork(caipNetwork) {\n if (!caipNetwork) {\n return;\n }\n if (state.activeChain !== caipNetwork.chainNamespace) {\n ChainController.setIsSwitchingNamespace(true);\n }\n const newAdapter = state.chains.get(caipNetwork.chainNamespace);\n state.activeChain = caipNetwork.chainNamespace;\n state.activeCaipNetwork = caipNetwork;\n ChainController.setChainNetworkData(caipNetwork.chainNamespace, { caipNetwork });\n if (newAdapter?.accountState?.address) {\n state.activeCaipAddress = `${caipNetwork.chainNamespace}:${caipNetwork.id}:${newAdapter?.accountState?.address}`;\n }\n else {\n state.activeCaipAddress = undefined;\n }\n // Update the chain's account state with the new caip address value\n ChainController.setAccountProp('caipAddress', state.activeCaipAddress, caipNetwork.chainNamespace);\n if (newAdapter) {\n AccountController.replaceState(newAdapter.accountState);\n }\n // Reset send state when switching networks\n SendController.resetSend();\n PublicStateController.set({\n activeChain: state.activeChain,\n selectedNetworkId: state.activeCaipNetwork?.caipNetworkId\n });\n StorageUtil.setActiveCaipNetworkId(caipNetwork.caipNetworkId);\n const isSupported = ChainController.checkIfSupportedNetwork(caipNetwork.chainNamespace);\n if (!isSupported &&\n OptionsController.state.enableNetworkSwitch &&\n !OptionsController.state.allowUnsupportedChain &&\n !ConnectionController.state.wcBasic) {\n ChainController.showUnsupportedChainUI();\n }\n },\n addCaipNetwork(caipNetwork) {\n if (!caipNetwork) {\n return;\n }\n const chain = state.chains.get(caipNetwork.chainNamespace);\n if (chain) {\n chain?.caipNetworks?.push(caipNetwork);\n }\n },\n async switchActiveNamespace(namespace) {\n if (!namespace) {\n return;\n }\n const isDifferentChain = namespace !== ChainController.state.activeChain;\n const caipNetworkOfNamespace = ChainController.getNetworkData(namespace)?.caipNetwork;\n const firstNetworkWithChain = ChainController.getCaipNetworkByNamespace(namespace, caipNetworkOfNamespace?.id);\n if (isDifferentChain && firstNetworkWithChain) {\n await ChainController.switchActiveNetwork(firstNetworkWithChain);\n }\n },\n async switchActiveNetwork(network) {\n const namespace = ChainController.state.activeChain;\n if (!namespace) {\n throw new Error('ChainController:switchActiveNetwork - namespace is required');\n }\n const activeAdapter = ChainController.state.chains.get(namespace);\n const unsupportedNetwork = !activeAdapter?.caipNetworks?.some(caipNetwork => caipNetwork.id === state.activeCaipNetwork?.id);\n const networkControllerClient = ChainController.getNetworkControllerClient(network.chainNamespace);\n if (networkControllerClient) {\n try {\n await networkControllerClient.switchCaipNetwork(network);\n if (unsupportedNetwork) {\n ModalController.close();\n }\n }\n catch (error) {\n RouterController.goBack();\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'SWITCH_NETWORK',\n properties: { network: network.caipNetworkId }\n });\n }\n },\n getNetworkControllerClient(chainNamespace) {\n const chain = chainNamespace || state.activeChain;\n if (!chain) {\n throw new Error('ChainController:getNetworkControllerClient - chain is required');\n }\n const chainAdapter = state.chains.get(chain);\n if (!chainAdapter) {\n throw new Error('Chain adapter not found');\n }\n if (!chainAdapter.networkControllerClient) {\n throw new Error('NetworkController client not set');\n }\n return chainAdapter.networkControllerClient;\n },\n getConnectionControllerClient(_chain) {\n const chain = _chain || state.activeChain;\n if (!chain) {\n throw new Error('Chain is required to get connection controller client');\n }\n const chainAdapter = state.chains.get(chain);\n if (!chainAdapter?.connectionControllerClient) {\n throw new Error('ConnectionController client not set');\n }\n return chainAdapter.connectionControllerClient;\n },\n getNetworkProp(key, namespace) {\n const chainNetworkState = state.chains.get(namespace)?.networkState;\n if (!chainNetworkState) {\n return undefined;\n }\n return chainNetworkState[key];\n },\n getRequestedCaipNetworks(chainToFilter) {\n const adapter = state.chains.get(chainToFilter);\n const { approvedCaipNetworkIds = [], requestedCaipNetworks = [] } = adapter?.networkState || {};\n const sortedNetworks = CoreHelperUtil.sortRequestedNetworks(approvedCaipNetworkIds, requestedCaipNetworks);\n const filteredNetworks = sortedNetworks.filter(network => network?.id);\n return filteredNetworks;\n },\n getAllRequestedCaipNetworks() {\n const requestedCaipNetworks = [];\n state.chains.forEach(chainAdapter => {\n if (!chainAdapter.namespace) {\n throw new Error('ChainController:getAllRequestedCaipNetworks - chainAdapter must have a namespace');\n }\n const caipNetworks = ChainController.getRequestedCaipNetworks(chainAdapter.namespace);\n requestedCaipNetworks.push(...caipNetworks);\n });\n return requestedCaipNetworks;\n },\n setRequestedCaipNetworks(caipNetworks, chain) {\n ChainController.setAdapterNetworkState(chain, { requestedCaipNetworks: caipNetworks });\n const allRequestedCaipNetworks = ChainController.getAllRequestedCaipNetworks();\n const namespaces = allRequestedCaipNetworks.map(network => network.chainNamespace);\n const uniqueNamespaces = Array.from(new Set(namespaces));\n ConnectorController.filterByNamespaces(uniqueNamespaces);\n },\n getAllApprovedCaipNetworkIds() {\n const approvedCaipNetworkIds = [];\n state.chains.forEach(chainAdapter => {\n if (!chainAdapter.namespace) {\n throw new Error('ChainController:getAllApprovedCaipNetworkIds - chainAdapter must have a namespace');\n }\n const approvedIds = ChainController.getApprovedCaipNetworkIds(chainAdapter.namespace);\n approvedCaipNetworkIds.push(...approvedIds);\n });\n return approvedCaipNetworkIds;\n },\n getActiveCaipNetwork(chainNamespace) {\n if (chainNamespace) {\n return state.chains.get(chainNamespace)?.networkState?.caipNetwork;\n }\n return state.activeCaipNetwork;\n },\n getActiveCaipAddress() {\n return state.activeCaipAddress;\n },\n getApprovedCaipNetworkIds(namespace) {\n const adapter = state.chains.get(namespace);\n const approvedCaipNetworkIds = adapter?.networkState?.approvedCaipNetworkIds || [];\n return approvedCaipNetworkIds;\n },\n async setApprovedCaipNetworksData(namespace) {\n const networkControllerClient = ChainController.getNetworkControllerClient();\n const data = await networkControllerClient?.getApprovedCaipNetworksData();\n ChainController.setAdapterNetworkState(namespace, {\n approvedCaipNetworkIds: data?.approvedCaipNetworkIds,\n supportsAllNetworks: data?.supportsAllNetworks\n });\n },\n checkIfSupportedNetwork(namespace, caipNetworkId) {\n const activeCaipNetworkId = caipNetworkId || state.activeCaipNetwork?.caipNetworkId;\n const requestedCaipNetworks = ChainController.getRequestedCaipNetworks(namespace);\n if (!requestedCaipNetworks.length) {\n return true;\n }\n return requestedCaipNetworks?.some(network => network.caipNetworkId === activeCaipNetworkId);\n },\n checkIfSupportedChainId(chainId) {\n if (!state.activeChain) {\n return true;\n }\n const requestedCaipNetworks = ChainController.getRequestedCaipNetworks(state.activeChain);\n return requestedCaipNetworks?.some(network => network.id === chainId);\n },\n // Smart Account Network Handlers\n setSmartAccountEnabledNetworks(smartAccountEnabledNetworks, chain) {\n ChainController.setAdapterNetworkState(chain, { smartAccountEnabledNetworks });\n },\n checkIfSmartAccountEnabled() {\n const networkId = NetworkUtil.caipNetworkIdToNumber(state.activeCaipNetwork?.caipNetworkId);\n const activeChain = state.activeChain;\n if (!activeChain || !networkId) {\n return false;\n }\n const smartAccountEnabledNetworks = ChainController.getNetworkProp('smartAccountEnabledNetworks', activeChain);\n return Boolean(smartAccountEnabledNetworks?.includes(Number(networkId)));\n },\n showUnsupportedChainUI() {\n ModalController.open({ view: 'UnsupportedChain' });\n },\n checkIfNamesSupported() {\n const activeCaipNetwork = state.activeCaipNetwork;\n return Boolean(activeCaipNetwork?.chainNamespace &&\n ConstantsUtil.NAMES_SUPPORTED_CHAIN_NAMESPACES.includes(activeCaipNetwork.chainNamespace));\n },\n resetNetwork(namespace) {\n ChainController.setAdapterNetworkState(namespace, {\n approvedCaipNetworkIds: undefined,\n supportsAllNetworks: true\n });\n },\n resetAccount(chain) {\n const chainToWrite = chain;\n if (!chainToWrite) {\n throw new Error('Chain is required to set account prop');\n }\n const currentAccountType = ChainController.state.chains.get(chainToWrite)?.accountState?.preferredAccountType;\n const optionsAccountType = OptionsController.state.defaultAccountTypes[chainToWrite];\n state.activeCaipAddress = undefined;\n ChainController.setChainAccountData(chainToWrite, {\n smartAccountDeployed: false,\n currentTab: 0,\n caipAddress: undefined,\n address: undefined,\n balance: undefined,\n balanceSymbol: undefined,\n profileName: undefined,\n profileImage: undefined,\n addressExplorerUrl: undefined,\n tokenBalance: [],\n connectedWalletInfo: undefined,\n preferredAccountType: optionsAccountType || currentAccountType,\n socialProvider: undefined,\n socialWindow: undefined,\n farcasterUrl: undefined,\n user: undefined,\n status: 'disconnected'\n });\n ConnectorController.removeConnectorId(chainToWrite);\n },\n setIsSwitchingNamespace(isSwitchingNamespace) {\n state.isSwitchingNamespace = isSwitchingNamespace;\n },\n getFirstCaipNetworkSupportsAuthConnector() {\n const availableChains = [];\n let firstCaipNetwork = undefined;\n state.chains.forEach(chain => {\n if (CommonConstantsUtil.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(ns => ns === chain.namespace)) {\n if (chain.namespace) {\n availableChains.push(chain.namespace);\n }\n }\n });\n if (availableChains.length > 0) {\n const firstAvailableChain = availableChains[0];\n firstCaipNetwork = firstAvailableChain\n ? state.chains.get(firstAvailableChain)?.caipNetworks?.[0]\n : undefined;\n return firstCaipNetwork;\n }\n return undefined;\n },\n getAccountData(chainNamespace) {\n const namespace = chainNamespace || state.activeChain;\n if (!namespace) {\n return undefined;\n }\n return ChainController.state.chains.get(namespace)?.accountState;\n },\n getNetworkData(chainNamespace) {\n const namespace = chainNamespace || state.activeChain;\n if (!namespace) {\n return undefined;\n }\n return ChainController.state.chains.get(namespace)?.networkState;\n },\n getCaipNetworkByNamespace(chainNamespace, chainId) {\n if (!chainNamespace) {\n return undefined;\n }\n const chain = ChainController.state.chains.get(chainNamespace);\n const byChainId = chain?.caipNetworks?.find(network => network.id === chainId);\n if (byChainId) {\n return byChainId;\n }\n return chain?.networkState?.caipNetwork || chain?.caipNetworks?.[0];\n },\n /**\n * Get the requested CaipNetwork IDs for a given namespace. If namespace is not provided, all requested CaipNetwork IDs will be returned\n * @param namespace - The namespace to get the requested CaipNetwork IDs for\n * @returns The requested CaipNetwork IDs\n */\n getRequestedCaipNetworkIds() {\n const namespace = ConnectorController.state.filterByNamespace;\n const chains = namespace ? [state.chains.get(namespace)] : Array.from(state.chains.values());\n return chains\n .flatMap(chain => chain?.caipNetworks || [])\n .map(caipNetwork => caipNetwork.caipNetworkId);\n },\n getCaipNetworks(namespace) {\n if (namespace) {\n return ChainController.getRequestedCaipNetworks(namespace);\n }\n return ChainController.getAllRequestedCaipNetworks();\n },\n setLastConnectedSIWECaipNetwork(network) {\n state.lastConnectedSIWECaipNetwork = network;\n },\n getLastConnectedSIWECaipNetwork() {\n return state.lastConnectedSIWECaipNetwork;\n }\n};\n// Export the controller wrapped with our error boundary\nexport const ChainController = withErrorBoundary(controller);\n//# sourceMappingURL=ChainController.js.map","import { proxy } from 'valtio/vanilla';\nimport { ConstantsUtil } from '../utils/ConstantsUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { FetchUtil } from '../utils/FetchUtil.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { AccountController } from './AccountController.js';\nimport { ChainController } from './ChainController.js';\nimport { OptionsController } from './OptionsController.js';\nimport { SnackController } from './SnackController.js';\nconst DEFAULT_OPTIONS = {\n purchaseCurrencies: [\n {\n id: '2b92315d-eab7-5bef-84fa-089a131333f5',\n name: 'USD Coin',\n symbol: 'USDC',\n networks: [\n {\n name: 'ethereum-mainnet',\n display_name: 'Ethereum',\n chain_id: '1',\n contract_address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n },\n {\n name: 'polygon-mainnet',\n display_name: 'Polygon',\n chain_id: '137',\n contract_address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'\n }\n ]\n },\n {\n id: '2b92315d-eab7-5bef-84fa-089a131333f5',\n name: 'Ether',\n symbol: 'ETH',\n networks: [\n {\n name: 'ethereum-mainnet',\n display_name: 'Ethereum',\n chain_id: '1',\n contract_address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n },\n {\n name: 'polygon-mainnet',\n display_name: 'Polygon',\n chain_id: '137',\n contract_address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'\n }\n ]\n }\n ],\n paymentCurrencies: [\n {\n id: 'USD',\n payment_method_limits: [\n {\n id: 'card',\n min: '10.00',\n max: '7500.00'\n },\n {\n id: 'ach_bank_account',\n min: '10.00',\n max: '25000.00'\n }\n ]\n },\n {\n id: 'EUR',\n payment_method_limits: [\n {\n id: 'card',\n min: '10.00',\n max: '7500.00'\n },\n {\n id: 'ach_bank_account',\n min: '10.00',\n max: '25000.00'\n }\n ]\n }\n ]\n};\n// -- Helpers ------------------------------------------- //\nconst baseUrl = CoreHelperUtil.getBlockchainApiUrl();\n// -- State --------------------------------------------- //\nconst state = proxy({\n clientId: null,\n api: new FetchUtil({ baseUrl, clientId: null }),\n supportedChains: { http: [], ws: [] }\n});\n// -- Controller ---------------------------------------- //\nexport const BlockchainApiController = {\n state,\n async get(request) {\n const { st, sv } = BlockchainApiController.getSdkProperties();\n const projectId = OptionsController.state.projectId;\n const params = {\n ...(request.params || {}),\n st,\n sv,\n projectId\n };\n return state.api.get({\n ...request,\n params\n });\n },\n getSdkProperties() {\n const { sdkType, sdkVersion } = OptionsController.state;\n return {\n st: sdkType || 'unknown',\n sv: sdkVersion || 'unknown'\n };\n },\n async isNetworkSupported(networkId) {\n if (!networkId) {\n return false;\n }\n try {\n if (!state.supportedChains.http.length) {\n await BlockchainApiController.getSupportedNetworks();\n }\n }\n catch (e) {\n return false;\n }\n return state.supportedChains.http.includes(networkId);\n },\n async getSupportedNetworks() {\n try {\n const supportedChains = await BlockchainApiController.get({\n path: 'v1/supported-chains'\n });\n state.supportedChains = supportedChains;\n return supportedChains;\n }\n catch {\n return state.supportedChains;\n }\n },\n async fetchIdentity({ address, caipNetworkId }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(caipNetworkId);\n if (!isSupported) {\n return { avatar: '', name: '' };\n }\n const identityCache = StorageUtil.getIdentityFromCacheForAddress(address);\n if (identityCache) {\n return identityCache;\n }\n const result = await BlockchainApiController.get({\n path: `/v1/identity/${address}`,\n params: {\n sender: ChainController.state.activeCaipAddress\n ? CoreHelperUtil.getPlainAddress(ChainController.state.activeCaipAddress)\n : undefined\n }\n });\n StorageUtil.updateIdentityCache({\n address,\n identity: result,\n timestamp: Date.now()\n });\n return result;\n },\n async fetchTransactions({ account, cursor, signal, cache, chainId }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { data: [], next: undefined };\n }\n const transactionsCache = StorageUtil.getTransactionsCacheForAddress({\n address: account,\n chainId\n });\n if (transactionsCache) {\n return transactionsCache;\n }\n const result = await BlockchainApiController.get({\n path: `/v1/account/${account}/history`,\n params: {\n cursor,\n chainId\n },\n signal,\n cache\n });\n StorageUtil.updateTransactionsCache({\n address: account,\n chainId,\n timestamp: Date.now(),\n transactions: result\n });\n return result;\n },\n async fetchSwapQuote({ amount, userAddress, from, to, gasPrice }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { quotes: [] };\n }\n return BlockchainApiController.get({\n path: `/v1/convert/quotes`,\n headers: {\n 'Content-Type': 'application/json'\n },\n params: {\n amount,\n userAddress,\n from,\n to,\n gasPrice\n }\n });\n },\n async fetchSwapTokens({ chainId }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { tokens: [] };\n }\n return BlockchainApiController.get({\n path: `/v1/convert/tokens`,\n params: { chainId }\n });\n },\n async fetchTokenPrice({ addresses }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { fungibles: [] };\n }\n const tokenPriceCache = StorageUtil.getTokenPriceCacheForAddresses(addresses);\n if (tokenPriceCache) {\n return tokenPriceCache;\n }\n const result = await state.api.post({\n path: '/v1/fungible/price',\n body: {\n currency: 'usd',\n addresses,\n projectId: OptionsController.state.projectId\n },\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n StorageUtil.updateTokenPriceCache({\n addresses,\n timestamp: Date.now(),\n tokenPrice: result\n });\n return result;\n },\n async fetchSwapAllowance({ tokenAddress, userAddress }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { allowance: '0' };\n }\n return BlockchainApiController.get({\n path: `/v1/convert/allowance`,\n params: {\n tokenAddress,\n userAddress\n },\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n },\n async fetchGasPrice({ chainId }) {\n const { st, sv } = BlockchainApiController.getSdkProperties();\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n throw new Error('Network not supported for Gas Price');\n }\n return BlockchainApiController.get({\n path: `/v1/convert/gas-price`,\n headers: {\n 'Content-Type': 'application/json'\n },\n params: {\n chainId,\n st,\n sv\n }\n });\n },\n async generateSwapCalldata({ amount, from, to, userAddress, disableEstimate }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n throw new Error('Network not supported for Swaps');\n }\n return state.api.post({\n path: '/v1/convert/build-transaction',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: {\n amount,\n eip155: {\n slippage: ConstantsUtil.CONVERT_SLIPPAGE_TOLERANCE\n },\n projectId: OptionsController.state.projectId,\n from,\n to,\n userAddress,\n disableEstimate\n }\n });\n },\n async generateApproveCalldata({ from, to, userAddress }) {\n const { st, sv } = BlockchainApiController.getSdkProperties();\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n throw new Error('Network not supported for Swaps');\n }\n return BlockchainApiController.get({\n path: `/v1/convert/build-approve`,\n headers: {\n 'Content-Type': 'application/json'\n },\n params: {\n userAddress,\n from,\n to,\n st,\n sv\n }\n });\n },\n async getBalance(address, chainId, forceUpdate) {\n const { st, sv } = BlockchainApiController.getSdkProperties();\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n SnackController.showError('Token Balance Unavailable');\n return { balances: [] };\n }\n const caipAddress = `${chainId}:${address}`;\n const cachedBalance = StorageUtil.getBalanceCacheForCaipAddress(caipAddress);\n if (cachedBalance) {\n return cachedBalance;\n }\n const balance = await BlockchainApiController.get({\n path: `/v1/account/${address}/balance`,\n params: {\n currency: 'usd',\n chainId,\n forceUpdate,\n st,\n sv\n }\n });\n StorageUtil.updateBalanceCache({\n caipAddress,\n balance,\n timestamp: Date.now()\n });\n return balance;\n },\n async lookupEnsName(name) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { addresses: {}, attributes: [] };\n }\n return BlockchainApiController.get({\n path: `/v1/profile/account/${name}`,\n params: { apiVersion: '2' }\n });\n },\n async reverseLookupEnsName({ address }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return [];\n }\n return BlockchainApiController.get({\n path: `/v1/profile/reverse/${address}`,\n params: {\n sender: AccountController.state.address,\n apiVersion: '2'\n }\n });\n },\n async getEnsNameSuggestions(name) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { suggestions: [] };\n }\n return BlockchainApiController.get({\n path: `/v1/profile/suggestions/${name}`,\n params: { zone: 'reown.id' }\n });\n },\n async registerEnsName({ coinType, address, message, signature }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { success: false };\n }\n return state.api.post({\n path: `/v1/profile/account`,\n body: { coin_type: coinType, address, message, signature },\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n },\n async generateOnRampURL({ destinationWallets, partnerUserId, defaultNetwork, purchaseAmount, paymentAmount }) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return '';\n }\n const response = await state.api.post({\n path: `/v1/generators/onrampurl`,\n params: {\n projectId: OptionsController.state.projectId\n },\n body: {\n destinationWallets,\n defaultNetwork,\n partnerUserId,\n defaultExperience: 'buy',\n presetCryptoAmount: purchaseAmount,\n presetFiatAmount: paymentAmount\n }\n });\n return response.url;\n },\n async getOnrampOptions() {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { paymentCurrencies: [], purchaseCurrencies: [] };\n }\n try {\n const response = await BlockchainApiController.get({\n path: `/v1/onramp/options`\n });\n return response;\n }\n catch (e) {\n return DEFAULT_OPTIONS;\n }\n },\n async getOnrampQuote({ purchaseCurrency, paymentCurrency, amount, network }) {\n try {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return null;\n }\n const response = await state.api.post({\n path: `/v1/onramp/quote`,\n params: {\n projectId: OptionsController.state.projectId\n },\n body: {\n purchaseCurrency,\n paymentCurrency,\n amount,\n network\n }\n });\n return response;\n }\n catch (e) {\n // Mocking response as 1:1 until endpoint is ready\n return {\n networkFee: { amount, currency: paymentCurrency.id },\n paymentSubtotal: { amount, currency: paymentCurrency.id },\n paymentTotal: { amount, currency: paymentCurrency.id },\n purchaseAmount: { amount, currency: paymentCurrency.id },\n quoteId: 'mocked-quote-id'\n };\n }\n },\n async getSmartSessions(caipAddress) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return [];\n }\n return BlockchainApiController.get({\n path: `/v1/sessions/${caipAddress}`\n });\n },\n async revokeSmartSession(address, pci, signature) {\n const isSupported = await BlockchainApiController.isNetworkSupported(ChainController.state.activeCaipNetwork?.caipNetworkId);\n if (!isSupported) {\n return { success: false };\n }\n return state.api.post({\n path: `/v1/sessions/${address}/revoke`,\n params: {\n projectId: OptionsController.state.projectId\n },\n body: {\n pci,\n signature\n }\n });\n },\n setClientId(clientId) {\n state.clientId = clientId;\n state.api = new FetchUtil({ baseUrl, clientId });\n }\n};\n//# sourceMappingURL=BlockchainApiController.js.map","export function isHex(value, { strict = true } = {}) {\n if (!value)\n return false;\n if (typeof value !== 'string')\n return false;\n return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');\n}\n//# sourceMappingURL=isHex.js.map","import { isHex } from './isHex.js';\n/**\n * @description Retrieves the size of the value (in bytes).\n *\n * @param value The value (hex or byte array) to retrieve the size of.\n * @returns The size of the value (in bytes).\n */\nexport function size(value) {\n if (isHex(value, { strict: false }))\n return Math.ceil((value.length - 2) / 2);\n return value.length;\n}\n//# sourceMappingURL=size.js.map","export const version = '2.37.12';\n//# sourceMappingURL=version.js.map","import { version } from './version.js';\nlet errorConfig = {\n getDocsUrl: ({ docsBaseUrl, docsPath = '', docsSlug, }) => docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${docsSlug ? `#${docsSlug}` : ''}`\n : undefined,\n version: `viem@${version}`,\n};\nexport function setErrorConfig(config) {\n errorConfig = config;\n}\nexport class BaseError extends Error {\n constructor(shortMessage, args = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.details;\n if (args.cause?.message)\n return args.cause.message;\n return args.details;\n })();\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath;\n return args.docsPath;\n })();\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath });\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n');\n super(message, args.cause ? { cause: args.cause } : undefined);\n Object.defineProperty(this, \"details\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"docsPath\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"metaMessages\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shortMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'BaseError'\n });\n this.details = details;\n this.docsPath = docsPath;\n this.metaMessages = args.metaMessages;\n this.name = args.name ?? this.name;\n this.shortMessage = shortMessage;\n this.version = version;\n }\n walk(fn) {\n return walk(this, fn);\n }\n}\nfunction walk(err, fn) {\n if (fn?.(err))\n return err;\n if (err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined)\n return walk(err.cause, fn);\n return fn ? null : err;\n}\n//# sourceMappingURL=base.js.map","import { BaseError } from './base.js';\nexport class SliceOffsetOutOfBoundsError extends BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \"${offset}\" is out-of-bounds (size: ${size}).`, { name: 'SliceOffsetOutOfBoundsError' });\n }\n}\nexport class SizeExceedsPaddingSizeError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (${size}) exceeds padding size (${targetSize}).`, { name: 'SizeExceedsPaddingSizeError' });\n }\n}\nexport class InvalidBytesLengthError extends BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} is expected to be ${targetSize} ${type} long, but is ${size} ${type} long.`, { name: 'InvalidBytesLengthError' });\n }\n}\n//# sourceMappingURL=data.js.map","import { SizeExceedsPaddingSizeError, } from '../../errors/data.js';\nexport function pad(hexOrBytes, { dir, size = 32 } = {}) {\n if (typeof hexOrBytes === 'string')\n return padHex(hexOrBytes, { dir, size });\n return padBytes(hexOrBytes, { dir, size });\n}\nexport function padHex(hex_, { dir, size = 32 } = {}) {\n if (size === null)\n return hex_;\n const hex = hex_.replace('0x', '');\n if (hex.length > size * 2)\n throw new SizeExceedsPaddingSizeError({\n size: Math.ceil(hex.length / 2),\n targetSize: size,\n type: 'hex',\n });\n return `0x${hex[dir === 'right' ? 'padEnd' : 'padStart'](size * 2, '0')}`;\n}\nexport function padBytes(bytes, { dir, size = 32 } = {}) {\n if (size === null)\n return bytes;\n if (bytes.length > size)\n throw new SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n//# sourceMappingURL=pad.js.map","import { BaseError } from './base.js';\nexport class IntegerOutOfRangeError extends BaseError {\n constructor({ max, min, signed, size, value, }) {\n super(`Number \"${value}\" is not in safe ${size ? `${size * 8}-bit ${signed ? 'signed' : 'unsigned'} ` : ''}integer range ${max ? `(${min} to ${max})` : `(above ${min})`}`, { name: 'IntegerOutOfRangeError' });\n }\n}\nexport class InvalidBytesBooleanError extends BaseError {\n constructor(bytes) {\n super(`Bytes value \"${bytes}\" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`, {\n name: 'InvalidBytesBooleanError',\n });\n }\n}\nexport class InvalidHexBooleanError extends BaseError {\n constructor(hex) {\n super(`Hex value \"${hex}\" is not a valid boolean. The hex value must be \"0x0\" (false) or \"0x1\" (true).`, { name: 'InvalidHexBooleanError' });\n }\n}\nexport class InvalidHexValueError extends BaseError {\n constructor(value) {\n super(`Hex value \"${value}\" is an odd length (${value.length}). It must be an even length.`, { name: 'InvalidHexValueError' });\n }\n}\nexport class SizeOverflowError extends BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed ${maxSize} bytes. Given size: ${givenSize} bytes.`, { name: 'SizeOverflowError' });\n }\n}\n//# sourceMappingURL=encoding.js.map","import { InvalidHexBooleanError, SizeOverflowError, } from '../../errors/encoding.js';\nimport { size as size_ } from '../data/size.js';\nimport { trim } from '../data/trim.js';\nimport { hexToBytes } from './toBytes.js';\nexport function assertSize(hexOrBytes, { size }) {\n if (size_(hexOrBytes) > size)\n throw new SizeOverflowError({\n givenSize: size_(hexOrBytes),\n maxSize: size,\n });\n}\n/**\n * Decodes a hex string into a string, number, bigint, boolean, or byte array.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex\n * - Example: https://viem.sh/docs/utilities/fromHex#usage\n *\n * @param hex Hex string to decode.\n * @param toOrOpts Type to convert to or options.\n * @returns Decoded value.\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x1a4', 'number')\n * // 420\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c6421', 'string')\n * // 'Hello world'\n *\n * @example\n * import { fromHex } from 'viem'\n * const data = fromHex('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * to: 'string'\n * })\n * // 'Hello world'\n */\nexport function fromHex(hex, toOrOpts) {\n const opts = typeof toOrOpts === 'string' ? { to: toOrOpts } : toOrOpts;\n const to = opts.to;\n if (to === 'number')\n return hexToNumber(hex, opts);\n if (to === 'bigint')\n return hexToBigInt(hex, opts);\n if (to === 'string')\n return hexToString(hex, opts);\n if (to === 'boolean')\n return hexToBool(hex, opts);\n return hexToBytes(hex, opts);\n}\n/**\n * Decodes a hex value into a bigint.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobigint\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns BigInt value.\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x1a4', { signed: true })\n * // 420n\n *\n * @example\n * import { hexToBigInt } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420n\n */\nexport function hexToBigInt(hex, opts = {}) {\n const { signed } = opts;\n if (opts.size)\n assertSize(hex, { size: opts.size });\n const value = BigInt(hex);\n if (!signed)\n return value;\n const size = (hex.length - 2) / 2;\n const max = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n if (value <= max)\n return value;\n return value - BigInt(`0x${'f'.padStart(size * 2, 'f')}`) - 1n;\n}\n/**\n * Decodes a hex value into a boolean.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextobool\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Boolean value.\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x01')\n * // true\n *\n * @example\n * import { hexToBool } from 'viem'\n * const data = hexToBool('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })\n * // true\n */\nexport function hexToBool(hex_, opts = {}) {\n let hex = hex_;\n if (opts.size) {\n assertSize(hex, { size: opts.size });\n hex = trim(hex);\n }\n if (trim(hex) === '0x00')\n return false;\n if (trim(hex) === '0x01')\n return true;\n throw new InvalidHexBooleanError(hex);\n}\n/**\n * Decodes a hex string into a number.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextonumber\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns Number value.\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToNumber('0x1a4')\n * // 420\n *\n * @example\n * import { hexToNumber } from 'viem'\n * const data = hexToBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })\n * // 420\n */\nexport function hexToNumber(hex, opts = {}) {\n return Number(hexToBigInt(hex, opts));\n}\n/**\n * Decodes a hex value into a UTF-8 string.\n *\n * - Docs: https://viem.sh/docs/utilities/fromHex#hextostring\n *\n * @param hex Hex value to decode.\n * @param opts Options.\n * @returns String value.\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c6421')\n * // 'Hello world!'\n *\n * @example\n * import { hexToString } from 'viem'\n * const data = hexToString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {\n * size: 32,\n * })\n * // 'Hello world'\n */\nexport function hexToString(hex, opts = {}) {\n let bytes = hexToBytes(hex);\n if (opts.size) {\n assertSize(bytes, { size: opts.size });\n bytes = trim(bytes, { dir: 'right' });\n }\n return new TextDecoder().decode(bytes);\n}\n//# sourceMappingURL=fromHex.js.map","import { IntegerOutOfRangeError, } from '../../errors/encoding.js';\nimport { pad } from '../data/pad.js';\nimport { assertSize } from './fromHex.js';\nconst hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'));\n/**\n * Encodes a string, number, bigint, or ByteArray into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex\n * - Example: https://viem.sh/docs/utilities/toHex#usage\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world')\n * // '0x48656c6c6f20776f726c6421'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex(420)\n * // '0x1a4'\n *\n * @example\n * import { toHex } from 'viem'\n * const data = toHex('Hello world', { size: 32 })\n * // '0x48656c6c6f20776f726c64210000000000000000000000000000000000000000'\n */\nexport function toHex(value, opts = {}) {\n if (typeof value === 'number' || typeof value === 'bigint')\n return numberToHex(value, opts);\n if (typeof value === 'string') {\n return stringToHex(value, opts);\n }\n if (typeof value === 'boolean')\n return boolToHex(value, opts);\n return bytesToHex(value, opts);\n}\n/**\n * Encodes a boolean into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#booltohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true)\n * // '0x1'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(false)\n * // '0x0'\n *\n * @example\n * import { boolToHex } from 'viem'\n * const data = boolToHex(true, { size: 32 })\n * // '0x0000000000000000000000000000000000000000000000000000000000000001'\n */\nexport function boolToHex(value, opts = {}) {\n const hex = `0x${Number(value)}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a bytes array into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#bytestohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { bytesToHex } from 'viem'\n * const data = bytesToHex(Uint8Array.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]), { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function bytesToHex(value, opts = {}) {\n let string = '';\n for (let i = 0; i < value.length; i++) {\n string += hexes[value[i]];\n }\n const hex = `0x${string}`;\n if (typeof opts.size === 'number') {\n assertSize(hex, { size: opts.size });\n return pad(hex, { dir: 'right', size: opts.size });\n }\n return hex;\n}\n/**\n * Encodes a number or bigint into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#numbertohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420)\n * // '0x1a4'\n *\n * @example\n * import { numberToHex } from 'viem'\n * const data = numberToHex(420, { size: 32 })\n * // '0x00000000000000000000000000000000000000000000000000000000000001a4'\n */\nexport function numberToHex(value_, opts = {}) {\n const { signed, size } = opts;\n const value = BigInt(value_);\n let maxValue;\n if (size) {\n if (signed)\n maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n;\n else\n maxValue = 2n ** (BigInt(size) * 8n) - 1n;\n }\n else if (typeof value_ === 'number') {\n maxValue = BigInt(Number.MAX_SAFE_INTEGER);\n }\n const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0;\n if ((maxValue && value > maxValue) || value < minValue) {\n const suffix = typeof value_ === 'bigint' ? 'n' : '';\n throw new IntegerOutOfRangeError({\n max: maxValue ? `${maxValue}${suffix}` : undefined,\n min: `${minValue}${suffix}`,\n signed,\n size,\n value: `${value_}${suffix}`,\n });\n }\n const hex = `0x${(signed && value < 0 ? (1n << BigInt(size * 8)) + BigInt(value) : value).toString(16)}`;\n if (size)\n return pad(hex, { size });\n return hex;\n}\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Encodes a UTF-8 string into a hex string\n *\n * - Docs: https://viem.sh/docs/utilities/toHex#stringtohex\n *\n * @param value Value to encode.\n * @param opts Options.\n * @returns Hex value.\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!')\n * // '0x48656c6c6f20576f726c6421'\n *\n * @example\n * import { stringToHex } from 'viem'\n * const data = stringToHex('Hello World!', { size: 32 })\n * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'\n */\nexport function stringToHex(value_, opts = {}) {\n const value = encoder.encode(value_);\n return bytesToHex(value, opts);\n}\n//# sourceMappingURL=toHex.js.map","/**\n * Map with a LRU (Least recently used) policy.\n *\n * @link https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n get(key) {\n const value = super.get(key);\n if (super.has(key) && value !== undefined) {\n this.delete(key);\n super.set(key, value);\n }\n return value;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value;\n if (firstKey)\n this.delete(firstKey);\n }\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","export const stringify = (value, replacer, space) => JSON.stringify(value, (key, value_) => {\n const value = typeof value_ === 'bigint' ? value_.toString() : value_;\n return typeof replacer === 'function' ? replacer(key, value) : value;\n}, space);\n//# sourceMappingURL=stringify.js.map","/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value, decimals) {\n let display = value.toString();\n const negative = display.startsWith('-');\n if (negative)\n display = display.slice(1);\n display = display.padStart(decimals, '0');\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ];\n fraction = fraction.replace(/(0+)$/, '');\n return `${negative ? '-' : ''}${integer || '0'}${fraction ? `.${fraction}` : ''}`;\n}\n//# sourceMappingURL=formatUnits.js.map","export const getContractAddress = (address) => address;\nexport const getUrl = (url) => url;\n//# sourceMappingURL=utils.js.map","import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class HttpRequestError extends BaseError {\n constructor({ body, cause, details, headers, status, url, }) {\n super('HTTP request failed.', {\n cause,\n details,\n metaMessages: [\n status && `Status: ${status}`,\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean),\n name: 'HttpRequestError',\n });\n Object.defineProperty(this, \"body\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"headers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"status\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"url\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.body = body;\n this.headers = headers;\n this.status = status;\n this.url = url;\n }\n}\nexport class WebSocketRequestError extends BaseError {\n constructor({ body, cause, details, url, }) {\n super('WebSocket request failed.', {\n cause,\n details,\n metaMessages: [\n `URL: ${getUrl(url)}`,\n body && `Request body: ${stringify(body)}`,\n ].filter(Boolean),\n name: 'WebSocketRequestError',\n });\n }\n}\nexport class RpcRequestError extends BaseError {\n constructor({ body, error, url, }) {\n super('RPC Request failed.', {\n cause: error,\n details: error.message,\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'RpcRequestError',\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.code = error.code;\n this.data = error.data;\n }\n}\nexport class SocketClosedError extends BaseError {\n constructor({ url, } = {}) {\n super('The socket has been closed.', {\n metaMessages: [url && `URL: ${getUrl(url)}`].filter(Boolean),\n name: 'SocketClosedError',\n });\n }\n}\nexport class TimeoutError extends BaseError {\n constructor({ body, url, }) {\n super('The request took too long to respond.', {\n details: 'The request timed out.',\n metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],\n name: 'TimeoutError',\n });\n }\n}\n//# sourceMappingURL=request.js.map","import { BaseError } from './base.js';\nimport { RpcRequestError } from './request.js';\nconst unknownErrorCode = -1;\nexport class RpcError extends BaseError {\n constructor(cause, { code, docsPath, metaMessages, name, shortMessage, }) {\n super(shortMessage, {\n cause,\n docsPath,\n metaMessages: metaMessages || cause?.metaMessages,\n name: name || 'RpcError',\n });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name || cause.name;\n this.code = (cause instanceof RpcRequestError ? cause.code : (code ?? unknownErrorCode));\n }\n}\nexport class ProviderRpcError extends RpcError {\n constructor(cause, options) {\n super(cause, options);\n Object.defineProperty(this, \"data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.data = options.data;\n }\n}\nexport class ParseRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ParseRpcError.code,\n name: 'ParseRpcError',\n shortMessage: 'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',\n });\n }\n}\nObject.defineProperty(ParseRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32700\n});\nexport class InvalidRequestRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidRequestRpcError.code,\n name: 'InvalidRequestRpcError',\n shortMessage: 'JSON is not a valid request object.',\n });\n }\n}\nObject.defineProperty(InvalidRequestRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32600\n});\nexport class MethodNotFoundRpcError extends RpcError {\n constructor(cause, { method } = {}) {\n super(cause, {\n code: MethodNotFoundRpcError.code,\n name: 'MethodNotFoundRpcError',\n shortMessage: `The method${method ? ` \"${method}\"` : ''} does not exist / is not available.`,\n });\n }\n}\nObject.defineProperty(MethodNotFoundRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32601\n});\nexport class InvalidParamsRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidParamsRpcError.code,\n name: 'InvalidParamsRpcError',\n shortMessage: [\n 'Invalid parameters were provided to the RPC method.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n });\n }\n}\nObject.defineProperty(InvalidParamsRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32602\n});\nexport class InternalRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InternalRpcError.code,\n name: 'InternalRpcError',\n shortMessage: 'An internal error was received.',\n });\n }\n}\nObject.defineProperty(InternalRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32603\n});\nexport class InvalidInputRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: InvalidInputRpcError.code,\n name: 'InvalidInputRpcError',\n shortMessage: [\n 'Missing or invalid parameters.',\n 'Double check you have provided the correct parameters.',\n ].join('\\n'),\n });\n }\n}\nObject.defineProperty(InvalidInputRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32000\n});\nexport class ResourceNotFoundRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ResourceNotFoundRpcError.code,\n name: 'ResourceNotFoundRpcError',\n shortMessage: 'Requested resource not found.',\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'ResourceNotFoundRpcError'\n });\n }\n}\nObject.defineProperty(ResourceNotFoundRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32001\n});\nexport class ResourceUnavailableRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: ResourceUnavailableRpcError.code,\n name: 'ResourceUnavailableRpcError',\n shortMessage: 'Requested resource not available.',\n });\n }\n}\nObject.defineProperty(ResourceUnavailableRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32002\n});\nexport class TransactionRejectedRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: TransactionRejectedRpcError.code,\n name: 'TransactionRejectedRpcError',\n shortMessage: 'Transaction creation failed.',\n });\n }\n}\nObject.defineProperty(TransactionRejectedRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32003\n});\nexport class MethodNotSupportedRpcError extends RpcError {\n constructor(cause, { method } = {}) {\n super(cause, {\n code: MethodNotSupportedRpcError.code,\n name: 'MethodNotSupportedRpcError',\n shortMessage: `Method${method ? ` \"${method}\"` : ''} is not supported.`,\n });\n }\n}\nObject.defineProperty(MethodNotSupportedRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32004\n});\nexport class LimitExceededRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: LimitExceededRpcError.code,\n name: 'LimitExceededRpcError',\n shortMessage: 'Request exceeds defined limit.',\n });\n }\n}\nObject.defineProperty(LimitExceededRpcError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32005\n});\nexport class JsonRpcVersionUnsupportedError extends RpcError {\n constructor(cause) {\n super(cause, {\n code: JsonRpcVersionUnsupportedError.code,\n name: 'JsonRpcVersionUnsupportedError',\n shortMessage: 'Version of JSON-RPC protocol is not supported.',\n });\n }\n}\nObject.defineProperty(JsonRpcVersionUnsupportedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -32006\n});\nexport class UserRejectedRequestError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UserRejectedRequestError.code,\n name: 'UserRejectedRequestError',\n shortMessage: 'User rejected the request.',\n });\n }\n}\nObject.defineProperty(UserRejectedRequestError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4001\n});\nexport class UnauthorizedProviderError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnauthorizedProviderError.code,\n name: 'UnauthorizedProviderError',\n shortMessage: 'The requested method and/or account has not been authorized by the user.',\n });\n }\n}\nObject.defineProperty(UnauthorizedProviderError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4100\n});\nexport class UnsupportedProviderMethodError extends ProviderRpcError {\n constructor(cause, { method } = {}) {\n super(cause, {\n code: UnsupportedProviderMethodError.code,\n name: 'UnsupportedProviderMethodError',\n shortMessage: `The Provider does not support the requested method${method ? ` \" ${method}\"` : ''}.`,\n });\n }\n}\nObject.defineProperty(UnsupportedProviderMethodError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4200\n});\nexport class ProviderDisconnectedError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: ProviderDisconnectedError.code,\n name: 'ProviderDisconnectedError',\n shortMessage: 'The Provider is disconnected from all chains.',\n });\n }\n}\nObject.defineProperty(ProviderDisconnectedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4900\n});\nexport class ChainDisconnectedError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: ChainDisconnectedError.code,\n name: 'ChainDisconnectedError',\n shortMessage: 'The Provider is not connected to the requested chain.',\n });\n }\n}\nObject.defineProperty(ChainDisconnectedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4901\n});\nexport class SwitchChainError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: SwitchChainError.code,\n name: 'SwitchChainError',\n shortMessage: 'An error occurred when attempting to switch chain.',\n });\n }\n}\nObject.defineProperty(SwitchChainError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 4902\n});\nexport class UnsupportedNonOptionalCapabilityError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnsupportedNonOptionalCapabilityError.code,\n name: 'UnsupportedNonOptionalCapabilityError',\n shortMessage: 'This Wallet does not support a capability that was not marked as optional.',\n });\n }\n}\nObject.defineProperty(UnsupportedNonOptionalCapabilityError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5700\n});\nexport class UnsupportedChainIdError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnsupportedChainIdError.code,\n name: 'UnsupportedChainIdError',\n shortMessage: 'This Wallet does not support the requested chain ID.',\n });\n }\n}\nObject.defineProperty(UnsupportedChainIdError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5710\n});\nexport class DuplicateIdError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: DuplicateIdError.code,\n name: 'DuplicateIdError',\n shortMessage: 'There is already a bundle submitted with this ID.',\n });\n }\n}\nObject.defineProperty(DuplicateIdError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5720\n});\nexport class UnknownBundleIdError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: UnknownBundleIdError.code,\n name: 'UnknownBundleIdError',\n shortMessage: 'This bundle id is unknown / has not been submitted',\n });\n }\n}\nObject.defineProperty(UnknownBundleIdError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5730\n});\nexport class BundleTooLargeError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: BundleTooLargeError.code,\n name: 'BundleTooLargeError',\n shortMessage: 'The call bundle is too large for the Wallet to process.',\n });\n }\n}\nObject.defineProperty(BundleTooLargeError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5740\n});\nexport class AtomicReadyWalletRejectedUpgradeError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: AtomicReadyWalletRejectedUpgradeError.code,\n name: 'AtomicReadyWalletRejectedUpgradeError',\n shortMessage: 'The Wallet can support atomicity after an upgrade, but the user rejected the upgrade.',\n });\n }\n}\nObject.defineProperty(AtomicReadyWalletRejectedUpgradeError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5750\n});\nexport class AtomicityNotSupportedError extends ProviderRpcError {\n constructor(cause) {\n super(cause, {\n code: AtomicityNotSupportedError.code,\n name: 'AtomicityNotSupportedError',\n shortMessage: 'The wallet does not support atomic execution but the request requires it.',\n });\n }\n}\nObject.defineProperty(AtomicityNotSupportedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 5760\n});\nexport class UnknownRpcError extends RpcError {\n constructor(cause) {\n super(cause, {\n name: 'UnknownRpcError',\n shortMessage: 'An unknown RPC error occurred.',\n });\n }\n}\n//# sourceMappingURL=rpc.js.map","import { formatGwei } from '../utils/unit/formatGwei.js';\nimport { BaseError } from './base.js';\nexport class ExecutionRevertedError extends BaseError {\n constructor({ cause, message, } = {}) {\n const reason = message\n ?.replace('execution reverted: ', '')\n ?.replace('execution reverted', '');\n super(`Execution reverted ${reason ? `with reason: ${reason}` : 'for an unknown reason'}.`, {\n cause,\n name: 'ExecutionRevertedError',\n });\n }\n}\nObject.defineProperty(ExecutionRevertedError, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 3\n});\nObject.defineProperty(ExecutionRevertedError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /execution reverted/\n});\nexport class FeeCapTooHighError extends BaseError {\n constructor({ cause, maxFeePerGas, } = {}) {\n super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}) cannot be higher than the maximum allowed value (2^256-1).`, {\n cause,\n name: 'FeeCapTooHighError',\n });\n }\n}\nObject.defineProperty(FeeCapTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max fee per gas higher than 2\\^256-1|fee cap higher than 2\\^256-1/\n});\nexport class FeeCapTooLowError extends BaseError {\n constructor({ cause, maxFeePerGas, } = {}) {\n super(`The fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)}` : ''} gwei) cannot be lower than the block base fee.`, {\n cause,\n name: 'FeeCapTooLowError',\n });\n }\n}\nObject.defineProperty(FeeCapTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/\n});\nexport class NonceTooHighError extends BaseError {\n constructor({ cause, nonce, } = {}) {\n super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is higher than the next one expected.`, { cause, name: 'NonceTooHighError' });\n }\n}\nObject.defineProperty(NonceTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce too high/\n});\nexport class NonceTooLowError extends BaseError {\n constructor({ cause, nonce, } = {}) {\n super([\n `Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}is lower than the current nonce of the account.`,\n 'Try increasing the nonce or find the latest nonce with `getTransactionCount`.',\n ].join('\\n'), { cause, name: 'NonceTooLowError' });\n }\n}\nObject.defineProperty(NonceTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce too low|transaction already imported|already known/\n});\nexport class NonceMaxValueError extends BaseError {\n constructor({ cause, nonce, } = {}) {\n super(`Nonce provided for the transaction ${nonce ? `(${nonce}) ` : ''}exceeds the maximum allowed nonce.`, { cause, name: 'NonceMaxValueError' });\n }\n}\nObject.defineProperty(NonceMaxValueError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /nonce has max value/\n});\nexport class InsufficientFundsError extends BaseError {\n constructor({ cause } = {}) {\n super([\n 'The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.',\n ].join('\\n'), {\n cause,\n metaMessages: [\n 'This error could arise when the account does not have enough funds to:',\n ' - pay for the total gas fee,',\n ' - pay for the value to send.',\n ' ',\n 'The cost of the transaction is calculated as `gas * gas fee + value`, where:',\n ' - `gas` is the amount of gas needed for transaction to execute,',\n ' - `gas fee` is the gas fee,',\n ' - `value` is the amount of ether to send to the recipient.',\n ],\n name: 'InsufficientFundsError',\n });\n }\n}\nObject.defineProperty(InsufficientFundsError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /insufficient funds|exceeds transaction sender account balance/\n});\nexport class IntrinsicGasTooHighError extends BaseError {\n constructor({ cause, gas, } = {}) {\n super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction exceeds the limit allowed for the block.`, {\n cause,\n name: 'IntrinsicGasTooHighError',\n });\n }\n}\nObject.defineProperty(IntrinsicGasTooHighError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /intrinsic gas too high|gas limit reached/\n});\nexport class IntrinsicGasTooLowError extends BaseError {\n constructor({ cause, gas, } = {}) {\n super(`The amount of gas ${gas ? `(${gas}) ` : ''}provided for the transaction is too low.`, {\n cause,\n name: 'IntrinsicGasTooLowError',\n });\n }\n}\nObject.defineProperty(IntrinsicGasTooLowError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /intrinsic gas too low/\n});\nexport class TransactionTypeNotSupportedError extends BaseError {\n constructor({ cause }) {\n super('The transaction type is not supported for this chain.', {\n cause,\n name: 'TransactionTypeNotSupportedError',\n });\n }\n}\nObject.defineProperty(TransactionTypeNotSupportedError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /transaction type not valid/\n});\nexport class TipAboveFeeCapError extends BaseError {\n constructor({ cause, maxPriorityFeePerGas, maxFeePerGas, } = {}) {\n super([\n `The provided tip (\\`maxPriorityFeePerGas\\`${maxPriorityFeePerGas\n ? ` = ${formatGwei(maxPriorityFeePerGas)} gwei`\n : ''}) cannot be higher than the fee cap (\\`maxFeePerGas\\`${maxFeePerGas ? ` = ${formatGwei(maxFeePerGas)} gwei` : ''}).`,\n ].join('\\n'), {\n cause,\n name: 'TipAboveFeeCapError',\n });\n }\n}\nObject.defineProperty(TipAboveFeeCapError, \"nodeMessage\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: /max priority fee per gas higher than max fee per gas|tip higher than fee cap/\n});\nexport class UnknownNodeError extends BaseError {\n constructor({ cause }) {\n super(`An error occurred while executing: ${cause?.shortMessage}`, {\n cause,\n name: 'UnknownNodeError',\n });\n }\n}\n//# sourceMappingURL=node.js.map","/** @internal */\nexport function withResolvers() {\n let resolve = () => undefined;\n let reject = () => undefined;\n const promise = new Promise((resolve_, reject_) => {\n resolve = resolve_;\n reject = reject_;\n });\n return { promise, resolve, reject };\n}\n//# sourceMappingURL=withResolvers.js.map","import { withResolvers } from './withResolvers.js';\nconst schedulerCache = /*#__PURE__*/ new Map();\n/** @internal */\nexport function createBatchScheduler({ fn, id, shouldSplitBatch, wait = 0, sort, }) {\n const exec = async () => {\n const scheduler = getScheduler();\n flush();\n const args = scheduler.map(({ args }) => args);\n if (args.length === 0)\n return;\n fn(args)\n .then((data) => {\n if (sort && Array.isArray(data))\n data.sort(sort);\n for (let i = 0; i < scheduler.length; i++) {\n const { resolve } = scheduler[i];\n resolve?.([data[i], data]);\n }\n })\n .catch((err) => {\n for (let i = 0; i < scheduler.length; i++) {\n const { reject } = scheduler[i];\n reject?.(err);\n }\n });\n };\n const flush = () => schedulerCache.delete(id);\n const getBatchedArgs = () => getScheduler().map(({ args }) => args);\n const getScheduler = () => schedulerCache.get(id) || [];\n const setScheduler = (item) => schedulerCache.set(id, [...getScheduler(), item]);\n return {\n flush,\n async schedule(args) {\n const { promise, resolve, reject } = withResolvers();\n const split = shouldSplitBatch?.([...getBatchedArgs(), args]);\n if (split)\n exec();\n const hasActiveScheduler = getScheduler().length > 0;\n if (hasActiveScheduler) {\n setScheduler({ args, resolve, reject });\n return promise;\n }\n setScheduler({ args, resolve, reject });\n setTimeout(exec, wait);\n return promise;\n },\n };\n}\n//# sourceMappingURL=createBatchScheduler.js.map","export async function wait(time) {\n return new Promise((res) => setTimeout(res, time));\n}\n//# sourceMappingURL=wait.js.map","import { wait } from '../wait.js';\nexport function withRetry(fn, { delay: delay_ = 100, retryCount = 2, shouldRetry = () => true, } = {}) {\n return new Promise((resolve, reject) => {\n const attemptRetry = async ({ count = 0 } = {}) => {\n const retry = async ({ error }) => {\n const delay = typeof delay_ === 'function' ? delay_({ count, error }) : delay_;\n if (delay)\n await wait(delay);\n attemptRetry({ count: count + 1 });\n };\n try {\n const data = await fn();\n resolve(data);\n }\n catch (err) {\n if (count < retryCount &&\n (await shouldRetry({ count, error: err })))\n return retry({ error: err });\n reject(err);\n }\n };\n attemptRetry();\n });\n}\n//# sourceMappingURL=withRetry.js.map","const size = 256;\nlet index = size;\nlet buffer;\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = '';\n index = 0;\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1);\n }\n }\n return buffer.substring(index, index++ + length);\n}\n//# sourceMappingURL=uid.js.map","import { LruMap } from '../lru.js';\n/** @internal */\nexport const promiseCache = /*#__PURE__*/ new LruMap(8192);\n/** Deduplicates in-flight promises. */\nexport function withDedupe(fn, { enabled = true, id }) {\n if (!enabled || !id)\n return fn();\n if (promiseCache.get(id))\n return promiseCache.get(id);\n const promise = fn().finally(() => promiseCache.delete(id));\n promiseCache.set(id, promise);\n return promise;\n}\n//# sourceMappingURL=withDedupe.js.map","import { BaseError } from '../errors/base.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { AtomicityNotSupportedError, AtomicReadyWalletRejectedUpgradeError, BundleTooLargeError, ChainDisconnectedError, DuplicateIdError, InternalRpcError, InvalidInputRpcError, InvalidParamsRpcError, InvalidRequestRpcError, JsonRpcVersionUnsupportedError, LimitExceededRpcError, MethodNotFoundRpcError, MethodNotSupportedRpcError, ParseRpcError, ProviderDisconnectedError, ResourceNotFoundRpcError, ResourceUnavailableRpcError, SwitchChainError, TransactionRejectedRpcError, UnauthorizedProviderError, UnknownBundleIdError, UnknownRpcError, UnsupportedChainIdError, UnsupportedNonOptionalCapabilityError, UnsupportedProviderMethodError, UserRejectedRequestError, } from '../errors/rpc.js';\nimport { stringToHex } from './encoding/toHex.js';\nimport { withDedupe } from './promise/withDedupe.js';\nimport { withRetry } from './promise/withRetry.js';\nimport { stringify } from './stringify.js';\nexport function buildRequest(request, options = {}) {\n return async (args, overrideOptions = {}) => {\n const { dedupe = false, methods, retryDelay = 150, retryCount = 3, uid, } = {\n ...options,\n ...overrideOptions,\n };\n const { method } = args;\n if (methods?.exclude?.includes(method))\n throw new MethodNotSupportedRpcError(new Error('method not supported'), {\n method,\n });\n if (methods?.include && !methods.include.includes(method))\n throw new MethodNotSupportedRpcError(new Error('method not supported'), {\n method,\n });\n const requestId = dedupe\n ? stringToHex(`${uid}.${stringify(args)}`)\n : undefined;\n return withDedupe(() => withRetry(async () => {\n try {\n return await request(args);\n }\n catch (err_) {\n const err = err_;\n switch (err.code) {\n // -32700\n case ParseRpcError.code:\n throw new ParseRpcError(err);\n // -32600\n case InvalidRequestRpcError.code:\n throw new InvalidRequestRpcError(err);\n // -32601\n case MethodNotFoundRpcError.code:\n throw new MethodNotFoundRpcError(err, { method: args.method });\n // -32602\n case InvalidParamsRpcError.code:\n throw new InvalidParamsRpcError(err);\n // -32603\n case InternalRpcError.code:\n throw new InternalRpcError(err);\n // -32000\n case InvalidInputRpcError.code:\n throw new InvalidInputRpcError(err);\n // -32001\n case ResourceNotFoundRpcError.code:\n throw new ResourceNotFoundRpcError(err);\n // -32002\n case ResourceUnavailableRpcError.code:\n throw new ResourceUnavailableRpcError(err);\n // -32003\n case TransactionRejectedRpcError.code:\n throw new TransactionRejectedRpcError(err);\n // -32004\n case MethodNotSupportedRpcError.code:\n throw new MethodNotSupportedRpcError(err, {\n method: args.method,\n });\n // -32005\n case LimitExceededRpcError.code:\n throw new LimitExceededRpcError(err);\n // -32006\n case JsonRpcVersionUnsupportedError.code:\n throw new JsonRpcVersionUnsupportedError(err);\n // 4001\n case UserRejectedRequestError.code:\n throw new UserRejectedRequestError(err);\n // 4100\n case UnauthorizedProviderError.code:\n throw new UnauthorizedProviderError(err);\n // 4200\n case UnsupportedProviderMethodError.code:\n throw new UnsupportedProviderMethodError(err);\n // 4900\n case ProviderDisconnectedError.code:\n throw new ProviderDisconnectedError(err);\n // 4901\n case ChainDisconnectedError.code:\n throw new ChainDisconnectedError(err);\n // 4902\n case SwitchChainError.code:\n throw new SwitchChainError(err);\n // 5700\n case UnsupportedNonOptionalCapabilityError.code:\n throw new UnsupportedNonOptionalCapabilityError(err);\n // 5710\n case UnsupportedChainIdError.code:\n throw new UnsupportedChainIdError(err);\n // 5720\n case DuplicateIdError.code:\n throw new DuplicateIdError(err);\n // 5730\n case UnknownBundleIdError.code:\n throw new UnknownBundleIdError(err);\n // 5740\n case BundleTooLargeError.code:\n throw new BundleTooLargeError(err);\n // 5750\n case AtomicReadyWalletRejectedUpgradeError.code:\n throw new AtomicReadyWalletRejectedUpgradeError(err);\n // 5760\n case AtomicityNotSupportedError.code:\n throw new AtomicityNotSupportedError(err);\n // CAIP-25: User Rejected Error\n // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25\n case 5000:\n throw new UserRejectedRequestError(err);\n default:\n if (err_ instanceof BaseError)\n throw err_;\n throw new UnknownRpcError(err);\n }\n }\n }, {\n delay: ({ count, error }) => {\n // If we find a Retry-After header, let's retry after the given time.\n if (error && error instanceof HttpRequestError) {\n const retryAfter = error?.headers?.get('Retry-After');\n if (retryAfter?.match(/\\d/))\n return Number.parseInt(retryAfter, 10) * 1000;\n }\n // Otherwise, let's retry with an exponential backoff.\n return ~~(1 << count) * retryDelay;\n },\n retryCount,\n shouldRetry: ({ error }) => shouldRetry(error),\n }), { enabled: dedupe, id: requestId });\n };\n}\n/** @internal */\nexport function shouldRetry(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === -1)\n return true; // Unknown error\n if (error.code === LimitExceededRpcError.code)\n return true;\n if (error.code === InternalRpcError.code)\n return true;\n return false;\n }\n if (error instanceof HttpRequestError && error.status) {\n // Forbidden\n if (error.status === 403)\n return true;\n // Request Timeout\n if (error.status === 408)\n return true;\n // Request Entity Too Large\n if (error.status === 413)\n return true;\n // Too Many Requests\n if (error.status === 429)\n return true;\n // Internal Server Error\n if (error.status === 500)\n return true;\n // Bad Gateway\n if (error.status === 502)\n return true;\n // Service Unavailable\n if (error.status === 503)\n return true;\n // Gateway Timeout\n if (error.status === 504)\n return true;\n return false;\n }\n return true;\n}\n//# sourceMappingURL=buildRequest.js.map","export function withTimeout(fn, { errorInstance = new Error('timed out'), timeout, signal, }) {\n return new Promise((resolve, reject) => {\n ;\n (async () => {\n let timeoutId;\n try {\n const controller = new AbortController();\n if (timeout > 0) {\n timeoutId = setTimeout(() => {\n if (signal) {\n controller.abort();\n }\n else {\n reject(errorInstance);\n }\n }, timeout); // need to cast because bun globals.d.ts overrides @types/node\n }\n resolve(await fn({ signal: controller?.signal || null }));\n }\n catch (err) {\n if (err?.name === 'AbortError')\n reject(errorInstance);\n reject(err);\n }\n finally {\n clearTimeout(timeoutId);\n }\n })();\n });\n}\n//# sourceMappingURL=withTimeout.js.map","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++;\n },\n reset() {\n this.current = 0;\n },\n };\n}\nexport const idCache = /*#__PURE__*/ createIdStore();\n//# sourceMappingURL=id.js.map","import { HttpRequestError, TimeoutError, } from '../../errors/request.js';\nimport { withTimeout, } from '../promise/withTimeout.js';\nimport { stringify } from '../stringify.js';\nimport { idCache } from './id.js';\nexport function getHttpRpcClient(url, options = {}) {\n return {\n async request(params) {\n const { body, fetchFn = options.fetchFn ?? fetch, onRequest = options.onRequest, onResponse = options.onResponse, timeout = options.timeout ?? 10_000, } = params;\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n };\n const { headers, method, signal: signal_ } = fetchOptions;\n try {\n const response = await withTimeout(async ({ signal }) => {\n const init = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })))\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n };\n const request = new Request(url, init);\n const args = (await onRequest?.(request, init)) ?? { ...init, url };\n const response = await fetchFn(args.url ?? url, args);\n return response;\n }, {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n });\n if (onResponse)\n await onResponse(response);\n let data;\n if (response.headers.get('Content-Type')?.startsWith('application/json'))\n data = await response.json();\n else {\n data = await response.text();\n try {\n data = JSON.parse(data || '{}');\n }\n catch (err) {\n if (response.ok)\n throw err;\n data = { error: data };\n }\n }\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n }\n return data;\n }\n catch (err) {\n if (err instanceof HttpRequestError)\n throw err;\n if (err instanceof TimeoutError)\n throw err;\n throw new HttpRequestError({\n body,\n cause: err,\n url,\n });\n }\n },\n };\n}\n//# sourceMappingURL=http.js.map","import { buildRequest } from '../../utils/buildRequest.js';\nimport { uid as uid_ } from '../../utils/uid.js';\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport({ key, methods, name, request, retryCount = 3, retryDelay = 150, timeout, type, }, value) {\n const uid = uid_();\n return {\n config: {\n key,\n methods,\n name,\n request,\n retryCount,\n retryDelay,\n timeout,\n type,\n },\n request: buildRequest(request, { methods, retryCount, retryDelay, uid }),\n value,\n };\n}\n//# sourceMappingURL=createTransport.js.map","import { ExecutionRevertedError } from '../../errors/node.js';\nimport { TransactionRejectedRpcError, UserRejectedRequestError, } from '../../errors/rpc.js';\nimport { wait } from '../../utils/wait.js';\nimport { createTransport, } from './createTransport.js';\nexport function fallback(transports_, config = {}) {\n const { key = 'fallback', name = 'Fallback', rank = false, shouldThrow: shouldThrow_ = shouldThrow, retryCount, retryDelay, } = config;\n return (({ chain, pollingInterval = 4_000, timeout, ...rest }) => {\n let transports = transports_;\n let onResponse = () => { };\n const transport = createTransport({\n key,\n name,\n async request({ method, params }) {\n let includes;\n const fetch = async (i = 0) => {\n const transport = transports[i]({\n ...rest,\n chain,\n retryCount: 0,\n timeout,\n });\n try {\n const response = await transport.request({\n method,\n params,\n });\n onResponse({\n method,\n params: params,\n response,\n transport,\n status: 'success',\n });\n return response;\n }\n catch (err) {\n onResponse({\n error: err,\n method,\n params: params,\n transport,\n status: 'error',\n });\n if (shouldThrow_(err))\n throw err;\n // If we've reached the end of the fallbacks, throw the error.\n if (i === transports.length - 1)\n throw err;\n // Check if at least one other transport includes the method\n includes ??= transports.slice(i + 1).some((transport) => {\n const { include, exclude } = transport({ chain }).config.methods || {};\n if (include)\n return include.includes(method);\n if (exclude)\n return !exclude.includes(method);\n return true;\n });\n if (!includes)\n throw err;\n // Otherwise, try the next fallback.\n return fetch(i + 1);\n }\n };\n return fetch();\n },\n retryCount,\n retryDelay,\n type: 'fallback',\n }, {\n onResponse: (fn) => (onResponse = fn),\n transports: transports.map((fn) => fn({ chain, retryCount: 0 })),\n });\n if (rank) {\n const rankOptions = (typeof rank === 'object' ? rank : {});\n rankTransports({\n chain,\n interval: rankOptions.interval ?? pollingInterval,\n onTransports: (transports_) => (transports = transports_),\n ping: rankOptions.ping,\n sampleCount: rankOptions.sampleCount,\n timeout: rankOptions.timeout,\n transports,\n weights: rankOptions.weights,\n });\n }\n return transport;\n });\n}\nexport function shouldThrow(error) {\n if ('code' in error && typeof error.code === 'number') {\n if (error.code === TransactionRejectedRpcError.code ||\n error.code === UserRejectedRequestError.code ||\n ExecutionRevertedError.nodeMessage.test(error.message) ||\n error.code === 5000 // CAIP UserRejectedRequestError\n )\n return true;\n }\n return false;\n}\n/** @internal */\nexport function rankTransports({ chain, interval = 4_000, onTransports, ping, sampleCount = 10, timeout = 1_000, transports, weights = {}, }) {\n const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;\n const samples = [];\n const rankTransports_ = async () => {\n // 1. Take a sample from each Transport.\n const sample = await Promise.all(transports.map(async (transport) => {\n const transport_ = transport({ chain, retryCount: 0, timeout });\n const start = Date.now();\n let end;\n let success;\n try {\n await (ping\n ? ping({ transport: transport_ })\n : transport_.request({ method: 'net_listening' }));\n success = 1;\n }\n catch {\n success = 0;\n }\n finally {\n end = Date.now();\n }\n const latency = end - start;\n return { latency, success };\n }));\n // 2. Store the sample. If we have more than `sampleCount` samples, remove\n // the oldest sample.\n samples.push(sample);\n if (samples.length > sampleCount)\n samples.shift();\n // 3. Calculate the max latency from samples.\n const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));\n // 4. Calculate the score for each Transport.\n const scores = transports\n .map((_, i) => {\n const latencies = samples.map((sample) => sample[i].latency);\n const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /\n latencies.length;\n const latencyScore = 1 - meanLatency / maxLatency;\n const successes = samples.map((sample) => sample[i].success);\n const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /\n successes.length;\n if (stabilityScore === 0)\n return [0, i];\n return [\n latencyWeight * latencyScore + stabilityWeight * stabilityScore,\n i,\n ];\n })\n .sort((a, b) => b[0] - a[0]);\n // 5. Sort the Transports by score.\n onTransports(scores.map(([, i]) => transports[i]));\n // 6. Wait, and then rank again.\n await wait(interval);\n rankTransports_();\n };\n rankTransports_();\n}\n//# sourceMappingURL=fallback.js.map","import { BaseError } from './base.js';\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super('No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.', {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n });\n }\n}\n//# sourceMappingURL=transport.js.map","import { RpcRequestError } from '../../errors/request.js';\nimport { UrlRequiredError, } from '../../errors/transport.js';\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js';\nimport { getHttpRpcClient, } from '../../utils/rpc/http.js';\nimport { createTransport, } from './createTransport.js';\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n/** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\nurl, config = {}) {\n const { batch, fetchFn, fetchOptions, key = 'http', methods, name = 'HTTP JSON-RPC', onFetchRequest, onFetchResponse, retryDelay, raw, } = config;\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } = typeof batch === 'object' ? batch : {};\n const retryCount = config.retryCount ?? retryCount_;\n const timeout = timeout_ ?? config.timeout ?? 10_000;\n const url_ = url || chain?.rpcUrls.default.http[0];\n if (!url_)\n throw new UrlRequiredError();\n const rpcClient = getHttpRpcClient(url_, {\n fetchFn,\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n });\n return createTransport({\n key,\n methods,\n name,\n async request({ method, params }) {\n const body = { method, params };\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize;\n },\n fn: (body) => rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n });\n const fn = async (body) => batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ];\n const [{ error, result }] = await fn(body);\n if (raw)\n return { error, result };\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n });\n return result;\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n }, {\n fetchOptions,\n url: url_,\n });\n };\n}\n//# sourceMappingURL=http.js.map","import { formatUnits } from 'viem';\nexport const ERC7811Utils = {\n /**\n * Creates a Balance object from an ERC7811 Asset object\n * @param asset - Asset object to convert\n * @param chainId - Chain ID in CAIP-2 format\n * @returns Balance object\n */\n createBalance(asset, chainId) {\n const metadata = {\n name: (asset.metadata['name'] || ''),\n symbol: (asset.metadata['symbol'] || ''),\n decimals: (asset.metadata['decimals'] || 0),\n value: (asset.metadata['value'] || 0),\n price: (asset.metadata['price'] || 0),\n iconUrl: (asset.metadata['iconUrl'] || '')\n };\n return {\n name: metadata.name,\n symbol: metadata.symbol,\n chainId,\n address: asset.address === 'native'\n ? undefined\n : this.convertAddressToCAIP10Address(asset.address, chainId),\n value: metadata.value,\n price: metadata.price,\n quantity: {\n decimals: metadata.decimals.toString(),\n numeric: this.convertHexToBalance({\n hex: asset.balance,\n decimals: metadata.decimals\n })\n },\n iconUrl: metadata.iconUrl\n };\n },\n /**\n * Converts a hex string to a Balance object\n * @param hex - Hex string to convert\n * @param decimals - Number of decimals to use\n * @returns Balance object\n */\n convertHexToBalance({ hex, decimals }) {\n return formatUnits(BigInt(hex), decimals);\n },\n /**\n * Converts an address to a CAIP-10 address\n * @param address - Address to convert\n * @param chainId - Chain ID in CAIP-2 format\n * @returns CAIP-10 address\n */\n convertAddressToCAIP10Address(address, chainId) {\n return `${chainId}:${address}`;\n },\n /**\n * Creates a CAIP-2 Chain ID from a chain ID and namespace\n * @param chainId - Chain ID in hex format\n * @param namespace - Chain namespace\n * @returns\n */\n createCAIP2ChainId(chainId, namespace) {\n return `${namespace}:${parseInt(chainId, 16)}`;\n },\n /**\n * Gets the chain ID in hex format from a CAIP-2 Chain ID\n * @param caip2ChainId - CAIP-2 Chain ID\n * @returns Chain ID in hex format\n */\n getChainIdHexFromCAIP2ChainId(caip2ChainId) {\n const parts = caip2ChainId.split(':');\n if (parts.length < 2 || !parts[1]) {\n return '0x0';\n }\n const chainPart = parts[1];\n const parsed = parseInt(chainPart, 10);\n return isNaN(parsed) ? '0x0' : `0x${parsed.toString(16)}`;\n },\n /**\n * Checks if a response is a valid WalletGetAssetsResponse\n * @param response - The response to check\n * @returns True if the response is a valid WalletGetAssetsResponse, false otherwise\n */\n isWalletGetAssetsResponse(response) {\n // Check if response is an object and has the expected structure\n if (typeof response !== 'object' || response === null) {\n return false;\n }\n // Check if all values are arrays and conform to the expected asset structure\n return Object.values(response).every(value => Array.isArray(value) && value.every(asset => this.isValidAsset(asset)));\n },\n /**\n * Checks if an asset object is valid.\n * @param asset - The asset object to check.\n * @returns True if the asset is valid, false otherwise.\n */\n isValidAsset(asset) {\n return (typeof asset === 'object' &&\n asset !== null &&\n typeof asset.address === 'string' &&\n typeof asset.balance === 'string' &&\n (asset.type === 'ERC20' || asset.type === 'NATIVE') &&\n typeof asset.metadata === 'object' &&\n asset.metadata !== null &&\n typeof asset.metadata['name'] === 'string' &&\n typeof asset.metadata['symbol'] === 'string' &&\n typeof asset.metadata['decimals'] === 'number' &&\n typeof asset.metadata['price'] === 'number' &&\n typeof asset.metadata['iconUrl'] === 'string');\n }\n};\n//# sourceMappingURL=ERC7811Util.js.map","import { ConstantsUtil } from '@reown/appkit-common';\nimport { AccountController } from '../controllers/AccountController.js';\nimport { BlockchainApiController } from '../controllers/BlockchainApiController.js';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectionController } from '../controllers/ConnectionController.js';\nimport { ConnectorController } from '../controllers/ConnectorController.js';\nimport { ERC7811Utils } from './ERC7811Util.js';\nimport { StorageUtil } from './StorageUtil.js';\n// -- Controller ---------------------------------------- //\nexport const BalanceUtil = {\n /**\n * Get the balances of the user's tokens. If user connected with Auth provider or and on the EIP155 network,\n * it'll use the `wallet_getAssets` and `wallet_getCapabilities` calls to fetch the balance rather than Blockchain API\n * @param forceUpdate - If true, the balances will be fetched from the server\n * @returns The balances of the user's tokens\n */\n async getMyTokensWithBalance(forceUpdate) {\n const address = AccountController.state.address;\n const caipNetwork = ChainController.state.activeCaipNetwork;\n const isAuthConnector = ConnectorController.getConnectorId('eip155') === ConstantsUtil.CONNECTOR_ID.AUTH;\n if (!address || !caipNetwork) {\n return [];\n }\n const caipAddress = `${caipNetwork.caipNetworkId}:${address}`;\n const cachedBalance = StorageUtil.getBalanceCacheForCaipAddress(caipAddress);\n if (cachedBalance) {\n return cachedBalance.balances;\n }\n // Extract EIP-155 specific logic\n if (caipNetwork.chainNamespace === ConstantsUtil.CHAIN.EVM && isAuthConnector) {\n const eip155Balances = await this.getEIP155Balances(address, caipNetwork);\n if (eip155Balances) {\n return this.filterLowQualityTokens(eip155Balances);\n }\n }\n // Fallback to 1Inch API\n const response = await BlockchainApiController.getBalance(address, caipNetwork.caipNetworkId, forceUpdate);\n return this.filterLowQualityTokens(response.balances);\n },\n /**\n * Get the balances of the user's tokens on the EIP155 network using native `wallet_getAssets` and `wallet_getCapabilities` calls\n * @param address - The address of the user\n * @param caipNetwork - The CAIP network\n * @returns The balances of the user's tokens on the EIP155 network\n */\n async getEIP155Balances(address, caipNetwork) {\n try {\n const chainIdHex = ERC7811Utils.getChainIdHexFromCAIP2ChainId(caipNetwork.caipNetworkId);\n const walletCapabilities = (await ConnectionController.getCapabilities(address));\n if (!walletCapabilities?.[chainIdHex]?.['assetDiscovery']?.supported) {\n return null;\n }\n const walletGetAssetsResponse = await ConnectionController.walletGetAssets({\n account: address,\n chainFilter: [chainIdHex]\n });\n if (!ERC7811Utils.isWalletGetAssetsResponse(walletGetAssetsResponse)) {\n return null;\n }\n const assets = walletGetAssetsResponse[chainIdHex] || [];\n const filteredAssets = assets.map(asset => ERC7811Utils.createBalance(asset, caipNetwork.caipNetworkId));\n StorageUtil.updateBalanceCache({\n caipAddress: `${caipNetwork.caipNetworkId}:${address}`,\n balance: { balances: filteredAssets },\n timestamp: Date.now()\n });\n return filteredAssets;\n }\n catch (error) {\n return null;\n }\n },\n /**\n * The 1Inch API includes many low-quality tokens in the balance response,\n * which appear inconsistently. This filter prevents them from being displayed.\n */\n filterLowQualityTokens(balances) {\n return balances.filter(balance => balance.quantity.decimals !== '0');\n }\n};\n//# sourceMappingURL=BalanceUtil.js.map","import { proxy, ref } from 'valtio/vanilla';\nimport { BalanceUtil } from '../utils/BalanceUtil.js';\nimport { ConstantsUtil } from '../utils/ConstantsUtil.js';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { ChainController } from './ChainController.js';\nimport { SnackController } from './SnackController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n currentTab: 0,\n tokenBalance: [],\n smartAccountDeployed: false,\n addressLabels: new Map()\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n replaceState(newState) {\n if (!newState) {\n return;\n }\n Object.assign(state, ref(newState));\n },\n subscribe(callback) {\n return ChainController.subscribeChainProp('accountState', accountState => {\n if (accountState) {\n return callback(accountState);\n }\n return undefined;\n });\n },\n subscribeKey(property, callback, chain) {\n let prev = undefined;\n return ChainController.subscribeChainProp('accountState', accountState => {\n if (accountState) {\n const nextValue = accountState[property];\n if (prev !== nextValue) {\n prev = nextValue;\n callback(nextValue);\n }\n }\n }, chain);\n },\n setStatus(status, chain) {\n ChainController.setAccountProp('status', status, chain);\n },\n getCaipAddress(chain) {\n if (!chain) {\n return undefined;\n }\n return ChainController.state.chains.get(chain)?.accountState?.caipAddress;\n },\n setCaipAddress(caipAddress, chain) {\n const newAddress = caipAddress ? CoreHelperUtil.getPlainAddress(caipAddress) : undefined;\n if (chain === ChainController.state.activeChain) {\n ChainController.state.activeCaipAddress = caipAddress;\n }\n ChainController.setAccountProp('caipAddress', caipAddress, chain);\n ChainController.setAccountProp('address', newAddress, chain);\n },\n setBalance(balance, balanceSymbol, chain) {\n ChainController.setAccountProp('balance', balance, chain);\n ChainController.setAccountProp('balanceSymbol', balanceSymbol, chain);\n },\n setProfileName(profileName, chain) {\n ChainController.setAccountProp('profileName', profileName, chain);\n },\n setProfileImage(profileImage, chain) {\n ChainController.setAccountProp('profileImage', profileImage, chain);\n },\n setUser(user, chain) {\n ChainController.setAccountProp('user', user, chain);\n },\n setAddressExplorerUrl(explorerUrl, chain) {\n ChainController.setAccountProp('addressExplorerUrl', explorerUrl, chain);\n },\n setSmartAccountDeployed(isDeployed, chain) {\n ChainController.setAccountProp('smartAccountDeployed', isDeployed, chain);\n },\n setCurrentTab(currentTab) {\n ChainController.setAccountProp('currentTab', currentTab, ChainController.state.activeChain);\n },\n setTokenBalance(tokenBalance, chain) {\n if (tokenBalance) {\n ChainController.setAccountProp('tokenBalance', tokenBalance, chain);\n }\n },\n setShouldUpdateToAddress(address, chain) {\n ChainController.setAccountProp('shouldUpdateToAddress', address, chain);\n },\n addAddressLabel(address, label, chain) {\n if (!chain) {\n return;\n }\n const map = ChainController.state.chains.get(chain)?.accountState?.addressLabels || new Map();\n map.set(address, label);\n ChainController.setAccountProp('addressLabels', map, chain);\n },\n removeAddressLabel(address, chain) {\n if (!chain) {\n return;\n }\n const map = ChainController.state.chains.get(chain)?.accountState?.addressLabels || new Map();\n map.delete(address);\n ChainController.setAccountProp('addressLabels', map, chain);\n },\n setConnectedWalletInfo(connectedWalletInfo, chain) {\n ChainController.setAccountProp('connectedWalletInfo', connectedWalletInfo, chain, false);\n },\n setPreferredAccountType(preferredAccountType, chain) {\n ChainController.setAccountProp('preferredAccountType', preferredAccountType, chain);\n },\n setSocialProvider(socialProvider, chain) {\n if (socialProvider) {\n ChainController.setAccountProp('socialProvider', socialProvider, chain);\n }\n },\n setSocialWindow(socialWindow, chain) {\n ChainController.setAccountProp('socialWindow', socialWindow ? ref(socialWindow) : undefined, chain);\n },\n setFarcasterUrl(farcasterUrl, chain) {\n ChainController.setAccountProp('farcasterUrl', farcasterUrl, chain);\n },\n async fetchTokenBalance(onError) {\n state.balanceLoading = true;\n const chainId = ChainController.state.activeCaipNetwork?.caipNetworkId;\n const chain = ChainController.state.activeCaipNetwork?.chainNamespace;\n const caipAddress = ChainController.state.activeCaipAddress;\n const address = caipAddress ? CoreHelperUtil.getPlainAddress(caipAddress) : undefined;\n if (state.lastRetry &&\n !CoreHelperUtil.isAllowedRetry(state.lastRetry, 30 * ConstantsUtil.ONE_SEC_MS)) {\n state.balanceLoading = false;\n return [];\n }\n try {\n if (address && chainId && chain) {\n const balance = await BalanceUtil.getMyTokensWithBalance();\n AccountController.setTokenBalance(balance, chain);\n state.lastRetry = undefined;\n state.balanceLoading = false;\n return balance;\n }\n }\n catch (error) {\n state.lastRetry = Date.now();\n onError?.(error);\n SnackController.showError('Token Balance Unavailable');\n }\n finally {\n state.balanceLoading = false;\n }\n return [];\n },\n resetAccount(chain) {\n ChainController.resetAccount(chain);\n }\n};\nexport const AccountController = withErrorBoundary(controller);\n//# sourceMappingURL=AccountController.js.map","import { ConstantsUtil } from '@reown/appkit-common';\nimport { AccountController } from '../controllers/AccountController.js';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectorController } from '../controllers/ConnectorController.js';\nimport { RouterController } from '../controllers/RouterController.js';\nexport const NetworkUtil = {\n /**\n * Function to handle the network switch.\n * This function has variety of conditions to handle the network switch depending on the connectors or namespace's connection states.\n * @param args.network - The network to switch to.\n * @param args.shouldConfirmSwitch - Whether to confirm the switch. If true, the user will be asked to confirm the switch if necessary.\n * @returns void\n */\n onSwitchNetwork({ network, ignoreSwitchConfirmation = false }) {\n const currentNetwork = ChainController.state.activeCaipNetwork;\n const routerData = RouterController.state.data;\n const isSameNetwork = network.id === currentNetwork?.id;\n if (isSameNetwork) {\n return;\n }\n const isCurrentNamespaceConnected = AccountController.getCaipAddress(ChainController.state.activeChain);\n const isDifferentNamespace = network.chainNamespace !== ChainController.state.activeChain;\n const isNextNamespaceConnected = AccountController.getCaipAddress(network.chainNamespace);\n const connectorId = ConnectorController.getConnectorId(ChainController.state.activeChain);\n /**\n * If the network is supported by the auth connector, we don't need to show switch active chain view.\n * But there are some cases like switching from Ethereum to Bitcoin where Bitcoin is not supported by the auth connector and users should connect with another connector.\n */\n const isConnectedWithAuth = connectorId === ConstantsUtil.CONNECTOR_ID.AUTH;\n const isSupportedForAuthConnector = ConstantsUtil.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(c => c === network.chainNamespace);\n /**\n * 1. If the ignoreSwitchConfirmation is set to true, we should switch to the network,\n * 2. If user connected with auth connector and the next network is supported by the auth connector,\n * we should switch to the network without confirmation screen.\n */\n if (ignoreSwitchConfirmation || (isConnectedWithAuth && isSupportedForAuthConnector)) {\n RouterController.push('SwitchNetwork', { ...routerData, network });\n }\n else if (\n /**\n * If user switching to a different namespace and next namespace is not connected, we need to show switch active chain view for confirmation first.\n */\n isCurrentNamespaceConnected &&\n isDifferentNamespace &&\n !isNextNamespaceConnected) {\n RouterController.push('SwitchActiveChain', {\n switchToChain: network.chainNamespace,\n navigateTo: 'Connect',\n navigateWithReplace: true,\n network\n });\n }\n else {\n RouterController.push('SwitchNetwork', { ...routerData, network });\n }\n }\n};\n//# sourceMappingURL=NetworkUtil.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport {} from '@reown/appkit-common';\nimport { CoreHelperUtil } from '../utils/CoreHelperUtil.js';\nimport { NetworkUtil } from '../utils/NetworkUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { ApiController } from './ApiController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectionController } from './ConnectionController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { EventsController } from './EventsController.js';\nimport { OptionsController } from './OptionsController.js';\nimport { PublicStateController } from './PublicStateController.js';\nimport { RouterController } from './RouterController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n loading: false,\n loadingNamespaceMap: new Map(),\n open: false,\n shake: false,\n namespace: undefined\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n async open(options) {\n const namespace = options?.namespace;\n const currentNamespace = ChainController.state.activeChain;\n const isSwitchingNamespace = namespace && namespace !== currentNamespace;\n const caipAddress = ChainController.getAccountData(options?.namespace)?.caipAddress;\n if (ConnectionController.state.wcBasic) {\n // No need to add an await here if we are use basic\n ApiController.prefetch({ fetchNetworkImages: false, fetchConnectorImages: false });\n }\n else {\n await ApiController.prefetch();\n }\n ConnectorController.setFilterByNamespace(options?.namespace);\n ModalController.setLoading(true, namespace);\n if (namespace && isSwitchingNamespace) {\n const namespaceNetwork = ChainController.getNetworkData(namespace)?.caipNetwork ||\n ChainController.getRequestedCaipNetworks(namespace)[0];\n if (namespaceNetwork) {\n NetworkUtil.onSwitchNetwork({ network: namespaceNetwork, ignoreSwitchConfirmation: true });\n }\n }\n else {\n const hasNoAdapters = ChainController.state.noAdapters;\n if (OptionsController.state.manualWCControl || (hasNoAdapters && !caipAddress)) {\n if (CoreHelperUtil.isMobile()) {\n RouterController.reset('AllWallets');\n }\n else {\n RouterController.reset('ConnectingWalletConnectBasic');\n }\n }\n else if (options?.view) {\n RouterController.reset(options.view, options.data);\n }\n else if (caipAddress) {\n RouterController.reset('Account');\n }\n else {\n RouterController.reset('Connect');\n }\n }\n state.open = true;\n PublicStateController.set({ open: true });\n EventsController.sendEvent({\n type: 'track',\n event: 'MODAL_OPEN',\n properties: { connected: Boolean(caipAddress) }\n });\n },\n close() {\n const isEmbeddedEnabled = OptionsController.state.enableEmbedded;\n const isConnected = Boolean(ChainController.state.activeCaipAddress);\n // Only send the event if the modal is open and is about to be closed\n if (state.open) {\n EventsController.sendEvent({\n type: 'track',\n event: 'MODAL_CLOSE',\n properties: { connected: isConnected }\n });\n }\n state.open = false;\n RouterController.reset('Connect');\n ModalController.clearLoading();\n if (isEmbeddedEnabled) {\n if (isConnected) {\n RouterController.replace('Account');\n }\n else {\n RouterController.push('Connect');\n }\n }\n else {\n PublicStateController.set({ open: false });\n }\n ConnectionController.resetUri();\n },\n setLoading(loading, namespace) {\n if (namespace) {\n state.loadingNamespaceMap.set(namespace, loading);\n }\n state.loading = loading;\n PublicStateController.set({ loading });\n },\n clearLoading() {\n state.loadingNamespaceMap.clear();\n state.loading = false;\n PublicStateController.set({ loading: false });\n },\n shake() {\n if (state.shake) {\n return;\n }\n state.shake = true;\n setTimeout(() => {\n state.shake = false;\n }, 500);\n }\n};\n// Export the controller wrapped with our error boundary\nexport const ModalController = withErrorBoundary(controller);\n//# sourceMappingURL=ModalController.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { ConstantsUtil } from '@reown/appkit-common';\nimport { MELD_PUBLIC_KEY, ONRAMP_PROVIDERS } from '../utils/ConstantsUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { ApiController } from './ApiController.js';\nimport { BlockchainApiController } from './BlockchainApiController.js';\nimport { ChainController } from './ChainController.js';\nimport { OptionsController } from './OptionsController.js';\nexport const USDC_CURRENCY_DEFAULT = {\n id: '2b92315d-eab7-5bef-84fa-089a131333f5',\n name: 'USD Coin',\n symbol: 'USDC',\n networks: [\n {\n name: 'ethereum-mainnet',\n display_name: 'Ethereum',\n chain_id: '1',\n contract_address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n },\n {\n name: 'polygon-mainnet',\n display_name: 'Polygon',\n chain_id: '137',\n contract_address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174'\n }\n ]\n};\nexport const USD_CURRENCY_DEFAULT = {\n id: 'USD',\n payment_method_limits: [\n {\n id: 'card',\n min: '10.00',\n max: '7500.00'\n },\n {\n id: 'ach_bank_account',\n min: '10.00',\n max: '25000.00'\n }\n ]\n};\nconst defaultState = {\n providers: ONRAMP_PROVIDERS,\n selectedProvider: null,\n error: null,\n purchaseCurrency: USDC_CURRENCY_DEFAULT,\n paymentCurrency: USD_CURRENCY_DEFAULT,\n purchaseCurrencies: [USDC_CURRENCY_DEFAULT],\n paymentCurrencies: [],\n quotesLoading: false\n};\n// -- State --------------------------------------------- //\nconst state = proxy(defaultState);\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n setSelectedProvider(provider) {\n if (provider && provider.name === 'meld') {\n const activeChain = ChainController.state.activeChain;\n const currency = activeChain === ConstantsUtil.CHAIN.SOLANA ? 'SOL' : 'USDC';\n const address = activeChain\n ? (ChainController.state.chains.get(activeChain)?.accountState?.address ?? '')\n : '';\n const url = new URL(provider.url);\n url.searchParams.append('publicKey', MELD_PUBLIC_KEY);\n url.searchParams.append('destinationCurrencyCode', currency);\n url.searchParams.append('walletAddress', address);\n url.searchParams.append('externalCustomerId', OptionsController.state.projectId);\n state.selectedProvider = { ...provider, url: url.toString() };\n }\n else {\n state.selectedProvider = provider;\n }\n },\n setOnrampProviders(providers) {\n if (Array.isArray(providers) && providers.every(item => typeof item === 'string')) {\n const validOnramp = providers;\n const newProviders = ONRAMP_PROVIDERS.filter(provider => validOnramp.includes(provider.name));\n state.providers = newProviders;\n }\n else {\n state.providers = [];\n }\n },\n setPurchaseCurrency(currency) {\n state.purchaseCurrency = currency;\n },\n setPaymentCurrency(currency) {\n state.paymentCurrency = currency;\n },\n setPurchaseAmount(amount) {\n OnRampController.state.purchaseAmount = amount;\n },\n setPaymentAmount(amount) {\n OnRampController.state.paymentAmount = amount;\n },\n async getAvailableCurrencies() {\n const options = await BlockchainApiController.getOnrampOptions();\n state.purchaseCurrencies = options.purchaseCurrencies;\n state.paymentCurrencies = options.paymentCurrencies;\n state.paymentCurrency = options.paymentCurrencies[0] || USD_CURRENCY_DEFAULT;\n state.purchaseCurrency = options.purchaseCurrencies[0] || USDC_CURRENCY_DEFAULT;\n await ApiController.fetchCurrencyImages(options.paymentCurrencies.map(currency => currency.id));\n await ApiController.fetchTokenImages(options.purchaseCurrencies.map(currency => currency.symbol));\n },\n async getQuote() {\n state.quotesLoading = true;\n try {\n const quote = await BlockchainApiController.getOnrampQuote({\n purchaseCurrency: state.purchaseCurrency,\n paymentCurrency: state.paymentCurrency,\n amount: state.paymentAmount?.toString() || '0',\n network: state.purchaseCurrency?.symbol\n });\n state.quotesLoading = false;\n state.purchaseAmount = Number(quote?.purchaseAmount.amount);\n return quote;\n }\n catch (error) {\n state.error = error.message;\n state.quotesLoading = false;\n return null;\n }\n finally {\n state.quotesLoading = false;\n }\n },\n resetState() {\n state.selectedProvider = null;\n state.error = null;\n state.purchaseCurrency = USDC_CURRENCY_DEFAULT;\n state.paymentCurrency = USD_CURRENCY_DEFAULT;\n state.purchaseCurrencies = [USDC_CURRENCY_DEFAULT];\n state.paymentCurrencies = [];\n state.paymentAmount = undefined;\n state.purchaseAmount = undefined;\n state.quotesLoading = false;\n }\n};\n// Export the controller wrapped with our error boundary\nexport const OnRampController = withErrorBoundary(controller);\n//# sourceMappingURL=OnRampController.js.map","const SLIP44_MSB = 0x80000000;\nexport const EnsUtil = {\n convertEVMChainIdToCoinType(chainId) {\n if (chainId >= SLIP44_MSB) {\n throw new Error('Invalid chainId');\n }\n return (SLIP44_MSB | chainId) >>> 0;\n }\n};\n//# sourceMappingURL=EnsUtil.js.map","import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport {} from '@reown/appkit-common';\nimport { EnsUtil } from '../utils/EnsUtil.js';\nimport { StorageUtil } from '../utils/StorageUtil.js';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\nimport { AccountController } from './AccountController.js';\nimport { BlockchainApiController } from './BlockchainApiController.js';\nimport { ChainController } from './ChainController.js';\nimport { ConnectionController } from './ConnectionController.js';\nimport { ConnectorController } from './ConnectorController.js';\nimport { RouterController } from './RouterController.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n suggestions: [],\n loading: false\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n async resolveName(name) {\n try {\n return await BlockchainApiController.lookupEnsName(name);\n }\n catch (e) {\n const error = e;\n throw new Error(error?.reasons?.[0]?.description || 'Error resolving name');\n }\n },\n async isNameRegistered(name) {\n try {\n await BlockchainApiController.lookupEnsName(name);\n return true;\n }\n catch {\n return false;\n }\n },\n async getSuggestions(value) {\n try {\n state.loading = true;\n state.suggestions = [];\n const response = await BlockchainApiController.getEnsNameSuggestions(value);\n state.suggestions =\n response.suggestions.map(suggestion => ({\n ...suggestion,\n name: suggestion.name\n })) || [];\n return state.suggestions;\n }\n catch (e) {\n const errorMessage = EnsController.parseEnsApiError(e, 'Error fetching name suggestions');\n throw new Error(errorMessage);\n }\n finally {\n state.loading = false;\n }\n },\n async getNamesForAddress(address) {\n try {\n const network = ChainController.state.activeCaipNetwork;\n if (!network) {\n return [];\n }\n const cachedEns = StorageUtil.getEnsFromCacheForAddress(address);\n if (cachedEns) {\n return cachedEns;\n }\n const response = await BlockchainApiController.reverseLookupEnsName({ address });\n StorageUtil.updateEnsCache({\n address,\n ens: response,\n timestamp: Date.now()\n });\n return response;\n }\n catch (e) {\n const errorMessage = EnsController.parseEnsApiError(e, 'Error fetching names for address');\n throw new Error(errorMessage);\n }\n },\n async registerName(name) {\n const network = ChainController.state.activeCaipNetwork;\n const address = AccountController.state.address;\n const emailConnector = ConnectorController.getAuthConnector();\n if (!network) {\n throw new Error('Network not found');\n }\n if (!address || !emailConnector) {\n throw new Error('Address or auth connector not found');\n }\n state.loading = true;\n try {\n const message = JSON.stringify({\n name,\n attributes: {},\n // Unix timestamp\n timestamp: Math.floor(Date.now() / 1000)\n });\n RouterController.pushTransactionStack({\n onCancel() {\n RouterController.replace('RegisterAccountName');\n }\n });\n const signature = await ConnectionController.signMessage(message);\n state.loading = false;\n const networkId = network.id;\n if (!networkId) {\n throw new Error('Network not found');\n }\n const coinType = EnsUtil.convertEVMChainIdToCoinType(Number(networkId));\n await BlockchainApiController.registerEnsName({\n coinType,\n address: address,\n signature: signature,\n message\n });\n AccountController.setProfileName(name, network.chainNamespace);\n RouterController.replace('RegisterAccountNameSuccess');\n }\n catch (e) {\n const errorMessage = EnsController.parseEnsApiError(e, `Error registering name ${name}`);\n RouterController.replace('RegisterAccountName');\n throw new Error(errorMessage);\n }\n finally {\n state.loading = false;\n }\n },\n validateName(name) {\n return /^[a-zA-Z0-9-]{4,}$/u.test(name);\n },\n parseEnsApiError(error, defaultError) {\n const ensError = error;\n return ensError?.reasons?.[0]?.description || defaultError;\n }\n};\n// Export the controller wrapped with our error boundary\nexport const EnsController = withErrorBoundary(controller);\n//# sourceMappingURL=EnsController.js.map","import UniversalProvider from '@walletconnect/universal-provider';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { W3mFrameRpcConstants } from '@reown/appkit-wallet/utils';\nimport { AccountController } from '../controllers/AccountController.js';\nimport { ChainController } from '../controllers/ChainController.js';\nimport { ConnectionController } from '../controllers/ConnectionController.js';\nimport { ConnectorController } from '../controllers/ConnectorController.js';\nimport { EventsController } from '../controllers/EventsController.js';\nimport { ModalController } from '../controllers/ModalController.js';\nimport { OptionsController } from '../controllers/OptionsController.js';\nimport { RouterController } from '../controllers/RouterController.js';\nimport { SnackController } from '../controllers/SnackController.js';\nimport { getActiveCaipNetwork, getPreferredAccountType } from './ChainControllerUtil.js';\nimport { CoreHelperUtil } from './CoreHelperUtil.js';\n/**\n * SIWXUtil holds the methods to interact with the SIWX plugin and must be called internally on AppKit.\n */\nlet addEmbeddedWalletSessionPromise = null;\nexport const SIWXUtil = {\n getSIWX() {\n return OptionsController.state.siwx;\n },\n async initializeIfEnabled(caipAddress = ChainController.getActiveCaipAddress()) {\n const siwx = OptionsController.state.siwx;\n if (!(siwx && caipAddress)) {\n return;\n }\n const [namespace, chainId, address] = caipAddress.split(':');\n if (!ChainController.checkIfSupportedNetwork(namespace, `${namespace}:${chainId}`)) {\n return;\n }\n try {\n if (OptionsController.state.remoteFeatures?.emailCapture) {\n const user = ChainController.getAccountData(namespace)?.user;\n await ModalController.open({\n view: 'DataCapture',\n data: {\n email: user?.email ?? undefined\n }\n });\n return;\n }\n if (addEmbeddedWalletSessionPromise) {\n await addEmbeddedWalletSessionPromise;\n }\n const sessions = await siwx.getSessions(`${namespace}:${chainId}`, address);\n if (sessions.length) {\n return;\n }\n await ModalController.open({\n view: 'SIWXSignMessage'\n });\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.error('SIWXUtil:initializeIfEnabled', error);\n EventsController.sendEvent({\n type: 'track',\n event: 'SIWX_AUTH_ERROR',\n properties: this.getSIWXEventProperties()\n });\n // eslint-disable-next-line no-console\n await ConnectionController._getClient()?.disconnect().catch(console.error);\n RouterController.reset('Connect');\n SnackController.showError('A problem occurred while trying initialize authentication');\n }\n },\n async requestSignMessage() {\n const siwx = OptionsController.state.siwx;\n const address = CoreHelperUtil.getPlainAddress(ChainController.getActiveCaipAddress());\n const network = getActiveCaipNetwork();\n const client = ConnectionController._getClient();\n if (!siwx) {\n throw new Error('SIWX is not enabled');\n }\n if (!address) {\n throw new Error('No ActiveCaipAddress found');\n }\n if (!network) {\n throw new Error('No ActiveCaipNetwork or client found');\n }\n if (!client) {\n throw new Error('No ConnectionController client found');\n }\n try {\n const siwxMessage = await siwx.createMessage({\n chainId: network.caipNetworkId,\n accountAddress: address\n });\n const message = siwxMessage.toString();\n const connectorId = ConnectorController.getConnectorId(network.chainNamespace);\n if (connectorId === CommonConstantsUtil.CONNECTOR_ID.AUTH) {\n RouterController.pushTransactionStack({});\n }\n const signature = await client.signMessage(message);\n await siwx.addSession({\n data: siwxMessage,\n message,\n signature\n });\n ChainController.setLastConnectedSIWECaipNetwork(network);\n ModalController.close();\n EventsController.sendEvent({\n type: 'track',\n event: 'SIWX_AUTH_SUCCESS',\n properties: this.getSIWXEventProperties()\n });\n }\n catch (error) {\n const properties = this.getSIWXEventProperties();\n if (!ModalController.state.open || RouterController.state.view === 'ApproveTransaction') {\n await ModalController.open({\n view: 'SIWXSignMessage'\n });\n }\n SnackController.showError('Error signing message');\n EventsController.sendEvent({\n type: 'track',\n event: 'SIWX_AUTH_ERROR',\n properties\n });\n // eslint-disable-next-line no-console\n console.error('SWIXUtil:requestSignMessage', error);\n }\n },\n async cancelSignMessage() {\n try {\n const siwx = this.getSIWX();\n const isRequired = siwx?.getRequired?.();\n if (isRequired) {\n const lastNetwork = ChainController.getLastConnectedSIWECaipNetwork();\n if (lastNetwork) {\n const sessions = await siwx?.getSessions(lastNetwork?.caipNetworkId, CoreHelperUtil.getPlainAddress(ChainController.getActiveCaipAddress()) || '');\n if (sessions && sessions.length > 0) {\n await ChainController.switchActiveNetwork(lastNetwork);\n }\n else {\n await ConnectionController.disconnect();\n }\n }\n else {\n await ConnectionController.disconnect();\n }\n }\n else {\n ModalController.close();\n }\n ModalController.close();\n EventsController.sendEvent({\n event: 'CLICK_CANCEL_SIWX',\n type: 'track',\n properties: this.getSIWXEventProperties()\n });\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.error('SIWXUtil:cancelSignMessage', error);\n }\n },\n async getAllSessions() {\n const siwx = this.getSIWX();\n const allRequestedCaipNetworks = ChainController.getAllRequestedCaipNetworks();\n const sessions = [];\n await Promise.all(allRequestedCaipNetworks.map(async (caipNetwork) => {\n const session = await siwx?.getSessions(caipNetwork.caipNetworkId, CoreHelperUtil.getPlainAddress(ChainController.getActiveCaipAddress()) || '');\n if (session) {\n sessions.push(...session);\n }\n }));\n return sessions;\n },\n async getSessions(args) {\n const siwx = OptionsController.state.siwx;\n let address = args?.address;\n if (!address) {\n const activeCaipAddress = ChainController.getActiveCaipAddress();\n address = CoreHelperUtil.getPlainAddress(activeCaipAddress);\n }\n let network = args?.caipNetworkId;\n if (!network) {\n const activeCaipNetwork = ChainController.getActiveCaipNetwork();\n network = activeCaipNetwork?.caipNetworkId;\n }\n if (!(siwx && address && network)) {\n return [];\n }\n return siwx.getSessions(network, address);\n },\n async isSIWXCloseDisabled() {\n const siwx = this.getSIWX();\n if (siwx) {\n const isApproveSignScreen = RouterController.state.view === 'ApproveTransaction';\n const isSiwxSignMessage = RouterController.state.view === 'SIWXSignMessage';\n if (isApproveSignScreen || isSiwxSignMessage) {\n return siwx.getRequired?.() && (await this.getSessions()).length === 0;\n }\n }\n return false;\n },\n async authConnectorAuthenticate({ authConnector, chainId, socialUri, preferredAccountType, chainNamespace }) {\n const siwx = SIWXUtil.getSIWX();\n if (!siwx ||\n !chainNamespace.includes(CommonConstantsUtil.CHAIN.EVM) ||\n // Request to input email and sign message when email capture is enabled\n OptionsController.state.remoteFeatures?.emailCapture) {\n const result = await authConnector.connect({\n chainId,\n socialUri,\n preferredAccountType\n });\n return {\n address: result.address,\n chainId: result.chainId,\n accounts: result.accounts\n };\n }\n const caipNetwork = `${chainNamespace}:${chainId}`;\n const siwxMessage = await siwx.createMessage({\n chainId: caipNetwork,\n accountAddress: '<>'\n });\n // Extract only the serializable data properties for postMessage, toString() is not possible to include in the postMessage\n const siwxMessageData = {\n accountAddress: siwxMessage.accountAddress,\n chainId: siwxMessage.chainId,\n domain: siwxMessage.domain,\n uri: siwxMessage.uri,\n version: siwxMessage.version,\n nonce: siwxMessage.nonce,\n notBefore: siwxMessage.notBefore,\n statement: siwxMessage.statement,\n resources: siwxMessage.resources,\n requestId: siwxMessage.requestId,\n issuedAt: siwxMessage.issuedAt,\n expirationTime: siwxMessage.expirationTime,\n serializedMessage: siwxMessage.toString()\n };\n const result = await authConnector.connect({\n chainId,\n socialUri,\n siwxMessage: siwxMessageData,\n preferredAccountType\n });\n siwxMessageData.accountAddress = result.address;\n siwxMessageData.serializedMessage = result.message || '';\n if (result.signature && result.message) {\n const promise = SIWXUtil.addEmbeddedWalletSession(siwxMessageData, result.message, result.signature);\n await promise;\n }\n return {\n address: result.address,\n chainId: result.chainId,\n accounts: result.accounts\n };\n },\n async addEmbeddedWalletSession(siwxMessageData, message, signature) {\n if (addEmbeddedWalletSessionPromise) {\n return addEmbeddedWalletSessionPromise;\n }\n const siwx = SIWXUtil.getSIWX();\n if (!siwx) {\n return Promise.resolve();\n }\n addEmbeddedWalletSessionPromise = siwx\n .addSession({\n data: siwxMessageData,\n message,\n signature\n })\n .finally(() => {\n addEmbeddedWalletSessionPromise = null;\n });\n return addEmbeddedWalletSessionPromise;\n },\n async universalProviderAuthenticate({ universalProvider, chains, methods }) {\n const siwx = SIWXUtil.getSIWX();\n const namespaces = new Set(chains.map(chain => chain.split(':')[0]));\n if (!siwx || namespaces.size !== 1 || !namespaces.has('eip155')) {\n return false;\n }\n // Ignores chainId and account address to get other message data\n const siwxMessage = await siwx.createMessage({\n chainId: getActiveCaipNetwork()?.caipNetworkId || '',\n accountAddress: ''\n });\n const result = await universalProvider.authenticate({\n nonce: siwxMessage.nonce,\n domain: siwxMessage.domain,\n uri: siwxMessage.uri,\n exp: siwxMessage.expirationTime,\n iat: siwxMessage.issuedAt,\n nbf: siwxMessage.notBefore,\n requestId: siwxMessage.requestId,\n version: siwxMessage.version,\n resources: siwxMessage.resources,\n statement: siwxMessage.statement,\n chainId: siwxMessage.chainId,\n methods,\n // The first chainId is what is used for universal provider to build the message\n chains: [siwxMessage.chainId, ...chains.filter(chain => chain !== siwxMessage.chainId)]\n });\n SnackController.showLoading('Authenticating...', { autoClose: false });\n AccountController.setConnectedWalletInfo({\n ...result.session.peer.metadata,\n name: result.session.peer.metadata.name,\n icon: result.session.peer.metadata.icons?.[0],\n type: 'WALLET_CONNECT'\n }, Array.from(namespaces)[0]);\n if (result?.auths?.length) {\n const sessions = result.auths.map(cacao => {\n const message = universalProvider.client.formatAuthMessage({\n request: cacao.p,\n iss: cacao.p.iss\n });\n return {\n data: {\n ...cacao.p,\n accountAddress: cacao.p.iss.split(':').slice(-1).join(''),\n chainId: cacao.p.iss.split(':').slice(2, 4).join(':'),\n uri: cacao.p.aud,\n version: cacao.p.version || siwxMessage.version,\n expirationTime: cacao.p.exp,\n issuedAt: cacao.p.iat,\n notBefore: cacao.p.nbf\n },\n message,\n signature: cacao.s.s,\n cacao\n };\n });\n try {\n await siwx.setSessions(sessions);\n EventsController.sendEvent({\n type: 'track',\n event: 'SIWX_AUTH_SUCCESS',\n properties: SIWXUtil.getSIWXEventProperties()\n });\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.error('SIWX:universalProviderAuth - failed to set sessions', error);\n EventsController.sendEvent({\n type: 'track',\n event: 'SIWX_AUTH_ERROR',\n properties: SIWXUtil.getSIWXEventProperties()\n });\n // eslint-disable-next-line no-console\n await universalProvider.disconnect().catch(console.error);\n throw error;\n }\n finally {\n SnackController.hide();\n }\n }\n return true;\n },\n getSIWXEventProperties() {\n const namespace = ChainController.state.activeChain;\n if (!namespace) {\n throw new Error('SIWXUtil:getSIWXEventProperties - namespace is required');\n }\n return {\n network: ChainController.state.activeCaipNetwork?.caipNetworkId || '',\n isSmartAccount: getPreferredAccountType(namespace) === W3mFrameRpcConstants.ACCOUNT_TYPES.SMART_ACCOUNT\n };\n },\n async clearSessions() {\n const siwx = this.getSIWX();\n if (siwx) {\n await siwx.setSessions([]);\n }\n }\n};\n//# sourceMappingURL=SIWXUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nexport const ConstantsUtil = {\n METMASK_CONNECTOR_NAME: 'MetaMask',\n TRUST_CONNECTOR_NAME: 'Trust Wallet',\n SOLFLARE_CONNECTOR_NAME: 'Solflare',\n PHANTOM_CONNECTOR_NAME: 'Phantom',\n COIN98_CONNECTOR_NAME: 'Coin98',\n MAGIC_EDEN_CONNECTOR_NAME: 'Magic Eden',\n BACKPACK_CONNECTOR_NAME: 'Backpack',\n BITGET_CONNECTOR_NAME: 'Bitget Wallet',\n FRONTIER_CONNECTOR_NAME: 'Frontier',\n XVERSE_CONNECTOR_NAME: 'Xverse Wallet',\n LEATHER_CONNECTOR_NAME: 'Leather',\n EIP155: CommonConstantsUtil.CHAIN.EVM,\n ADD_CHAIN_METHOD: 'wallet_addEthereumChain',\n EIP6963_ANNOUNCE_EVENT: 'eip6963:announceProvider',\n EIP6963_REQUEST_EVENT: 'eip6963:requestProvider',\n CONNECTOR_RDNS_MAP: {\n coinbaseWallet: 'com.coinbase.wallet',\n coinbaseWalletSDK: 'com.coinbase.wallet'\n },\n CONNECTOR_TYPE_EXTERNAL: 'EXTERNAL',\n CONNECTOR_TYPE_WALLET_CONNECT: 'WALLET_CONNECT',\n CONNECTOR_TYPE_INJECTED: 'INJECTED',\n CONNECTOR_TYPE_ANNOUNCED: 'ANNOUNCED',\n CONNECTOR_TYPE_AUTH: 'AUTH',\n CONNECTOR_TYPE_MULTI_CHAIN: 'MULTI_CHAIN',\n CONNECTOR_TYPE_W3M_AUTH: 'ID_AUTH'\n};\n//# sourceMappingURL=ConstantsUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nexport const PresetsUtil = {\n ConnectorExplorerIds: {\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE]: 'fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa',\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE_SDK]: 'fd20dc426fb37566d803205b19bbc1d4096b248ac04548e3cfb6b3a38bd033aa',\n [CommonConstantsUtil.CONNECTOR_ID.SAFE]: '225affb176778569276e484e1b92637ad061b01e13a048b35a9d280c3b58970f',\n [CommonConstantsUtil.CONNECTOR_ID.LEDGER]: '19177a98252e07ddfc9af2083ba8e07ef627cb6103467ffebb3f8f4205fd7927',\n [CommonConstantsUtil.CONNECTOR_ID.OKX]: '971e689d0a5be527bac79629b4ee9b925e82208e5168b733496a09c0faed0709',\n [ConstantsUtil.METMASK_CONNECTOR_NAME]: 'c57ca95b47569778a828d19178114f4db188b89b763c899ba0be274e97267d96',\n [ConstantsUtil.TRUST_CONNECTOR_NAME]: '4622a2b2d6af1c9844944291e5e7351a6aa24cd7b23099efac1b2fd875da31a0',\n [ConstantsUtil.SOLFLARE_CONNECTOR_NAME]: '1ca0bdd4747578705b1939af023d120677c64fe6ca76add81fda36e350605e79',\n [ConstantsUtil.PHANTOM_CONNECTOR_NAME]: 'a797aa35c0fadbfc1a53e7f675162ed5226968b44a19ee3d24385c64d1d3c393',\n [ConstantsUtil.COIN98_CONNECTOR_NAME]: '2a3c89040ac3b723a1972a33a125b1db11e258a6975d3a61252cd64e6ea5ea01',\n [ConstantsUtil.MAGIC_EDEN_CONNECTOR_NAME]: '8b830a2b724a9c3fbab63af6f55ed29c9dfa8a55e732dc88c80a196a2ba136c6',\n [ConstantsUtil.BACKPACK_CONNECTOR_NAME]: '2bd8c14e035c2d48f184aaa168559e86b0e3433228d3c4075900a221785019b0',\n [ConstantsUtil.BITGET_CONNECTOR_NAME]: '38f5d18bd8522c244bdd70cb4a68e0e718865155811c043f052fb9f1c51de662',\n [ConstantsUtil.FRONTIER_CONNECTOR_NAME]: '85db431492aa2e8672e93f4ea7acf10c88b97b867b0d373107af63dc4880f041',\n [ConstantsUtil.XVERSE_CONNECTOR_NAME]: '2a87d74ae02e10bdd1f51f7ce6c4e1cc53cd5f2c0b6b5ad0d7b3007d2b13de7b',\n [ConstantsUtil.LEATHER_CONNECTOR_NAME]: '483afe1df1df63daf313109971ff3ef8356ddf1cc4e45877d205eee0b7893a13'\n },\n NetworkImageIds: {\n 1: 'ba0ba0cd-17c6-4806-ad93-f9d174f17900',\n 42161: '3bff954d-5cb0-47a0-9a23-d20192e74600',\n 43114: '30c46e53-e989-45fb-4549-be3bd4eb3b00',\n 56: '93564157-2e8e-4ce7-81df-b264dbee9b00',\n 250: '06b26297-fe0c-4733-5d6b-ffa5498aac00',\n 10: 'ab9c186a-c52f-464b-2906-ca59d760a400',\n 137: '41d04d42-da3b-4453-8506-668cc0727900',\n 5000: 'e86fae9b-b770-4eea-e520-150e12c81100',\n 295: '6a97d510-cac8-4e58-c7ce-e8681b044c00',\n 11_155_111: 'e909ea0a-f92a-4512-c8fc-748044ea6800',\n 84532: 'a18a7ecd-e307-4360-4746-283182228e00',\n 1301: '4eeea7ef-0014-4649-5d1d-07271a80f600',\n 130: '2257980a-3463-48c6-cbac-a42d2a956e00',\n 10_143: '0a728e83-bacb-46db-7844-948f05434900',\n 100: '02b53f6a-e3d4-479e-1cb4-21178987d100',\n 9001: 'f926ff41-260d-4028-635e-91913fc28e00',\n 324: 'b310f07f-4ef7-49f3-7073-2a0a39685800',\n 314: '5a73b3dd-af74-424e-cae0-0de859ee9400',\n 4689: '34e68754-e536-40da-c153-6ef2e7188a00',\n 1088: '3897a66d-40b9-4833-162f-a2c90531c900',\n 1284: '161038da-44ae-4ec7-1208-0ea569454b00',\n 1285: 'f1d73bb6-5450-4e18-38f7-fb6484264a00',\n 7777777: '845c60df-d429-4991-e687-91ae45791600',\n 42220: 'ab781bbc-ccc6-418d-d32d-789b15da1f00',\n 8453: '7289c336-3981-4081-c5f4-efc26ac64a00',\n 1313161554: '3ff73439-a619-4894-9262-4470c773a100',\n 2020: 'b8101fc0-9c19-4b6f-ec65-f6dfff106e00',\n 2021: 'b8101fc0-9c19-4b6f-ec65-f6dfff106e00',\n 80094: 'e329c2c9-59b0-4a02-83e4-212ff3779900',\n 2741: 'fc2427d1-5af9-4a9c-8da5-6f94627cd900',\n '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': 'a1b58899-f671-4276-6a5e-56ca5bd59700',\n '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z': 'a1b58899-f671-4276-6a5e-56ca5bd59700',\n EtWTRABZaYq6iMfeYKouRu166VU2xqa1: 'a1b58899-f671-4276-6a5e-56ca5bd59700',\n '000000000019d6689c085ae165831e93': '0b4838db-0161-4ffe-022d-532bf03dba00',\n '000000000933ea01ad0ee984209779ba': '39354064-d79b-420b-065d-f980c4b78200'\n },\n ConnectorImageIds: {\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE]: '0c2840c3-5b04-4c44-9661-fbd4b49e1800',\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE_SDK]: '0c2840c3-5b04-4c44-9661-fbd4b49e1800',\n [CommonConstantsUtil.CONNECTOR_ID.SAFE]: '461db637-8616-43ce-035a-d89b8a1d5800',\n [CommonConstantsUtil.CONNECTOR_ID.LEDGER]: '54a1aa77-d202-4f8d-0fb2-5d2bb6db0300',\n [CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT]: 'ef1a1fcf-7fe8-4d69-bd6d-fda1345b4400',\n [CommonConstantsUtil.CONNECTOR_ID.INJECTED]: '07ba87ed-43aa-4adf-4540-9e6a2b9cae00'\n },\n ConnectorNamesMap: {\n [CommonConstantsUtil.CONNECTOR_ID.INJECTED]: 'Browser Wallet',\n [CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT]: 'WalletConnect',\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE]: 'Coinbase',\n [CommonConstantsUtil.CONNECTOR_ID.COINBASE_SDK]: 'Coinbase',\n [CommonConstantsUtil.CONNECTOR_ID.LEDGER]: 'Ledger',\n [CommonConstantsUtil.CONNECTOR_ID.SAFE]: 'Safe'\n },\n ConnectorTypesMap: {\n [CommonConstantsUtil.CONNECTOR_ID.INJECTED]: 'INJECTED',\n [CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT]: 'WALLET_CONNECT',\n [CommonConstantsUtil.CONNECTOR_ID.EIP6963]: 'ANNOUNCED',\n [CommonConstantsUtil.CONNECTOR_ID.AUTH]: 'AUTH',\n [ConstantsUtil.CONNECTOR_TYPE_AUTH]: 'AUTH'\n },\n WalletConnectRpcChainIds: [\n 1,\n 5,\n 11155111,\n 10,\n 420,\n 42161,\n 421613,\n 137,\n 80001,\n 42220,\n 1313161554,\n 1313161555,\n 56,\n 97,\n 43114,\n 43113,\n 100,\n 8453,\n 84531,\n 7777777,\n 999,\n 324,\n 280\n ]\n};\n//# sourceMappingURL=PresetsUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ChainController, ConnectorController } from '@reown/appkit-controllers';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nexport const HelpersUtil = {\n getCaipTokens(tokens) {\n if (!tokens) {\n return undefined;\n }\n const caipTokens = {};\n Object.entries(tokens).forEach(([id, token]) => {\n caipTokens[`${ConstantsUtil.EIP155}:${id}`] = token;\n });\n return caipTokens;\n },\n isLowerCaseMatch(str1, str2) {\n return str1?.toLowerCase() === str2?.toLowerCase();\n },\n getActiveNamespaceConnectedToAuth() {\n const activeChain = ChainController.state.activeChain;\n return CommonConstantsUtil.AUTH_CONNECTOR_SUPPORTED_CHAINS.find(chain => ConnectorController.getConnectorId(chain) === CommonConstantsUtil.CONNECTOR_ID.AUTH &&\n chain === activeChain);\n },\n withRetry({ conditionFn, intervalMs, maxRetries }) {\n let attempts = 0;\n return new Promise(resolve => {\n async function tryCheck() {\n attempts += 1;\n const result = await conditionFn();\n if (result) {\n return resolve(true);\n }\n if (attempts >= maxRetries) {\n return resolve(false);\n }\n setTimeout(tryCheck, intervalMs);\n return null;\n }\n tryCheck();\n });\n }\n};\n//# sourceMappingURL=HelpersUtil.js.map","import { isSafe } from '@reown/appkit-common';\nconst abortController = new AbortController();\nexport const ErrorUtil = {\n EmbeddedWalletAbortController: abortController,\n UniversalProviderErrors: {\n UNAUTHORIZED_DOMAIN_NOT_ALLOWED: {\n message: 'Unauthorized: origin not allowed',\n alertErrorKey: 'ORIGIN_NOT_ALLOWED'\n },\n JWT_VALIDATION_ERROR: {\n message: 'JWT validation error: JWT Token is not yet valid',\n alertErrorKey: 'JWT_TOKEN_NOT_VALID'\n },\n INVALID_KEY: {\n message: 'Unauthorized: invalid key',\n alertErrorKey: 'INVALID_PROJECT_ID'\n }\n },\n ALERT_ERRORS: {\n SWITCH_NETWORK_NOT_FOUND: {\n code: 'APKT001',\n displayMessage: 'Network Not Found',\n debugMessage: 'The specified network is not recognized. Please ensure it is included in the `networks` array of your `createAppKit` configuration.'\n },\n ORIGIN_NOT_ALLOWED: {\n code: 'APKT002',\n displayMessage: 'Invalid App Configuration',\n debugMessage: () => `The origin ${isSafe() ? window.origin : 'unknown'} is not in your allow list. Please update your allowed domains at https://dashboard.reown.com.`\n },\n IFRAME_LOAD_FAILED: {\n code: 'APKT003',\n displayMessage: 'Network Error: Wallet Load Failed',\n debugMessage: () => 'Failed to load the embedded wallet. This may be due to network issues or server downtime. Please check your network connection and try again shortly. Contact support if the issue persists.'\n },\n IFRAME_REQUEST_TIMEOUT: {\n code: 'APKT004',\n displayMessage: 'Wallet Request Timeout',\n debugMessage: () => 'The request to the embedded wallet timed out. Please check your network connection and try again shortly. Contact support if the issue persists.'\n },\n UNVERIFIED_DOMAIN: {\n code: 'APKT005',\n displayMessage: 'Unverified Domain',\n debugMessage: () => 'Embedded wallet load failed. Ensure your domain is verified in https://dashboard.reown.com.'\n },\n JWT_TOKEN_NOT_VALID: {\n code: 'APKT006',\n displayMessage: 'Session Expired',\n debugMessage: 'Your session is invalid or expired. Please check your system’s date and time settings, then reconnect.'\n },\n INVALID_PROJECT_ID: {\n code: 'APKT007',\n displayMessage: 'Invalid Project ID',\n debugMessage: 'The specified project ID is invalid. Please visit https://dashboard.reown.com to obtain a valid project ID.'\n },\n PROJECT_ID_NOT_CONFIGURED: {\n code: 'APKT008',\n displayMessage: 'Project ID Missing',\n debugMessage: 'No project ID is configured. You can create and configure a project ID at https://dashboard.reown.com.'\n },\n SERVER_ERROR_APP_CONFIGURATION: {\n code: 'APKT009',\n displayMessage: 'Server Error',\n debugMessage: (errorMessage) => `Unable to fetch App Configuration. ${errorMessage}. Please check your network connection and try again shortly. Contact support if the issue persists.`\n },\n RATE_LIMITED_APP_CONFIGURATION: {\n code: 'APKT010',\n displayMessage: 'Rate Limited',\n debugMessage: 'You have been rate limited while retrieving App Configuration. Please wait a few minutes and try again. Contact support if the issue persists.'\n }\n },\n ALERT_WARNINGS: {\n LOCAL_CONFIGURATION_IGNORED: {\n debugMessage: (warningMessage) => `[Reown Config Notice] ${warningMessage}`\n }\n }\n};\n//# sourceMappingURL=ErrorUtil.js.map","import { generatePlatformLogger, getDefaultLoggerOptions } from '@walletconnect/logger';\nexport const LoggerUtil = {\n createLogger(onError, level = 'error') {\n const loggerOptions = getDefaultLoggerOptions({\n level\n });\n const { logger } = generatePlatformLogger({\n opts: loggerOptions\n });\n logger.error = (...args) => {\n for (const arg of args) {\n if (arg instanceof Error) {\n onError(arg, ...args);\n return;\n }\n }\n onError(undefined, ...args);\n };\n return logger;\n }\n};\n//# sourceMappingURL=LoggerUtil.js.map","import { fallback, http } from 'viem';\nimport { ConstantsUtil } from '@reown/appkit-common';\nimport { ChainController, StorageUtil } from '@reown/appkit-controllers';\nimport { PresetsUtil } from './PresetsUtil.js';\nconst RPC_URL_HOST = 'rpc.walletconnect.org';\nexport function getBlockchainApiRpcUrl(caipNetworkId, projectId) {\n const url = new URL('https://rpc.walletconnect.org/v1/');\n url.searchParams.set('chainId', caipNetworkId);\n url.searchParams.set('projectId', projectId);\n return url.toString();\n}\nconst WC_HTTP_RPC_SUPPORTED_CHAINS = [\n 'near:mainnet',\n 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n 'eip155:1101',\n 'eip155:56',\n 'eip155:42161',\n 'eip155:7777777',\n 'eip155:59144',\n 'eip155:324',\n 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n 'eip155:5000',\n 'solana:4sgjmw1sunhzsxgspuhpqldx6wiyjntz',\n 'eip155:80084',\n 'eip155:5003',\n 'eip155:100',\n 'eip155:8453',\n 'eip155:42220',\n 'eip155:1313161555',\n 'eip155:17000',\n 'eip155:1',\n 'eip155:300',\n 'eip155:1313161554',\n 'eip155:1329',\n 'eip155:84532',\n 'eip155:421614',\n 'eip155:11155111',\n 'eip155:8217',\n 'eip155:43114',\n 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n 'eip155:999999999',\n 'eip155:11155420',\n 'eip155:80002',\n 'eip155:97',\n 'eip155:43113',\n 'eip155:137',\n 'eip155:10',\n 'eip155:1301',\n 'bip122:000000000019d6689c085ae165831e93',\n 'bip122:000000000933ea01ad0ee984209779ba'\n];\nexport const CaipNetworksUtil = {\n extendRpcUrlWithProjectId(rpcUrl, projectId) {\n let isReownUrl = false;\n try {\n const url = new URL(rpcUrl);\n isReownUrl = url.host === RPC_URL_HOST;\n }\n catch (e) {\n isReownUrl = false;\n }\n if (isReownUrl) {\n const url = new URL(rpcUrl);\n if (!url.searchParams.has('projectId')) {\n url.searchParams.set('projectId', projectId);\n }\n return url.toString();\n }\n return rpcUrl;\n },\n isCaipNetwork(network) {\n return 'chainNamespace' in network && 'caipNetworkId' in network;\n },\n getChainNamespace(network) {\n if (this.isCaipNetwork(network)) {\n return network.chainNamespace;\n }\n return ConstantsUtil.CHAIN.EVM;\n },\n getCaipNetworkId(network) {\n if (this.isCaipNetwork(network)) {\n return network.caipNetworkId;\n }\n return `${ConstantsUtil.CHAIN.EVM}:${network.id}`;\n },\n getDefaultRpcUrl(caipNetwork, caipNetworkId, projectId) {\n const defaultRpcUrl = caipNetwork.rpcUrls?.default?.http?.[0];\n if (WC_HTTP_RPC_SUPPORTED_CHAINS.includes(caipNetworkId)) {\n return getBlockchainApiRpcUrl(caipNetworkId, projectId);\n }\n return defaultRpcUrl || '';\n },\n extendCaipNetwork(caipNetwork, { customNetworkImageUrls, projectId, customRpcUrls }) {\n const chainNamespace = this.getChainNamespace(caipNetwork);\n const caipNetworkId = this.getCaipNetworkId(caipNetwork);\n const networkDefaultRpcUrl = caipNetwork.rpcUrls?.default?.http?.[0];\n const reownRpcUrl = this.getDefaultRpcUrl(caipNetwork, caipNetworkId, projectId);\n const chainDefaultRpcUrl = caipNetwork?.rpcUrls?.['chainDefault']?.http?.[0] || networkDefaultRpcUrl;\n const customRpcUrlsOfNetwork = customRpcUrls?.[caipNetworkId]?.map(i => i.url) || [];\n const rpcUrls = [...customRpcUrlsOfNetwork, ...(reownRpcUrl ? [reownRpcUrl] : [])];\n const rpcUrlsWithoutReown = [...customRpcUrlsOfNetwork];\n if (chainDefaultRpcUrl && !rpcUrlsWithoutReown.includes(chainDefaultRpcUrl)) {\n rpcUrlsWithoutReown.push(chainDefaultRpcUrl);\n }\n return {\n ...caipNetwork,\n chainNamespace,\n caipNetworkId,\n assets: {\n imageId: PresetsUtil.NetworkImageIds[caipNetwork.id],\n imageUrl: customNetworkImageUrls?.[caipNetwork.id]\n },\n rpcUrls: {\n ...caipNetwork.rpcUrls,\n default: {\n http: rpcUrls\n },\n chainDefault: {\n http: rpcUrlsWithoutReown\n }\n }\n };\n },\n extendCaipNetworks(caipNetworks, { customNetworkImageUrls, projectId, customRpcUrls }) {\n return caipNetworks.map(caipNetwork => CaipNetworksUtil.extendCaipNetwork(caipNetwork, {\n customNetworkImageUrls,\n customRpcUrls,\n projectId\n }));\n },\n getViemTransport(caipNetwork, projectId, customRpcUrls) {\n const transports = [];\n customRpcUrls?.forEach(rpcUrl => {\n transports.push(http(rpcUrl.url, rpcUrl.config));\n });\n if (WC_HTTP_RPC_SUPPORTED_CHAINS.includes(caipNetwork.caipNetworkId)) {\n transports.push(http(getBlockchainApiRpcUrl(caipNetwork.caipNetworkId, projectId), {\n fetchOptions: {\n headers: {\n 'Content-Type': 'text/plain'\n }\n }\n }));\n }\n caipNetwork?.rpcUrls?.default?.http?.forEach(rpcUrl => {\n transports.push(http(rpcUrl));\n });\n return fallback(transports);\n },\n extendWagmiTransports(caipNetwork, projectId, transport) {\n if (WC_HTTP_RPC_SUPPORTED_CHAINS.includes(caipNetwork.caipNetworkId)) {\n const reownRpcUrl = this.getDefaultRpcUrl(caipNetwork, caipNetwork.caipNetworkId, projectId);\n return fallback([transport, http(reownRpcUrl)]);\n }\n return transport;\n },\n getUnsupportedNetwork(caipNetworkId) {\n return {\n id: caipNetworkId.split(':')[1],\n caipNetworkId,\n name: ConstantsUtil.UNSUPPORTED_NETWORK_NAME,\n chainNamespace: caipNetworkId.split(':')[0],\n nativeCurrency: {\n name: '',\n decimals: 0,\n symbol: ''\n },\n rpcUrls: {\n default: {\n http: []\n }\n }\n };\n },\n getCaipNetworkFromStorage(defaultCaipNetwork) {\n const caipNetworkIdFromStorage = StorageUtil.getActiveCaipNetworkId();\n const caipNetworks = ChainController.getAllRequestedCaipNetworks();\n const availableNamespaces = Array.from(ChainController.state.chains?.keys() || []);\n const namespace = caipNetworkIdFromStorage?.split(':')[0];\n const isNamespaceAvailable = namespace ? availableNamespaces.includes(namespace) : false;\n const caipNetwork = caipNetworks?.find(cn => cn.caipNetworkId === caipNetworkIdFromStorage);\n const isUnsupportedNetwork = isNamespaceAvailable && !caipNetwork && caipNetworkIdFromStorage;\n if (isUnsupportedNetwork) {\n return this.getUnsupportedNetwork(caipNetworkIdFromStorage);\n }\n if (caipNetwork) {\n return caipNetwork;\n }\n if (defaultCaipNetwork) {\n return defaultCaipNetwork;\n }\n return caipNetworks?.[0];\n }\n};\n//# sourceMappingURL=CaipNetworkUtil.js.map","import { proxy, ref, subscribe } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nconst CLEAN_PROVIDERS_STATE = {\n eip155: undefined,\n solana: undefined,\n polkadot: undefined,\n bip122: undefined,\n cosmos: undefined,\n sui: undefined,\n stacks: undefined\n};\nconst state = proxy({\n providers: { ...CLEAN_PROVIDERS_STATE },\n providerIds: { ...CLEAN_PROVIDERS_STATE }\n});\nexport const ProviderUtil = {\n state,\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n subscribe(callback) {\n return subscribe(state, () => {\n callback(state);\n });\n },\n subscribeProviders(callback) {\n return subscribe(state.providers, () => callback(state.providers));\n },\n setProvider(chainNamespace, provider) {\n if (chainNamespace && provider) {\n state.providers[chainNamespace] = ref(provider);\n }\n },\n getProvider(chainNamespace) {\n if (!chainNamespace) {\n return undefined;\n }\n return state.providers[chainNamespace];\n },\n setProviderId(chainNamespace, providerId) {\n if (providerId) {\n state.providerIds[chainNamespace] = providerId;\n }\n },\n getProviderId(chainNamespace) {\n if (!chainNamespace) {\n return undefined;\n }\n return state.providerIds[chainNamespace];\n },\n reset() {\n state.providers = { ...CLEAN_PROVIDERS_STATE };\n state.providerIds = { ...CLEAN_PROVIDERS_STATE };\n },\n resetChain(chainNamespace) {\n state.providers[chainNamespace] = undefined;\n state.providerIds[chainNamespace] = undefined;\n }\n};\n//# sourceMappingURL=ProviderUtil.js.map","export const ConstantsUtil = {\n ACCOUNT_TABS: [{ label: 'Tokens' }, { label: 'NFTs' }, { label: 'Activity' }],\n SECURE_SITE_ORIGIN: (typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? process.env['NEXT_PUBLIC_SECURE_SITE_ORIGIN']\n : undefined) || 'https://secure.walletconnect.org',\n VIEW_DIRECTION: {\n Next: 'next',\n Prev: 'prev'\n },\n DEFAULT_CONNECT_METHOD_ORDER: ['email', 'social', 'wallet'],\n ANIMATION_DURATIONS: {\n HeaderText: 120,\n ModalHeight: 150,\n ViewTransition: 150\n }\n};\n//# sourceMappingURL=ConstantsUtil.js.map","import { ApiController, ConnectorController, CoreHelperUtil, OptionsController, StorageUtil } from '@reown/appkit-controllers';\nimport { HelpersUtil } from '@reown/appkit-utils';\nimport { ConnectorUtil } from './ConnectorUtil.js';\nimport { ConstantsUtil } from './ConstantsUtil.js';\nexport const WalletUtil = {\n filterOutDuplicatesByRDNS(wallets) {\n const connectors = OptionsController.state.enableEIP6963\n ? ConnectorController.state.connectors\n : [];\n const recent = StorageUtil.getRecentWallets();\n const connectorRDNSs = connectors\n .map(connector => connector.info?.rdns)\n .filter(Boolean);\n const recentRDNSs = recent.map(wallet => wallet.rdns).filter(Boolean);\n const allRDNSs = connectorRDNSs.concat(recentRDNSs);\n if (allRDNSs.includes('io.metamask.mobile') && CoreHelperUtil.isMobile()) {\n const index = allRDNSs.indexOf('io.metamask.mobile');\n allRDNSs[index] = 'io.metamask';\n }\n const filtered = wallets.filter(wallet => {\n if (wallet?.rdns && allRDNSs.includes(String(wallet.rdns))) {\n return false;\n }\n if (!wallet?.rdns) {\n const hasMatchingConnectorName = connectors.some(connector => connector.name === wallet.name);\n if (hasMatchingConnectorName) {\n return false;\n }\n }\n return true;\n });\n return filtered;\n },\n filterOutDuplicatesByIds(wallets) {\n const connectors = ConnectorController.state.connectors.filter(connector => connector.type === 'ANNOUNCED' || connector.type === 'INJECTED');\n const recent = StorageUtil.getRecentWallets();\n const connectorIds = connectors.map(connector => connector.explorerId);\n const recentIds = recent.map(wallet => wallet.id);\n const allIds = connectorIds.concat(recentIds);\n const filtered = wallets.filter(wallet => !allIds.includes(wallet?.id));\n return filtered;\n },\n filterOutDuplicateWallets(wallets) {\n const uniqueByRDNS = this.filterOutDuplicatesByRDNS(wallets);\n const uniqueWallets = this.filterOutDuplicatesByIds(uniqueByRDNS);\n return uniqueWallets;\n },\n markWalletsAsInstalled(wallets) {\n const { connectors } = ConnectorController.state;\n const { featuredWalletIds } = OptionsController.state;\n const installedWalletRdnsMap = connectors\n .filter(connector => connector.type === 'ANNOUNCED')\n .reduce((rdnsMap, connector) => {\n if (!connector.info?.rdns) {\n return rdnsMap;\n }\n rdnsMap[connector.info.rdns] = true;\n return rdnsMap;\n }, {});\n const walletsWithInstallationStatus = wallets.map(wallet => ({\n ...wallet,\n installed: Boolean(wallet.rdns) && Boolean(installedWalletRdnsMap[wallet.rdns ?? ''])\n }));\n const sortedWallets = walletsWithInstallationStatus.sort((walletA, walletB) => {\n const installationComparison = Number(walletB.installed) - Number(walletA.installed);\n if (installationComparison !== 0) {\n return installationComparison;\n }\n if (featuredWalletIds?.length) {\n const walletAFeaturedIndex = featuredWalletIds.indexOf(walletA.id);\n const walletBFeaturedIndex = featuredWalletIds.indexOf(walletB.id);\n if (walletAFeaturedIndex !== -1 && walletBFeaturedIndex !== -1) {\n return walletAFeaturedIndex - walletBFeaturedIndex;\n }\n if (walletAFeaturedIndex !== -1) {\n return -1;\n }\n if (walletBFeaturedIndex !== -1) {\n return 1;\n }\n }\n return 0;\n });\n return sortedWallets;\n },\n getConnectOrderMethod(_features, _connectors) {\n const connectMethodOrder = _features?.connectMethodsOrder || OptionsController.state.features?.connectMethodsOrder;\n const connectors = _connectors || ConnectorController.state.connectors;\n if (connectMethodOrder) {\n return connectMethodOrder;\n }\n const { injected, announced } = ConnectorUtil.getConnectorsByType(connectors, ApiController.state.recommended, ApiController.state.featured);\n const shownInjected = injected.filter(ConnectorUtil.showConnector);\n const shownAnnounced = announced.filter(ConnectorUtil.showConnector);\n if (shownInjected.length || shownAnnounced.length) {\n return ['wallet', 'email', 'social'];\n }\n return ConstantsUtil.DEFAULT_CONNECT_METHOD_ORDER;\n },\n isExcluded(wallet) {\n const isRDNSExcluded = Boolean(wallet.rdns) && ApiController.state.excludedWallets.some(w => w.rdns === wallet.rdns);\n const isNameExcluded = Boolean(wallet.name) &&\n ApiController.state.excludedWallets.some(w => HelpersUtil.isLowerCaseMatch(w.name, wallet.name));\n return isRDNSExcluded || isNameExcluded;\n },\n markWalletsWithDisplayIndex(wallets) {\n return wallets.map((w, index) => ({ ...w, display_index: index }));\n }\n};\n//# sourceMappingURL=WalletUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { ApiController, ChainController, ConnectionController, ConnectorController, CoreHelperUtil, OptionsController, StorageUtil } from '@reown/appkit-controllers';\nimport { HelpersUtil } from '@reown/appkit-utils';\nimport { WalletUtil } from './WalletUtil.js';\nexport const ConnectorUtil = {\n getConnectorsByType(connectors, recommended, featured) {\n const { customWallets } = OptionsController.state;\n const recent = StorageUtil.getRecentWallets();\n const filteredRecommended = WalletUtil.filterOutDuplicateWallets(recommended);\n const filteredFeatured = WalletUtil.filterOutDuplicateWallets(featured);\n const multiChain = connectors.filter(connector => connector.type === 'MULTI_CHAIN');\n const announced = connectors.filter(connector => connector.type === 'ANNOUNCED');\n const injected = connectors.filter(connector => connector.type === 'INJECTED');\n const external = connectors.filter(connector => connector.type === 'EXTERNAL');\n return {\n custom: customWallets,\n recent,\n external,\n multiChain,\n announced,\n injected,\n recommended: filteredRecommended,\n featured: filteredFeatured\n };\n },\n showConnector(connector) {\n const rdns = connector.info?.rdns;\n const isRDNSExcluded = Boolean(rdns) &&\n ApiController.state.excludedWallets.some(wallet => Boolean(wallet.rdns) && wallet.rdns === rdns);\n const isNameExcluded = Boolean(connector.name) &&\n ApiController.state.excludedWallets.some(wallet => HelpersUtil.isLowerCaseMatch(wallet.name, connector.name));\n if (connector.type === 'INJECTED') {\n const isBrowserWallet = connector.name === 'Browser Wallet';\n if (isBrowserWallet) {\n if (!CoreHelperUtil.isMobile()) {\n return false;\n }\n if (CoreHelperUtil.isMobile() && !rdns && !ConnectionController.checkInstalled()) {\n return false;\n }\n }\n if (isRDNSExcluded || isNameExcluded) {\n return false;\n }\n }\n if ((connector.type === 'ANNOUNCED' || connector.type === 'EXTERNAL') &&\n (isRDNSExcluded || isNameExcluded)) {\n return false;\n }\n return true;\n },\n getIsConnectedWithWC() {\n const chains = Array.from(ChainController.state.chains.values());\n const isConnectedWithWC = chains.some(chain => {\n const connectorId = ConnectorController.getConnectorId(chain.namespace);\n return connectorId === CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n });\n return isConnectedWithWC;\n },\n getConnectorTypeOrder({ recommended, featured, custom, recent, announced, injected, multiChain, external, overriddenConnectors = OptionsController.state.features?.connectorTypeOrder ?? [] }) {\n const isWCEnabled = OptionsController.state.enableWalletConnect;\n const allConnectors = [\n { type: 'walletConnect', isEnabled: isWCEnabled },\n { type: 'recent', isEnabled: recent.length > 0 },\n { type: 'injected', isEnabled: [...injected, ...announced, ...multiChain].length > 0 },\n { type: 'featured', isEnabled: featured.length > 0 },\n { type: 'custom', isEnabled: custom && custom.length > 0 },\n { type: 'external', isEnabled: external.length > 0 },\n { type: 'recommended', isEnabled: recommended.length > 0 }\n ];\n const enabledConnectors = allConnectors.filter(option => option.isEnabled);\n const enabledConnectorTypes = new Set(enabledConnectors.map(option => option.type));\n const prioritizedConnectors = overriddenConnectors\n .filter(type => enabledConnectorTypes.has(type))\n .map(type => ({ type, isEnabled: true }));\n const remainingConnectors = enabledConnectors.filter(({ type: enabledConnectorType }) => {\n const hasPrioritizedConnector = prioritizedConnectors.some(({ type: prioritizedConnectorType }) => prioritizedConnectorType === enabledConnectorType);\n return !hasPrioritizedConnector;\n });\n return Array.from(new Set([...prioritizedConnectors, ...remainingConnectors].map(({ type }) => type)));\n },\n getAuthName({ email, socialUsername, socialProvider }) {\n if (socialUsername) {\n if (socialProvider && socialProvider === 'discord' && socialUsername.endsWith('0')) {\n return socialUsername.slice(0, -1);\n }\n return socialUsername;\n }\n return email.length > 30 ? `${email.slice(0, -3)}...` : email;\n },\n async fetchProviderData(connector) {\n try {\n if (connector.name === 'Browser Wallet' && !CoreHelperUtil.isMobile()) {\n return { accounts: [], chainId: undefined };\n }\n if (connector.id === CommonConstantsUtil.CONNECTOR_ID.AUTH) {\n return { accounts: [], chainId: undefined };\n }\n const [accounts, chainId] = await Promise.all([\n connector.provider?.request({ method: 'eth_accounts' }),\n connector.provider\n ?.request({ method: 'eth_chainId' })\n .then(hexChainId => Number(hexChainId))\n ]);\n return { accounts, chainId };\n }\n catch (err) {\n console.warn(`Failed to fetch provider data for ${connector.name}`, err);\n return { accounts: [], chainId: undefined };\n }\n }\n};\n//# sourceMappingURL=ConnectorUtil.js.map","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.1\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"\":3===i?\"\":\"\",c=f;for(let i=0;i\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"\")+(2===i?\"\":3===i?\"\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.1\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","import { css, unsafeCSS } from 'lit';\nimport { getW3mThemeVariables } from '@reown/appkit-common';\nlet themeTag = undefined;\nlet darkModeTag = undefined;\nlet lightModeTag = undefined;\nexport function initializeTheming(themeVariables, themeMode) {\n themeTag = document.createElement('style');\n darkModeTag = document.createElement('style');\n lightModeTag = document.createElement('style');\n themeTag.textContent = createRootStyles(themeVariables).core.cssText;\n darkModeTag.textContent = createRootStyles(themeVariables).dark.cssText;\n lightModeTag.textContent = createRootStyles(themeVariables).light.cssText;\n document.head.appendChild(themeTag);\n document.head.appendChild(darkModeTag);\n document.head.appendChild(lightModeTag);\n setColorTheme(themeMode);\n}\nexport function setColorTheme(themeMode) {\n if (darkModeTag && lightModeTag) {\n if (themeMode === 'light') {\n darkModeTag.removeAttribute('media');\n lightModeTag.media = 'enabled';\n }\n else {\n lightModeTag.removeAttribute('media');\n darkModeTag.media = 'enabled';\n }\n }\n}\nexport function setThemeVariables(themeVariables) {\n if (themeTag && darkModeTag && lightModeTag) {\n themeTag.textContent = createRootStyles(themeVariables).core.cssText;\n darkModeTag.textContent = createRootStyles(themeVariables).dark.cssText;\n lightModeTag.textContent = createRootStyles(themeVariables).light.cssText;\n }\n}\nfunction createRootStyles(themeVariables) {\n return {\n core: css `\n @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');\n @keyframes w3m-shake {\n 0% {\n transform: scale(1) rotate(0deg);\n }\n 20% {\n transform: scale(1) rotate(-1deg);\n }\n 40% {\n transform: scale(1) rotate(1.5deg);\n }\n 60% {\n transform: scale(1) rotate(-1.5deg);\n }\n 80% {\n transform: scale(1) rotate(1deg);\n }\n 100% {\n transform: scale(1) rotate(0deg);\n }\n }\n @keyframes w3m-iframe-fade-out {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n @keyframes w3m-iframe-zoom-in {\n 0% {\n transform: translateY(50px);\n opacity: 0;\n }\n 100% {\n transform: translateY(0px);\n opacity: 1;\n }\n }\n @keyframes w3m-iframe-zoom-in-mobile {\n 0% {\n transform: scale(0.95);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n :root {\n --w3m-modal-width: 360px;\n --w3m-color-mix-strength: ${unsafeCSS(themeVariables?.['--w3m-color-mix-strength']\n ? `${themeVariables['--w3m-color-mix-strength']}%`\n : '0%')};\n --w3m-font-family: ${unsafeCSS(themeVariables?.['--w3m-font-family'] ||\n 'Inter, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;')};\n --w3m-font-size-master: ${unsafeCSS(themeVariables?.['--w3m-font-size-master'] || '10px')};\n --w3m-border-radius-master: ${unsafeCSS(themeVariables?.['--w3m-border-radius-master'] || '4px')};\n --w3m-z-index: ${unsafeCSS(themeVariables?.['--w3m-z-index'] || 999)};\n\n --wui-font-family: var(--w3m-font-family);\n\n --wui-font-size-mini: calc(var(--w3m-font-size-master) * 0.8);\n --wui-font-size-micro: var(--w3m-font-size-master);\n --wui-font-size-tiny: calc(var(--w3m-font-size-master) * 1.2);\n --wui-font-size-small: calc(var(--w3m-font-size-master) * 1.4);\n --wui-font-size-paragraph: calc(var(--w3m-font-size-master) * 1.6);\n --wui-font-size-medium: calc(var(--w3m-font-size-master) * 1.8);\n --wui-font-size-large: calc(var(--w3m-font-size-master) * 2);\n --wui-font-size-title-6: calc(var(--w3m-font-size-master) * 2.2);\n --wui-font-size-medium-title: calc(var(--w3m-font-size-master) * 2.4);\n --wui-font-size-2xl: calc(var(--w3m-font-size-master) * 4);\n\n --wui-border-radius-5xs: var(--w3m-border-radius-master);\n --wui-border-radius-4xs: calc(var(--w3m-border-radius-master) * 1.5);\n --wui-border-radius-3xs: calc(var(--w3m-border-radius-master) * 2);\n --wui-border-radius-xxs: calc(var(--w3m-border-radius-master) * 3);\n --wui-border-radius-xs: calc(var(--w3m-border-radius-master) * 4);\n --wui-border-radius-s: calc(var(--w3m-border-radius-master) * 5);\n --wui-border-radius-m: calc(var(--w3m-border-radius-master) * 7);\n --wui-border-radius-l: calc(var(--w3m-border-radius-master) * 9);\n --wui-border-radius-3xl: calc(var(--w3m-border-radius-master) * 20);\n\n --wui-font-weight-light: 400;\n --wui-font-weight-regular: 500;\n --wui-font-weight-medium: 600;\n --wui-font-weight-bold: 700;\n\n --wui-letter-spacing-2xl: -1.6px;\n --wui-letter-spacing-medium-title: -0.96px;\n --wui-letter-spacing-title-6: -0.88px;\n --wui-letter-spacing-large: -0.8px;\n --wui-letter-spacing-medium: -0.72px;\n --wui-letter-spacing-paragraph: -0.64px;\n --wui-letter-spacing-small: -0.56px;\n --wui-letter-spacing-tiny: -0.48px;\n --wui-letter-spacing-micro: -0.2px;\n --wui-letter-spacing-mini: -0.16px;\n\n --wui-spacing-0: 0px;\n --wui-spacing-4xs: 2px;\n --wui-spacing-3xs: 4px;\n --wui-spacing-xxs: 6px;\n --wui-spacing-2xs: 7px;\n --wui-spacing-xs: 8px;\n --wui-spacing-1xs: 10px;\n --wui-spacing-s: 12px;\n --wui-spacing-m: 14px;\n --wui-spacing-l: 16px;\n --wui-spacing-2l: 18px;\n --wui-spacing-xl: 20px;\n --wui-spacing-xxl: 24px;\n --wui-spacing-2xl: 32px;\n --wui-spacing-3xl: 40px;\n --wui-spacing-4xl: 90px;\n --wui-spacing-5xl: 95px;\n\n --wui-icon-box-size-xxs: 14px;\n --wui-icon-box-size-xs: 20px;\n --wui-icon-box-size-sm: 24px;\n --wui-icon-box-size-md: 32px;\n --wui-icon-box-size-mdl: 36px;\n --wui-icon-box-size-lg: 40px;\n --wui-icon-box-size-2lg: 48px;\n --wui-icon-box-size-xl: 64px;\n\n --wui-icon-size-inherit: inherit;\n --wui-icon-size-xxs: 10px;\n --wui-icon-size-xs: 12px;\n --wui-icon-size-sm: 14px;\n --wui-icon-size-md: 16px;\n --wui-icon-size-mdl: 18px;\n --wui-icon-size-lg: 20px;\n --wui-icon-size-xl: 24px;\n --wui-icon-size-xxl: 28px;\n\n --wui-wallet-image-size-inherit: inherit;\n --wui-wallet-image-size-sm: 40px;\n --wui-wallet-image-size-md: 56px;\n --wui-wallet-image-size-lg: 80px;\n\n --wui-visual-size-size-inherit: inherit;\n --wui-visual-size-sm: 40px;\n --wui-visual-size-md: 55px;\n --wui-visual-size-lg: 80px;\n\n --wui-box-size-md: 100px;\n --wui-box-size-lg: 120px;\n\n --wui-ease-out-power-2: cubic-bezier(0, 0, 0.22, 1);\n --wui-ease-out-power-1: cubic-bezier(0, 0, 0.55, 1);\n\n --wui-ease-in-power-3: cubic-bezier(0.66, 0, 1, 1);\n --wui-ease-in-power-2: cubic-bezier(0.45, 0, 1, 1);\n --wui-ease-in-power-1: cubic-bezier(0.3, 0, 1, 1);\n\n --wui-ease-inout-power-1: cubic-bezier(0.45, 0, 0.55, 1);\n\n --wui-duration-lg: 200ms;\n --wui-duration-md: 125ms;\n --wui-duration-sm: 75ms;\n\n --wui-path-network-sm: path(\n 'M15.4 2.1a5.21 5.21 0 0 1 5.2 0l11.61 6.7a5.21 5.21 0 0 1 2.61 4.52v13.4c0 1.87-1 3.59-2.6 4.52l-11.61 6.7c-1.62.93-3.6.93-5.22 0l-11.6-6.7a5.21 5.21 0 0 1-2.61-4.51v-13.4c0-1.87 1-3.6 2.6-4.52L15.4 2.1Z'\n );\n\n --wui-path-network-md: path(\n 'M43.4605 10.7248L28.0485 1.61089C25.5438 0.129705 22.4562 0.129705 19.9515 1.61088L4.53951 10.7248C2.03626 12.2051 0.5 14.9365 0.5 17.886V36.1139C0.5 39.0635 2.03626 41.7949 4.53951 43.2752L19.9515 52.3891C22.4562 53.8703 25.5438 53.8703 28.0485 52.3891L43.4605 43.2752C45.9637 41.7949 47.5 39.0635 47.5 36.114V17.8861C47.5 14.9365 45.9637 12.2051 43.4605 10.7248Z'\n );\n\n --wui-path-network-lg: path(\n 'M78.3244 18.926L50.1808 2.45078C45.7376 -0.150261 40.2624 -0.150262 35.8192 2.45078L7.6756 18.926C3.23322 21.5266 0.5 26.3301 0.5 31.5248V64.4752C0.5 69.6699 3.23322 74.4734 7.6756 77.074L35.8192 93.5492C40.2624 96.1503 45.7376 96.1503 50.1808 93.5492L78.3244 77.074C82.7668 74.4734 85.5 69.6699 85.5 64.4752V31.5248C85.5 26.3301 82.7668 21.5266 78.3244 18.926Z'\n );\n\n --wui-width-network-sm: 36px;\n --wui-width-network-md: 48px;\n --wui-width-network-lg: 86px;\n\n --wui-height-network-sm: 40px;\n --wui-height-network-md: 54px;\n --wui-height-network-lg: 96px;\n\n --wui-icon-size-network-xs: 12px;\n --wui-icon-size-network-sm: 16px;\n --wui-icon-size-network-md: 24px;\n --wui-icon-size-network-lg: 42px;\n\n --wui-color-inherit: inherit;\n\n --wui-color-inverse-100: #fff;\n --wui-color-inverse-000: #000;\n\n --wui-cover: rgba(20, 20, 20, 0.8);\n\n --wui-color-modal-bg: var(--wui-color-modal-bg-base);\n\n --wui-color-accent-100: var(--wui-color-accent-base-100);\n --wui-color-accent-090: var(--wui-color-accent-base-090);\n --wui-color-accent-080: var(--wui-color-accent-base-080);\n\n --wui-color-success-100: var(--wui-color-success-base-100);\n --wui-color-success-125: var(--wui-color-success-base-125);\n\n --wui-color-warning-100: var(--wui-color-warning-base-100);\n\n --wui-color-error-100: var(--wui-color-error-base-100);\n --wui-color-error-125: var(--wui-color-error-base-125);\n\n --wui-color-blue-100: var(--wui-color-blue-base-100);\n --wui-color-blue-90: var(--wui-color-blue-base-90);\n\n --wui-icon-box-bg-error-100: var(--wui-icon-box-bg-error-base-100);\n --wui-icon-box-bg-blue-100: var(--wui-icon-box-bg-blue-base-100);\n --wui-icon-box-bg-success-100: var(--wui-icon-box-bg-success-base-100);\n --wui-icon-box-bg-inverse-100: var(--wui-icon-box-bg-inverse-base-100);\n\n --wui-all-wallets-bg-100: var(--wui-all-wallets-bg-100);\n\n --wui-avatar-border: var(--wui-avatar-border-base);\n\n --wui-thumbnail-border: var(--wui-thumbnail-border-base);\n\n --wui-wallet-button-bg: var(--wui-wallet-button-bg-base);\n\n --wui-box-shadow-blue: var(--wui-color-accent-glass-020);\n }\n\n @supports (background: color-mix(in srgb, white 50%, black)) {\n :root {\n --wui-color-modal-bg: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-modal-bg-base)\n );\n\n --wui-box-shadow-blue: color-mix(in srgb, var(--wui-color-accent-100) 20%, transparent);\n\n --wui-color-accent-100: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 100%,\n transparent\n );\n --wui-color-accent-090: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 90%,\n transparent\n );\n --wui-color-accent-080: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 80%,\n transparent\n );\n --wui-color-accent-glass-090: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 90%,\n transparent\n );\n --wui-color-accent-glass-080: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 80%,\n transparent\n );\n --wui-color-accent-glass-020: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 20%,\n transparent\n );\n --wui-color-accent-glass-015: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 15%,\n transparent\n );\n --wui-color-accent-glass-010: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 10%,\n transparent\n );\n --wui-color-accent-glass-005: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 5%,\n transparent\n );\n --wui-color-accent-002: color-mix(\n in srgb,\n var(--wui-color-accent-base-100) 2%,\n transparent\n );\n\n --wui-color-fg-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-100)\n );\n --wui-color-fg-125: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-125)\n );\n --wui-color-fg-150: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-150)\n );\n --wui-color-fg-175: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-175)\n );\n --wui-color-fg-200: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-200)\n );\n --wui-color-fg-225: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-225)\n );\n --wui-color-fg-250: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-250)\n );\n --wui-color-fg-275: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-275)\n );\n --wui-color-fg-300: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-300)\n );\n --wui-color-fg-325: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-325)\n );\n --wui-color-fg-350: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-fg-350)\n );\n\n --wui-color-bg-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-100)\n );\n --wui-color-bg-125: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-125)\n );\n --wui-color-bg-150: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-150)\n );\n --wui-color-bg-175: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-175)\n );\n --wui-color-bg-200: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-200)\n );\n --wui-color-bg-225: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-225)\n );\n --wui-color-bg-250: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-250)\n );\n --wui-color-bg-275: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-275)\n );\n --wui-color-bg-300: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-300)\n );\n --wui-color-bg-325: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-325)\n );\n --wui-color-bg-350: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-bg-350)\n );\n\n --wui-color-success-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-success-base-100)\n );\n --wui-color-success-125: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-success-base-125)\n );\n\n --wui-color-warning-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-warning-base-100)\n );\n\n --wui-color-error-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-error-base-100)\n );\n --wui-color-blue-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-blue-base-100)\n );\n --wui-color-blue-90: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-blue-base-90)\n );\n --wui-color-error-125: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-color-error-base-125)\n );\n\n --wui-icon-box-bg-error-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-icon-box-bg-error-base-100)\n );\n --wui-icon-box-bg-accent-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-icon-box-bg-blue-base-100)\n );\n --wui-icon-box-bg-success-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-icon-box-bg-success-base-100)\n );\n --wui-icon-box-bg-inverse-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-icon-box-bg-inverse-base-100)\n );\n\n --wui-all-wallets-bg-100: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-all-wallets-bg-100)\n );\n\n --wui-avatar-border: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-avatar-border-base)\n );\n\n --wui-thumbnail-border: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-thumbnail-border-base)\n );\n\n --wui-wallet-button-bg: color-mix(\n in srgb,\n var(--w3m-color-mix) var(--w3m-color-mix-strength),\n var(--wui-wallet-button-bg-base)\n );\n }\n }\n `,\n light: css `\n :root {\n --w3m-color-mix: ${unsafeCSS(themeVariables?.['--w3m-color-mix'] || '#fff')};\n --w3m-accent: ${unsafeCSS(getW3mThemeVariables(themeVariables, 'dark')['--w3m-accent'])};\n --w3m-default: #fff;\n\n --wui-color-modal-bg-base: ${unsafeCSS(getW3mThemeVariables(themeVariables, 'dark')['--w3m-background'])};\n --wui-color-accent-base-100: var(--w3m-accent);\n\n --wui-color-blueberry-100: hsla(230, 100%, 67%, 1);\n --wui-color-blueberry-090: hsla(231, 76%, 61%, 1);\n --wui-color-blueberry-080: hsla(230, 59%, 55%, 1);\n --wui-color-blueberry-050: hsla(231, 100%, 70%, 0.1);\n\n --wui-color-fg-100: #e4e7e7;\n --wui-color-fg-125: #d0d5d5;\n --wui-color-fg-150: #a8b1b1;\n --wui-color-fg-175: #a8b0b0;\n --wui-color-fg-200: #949e9e;\n --wui-color-fg-225: #868f8f;\n --wui-color-fg-250: #788080;\n --wui-color-fg-275: #788181;\n --wui-color-fg-300: #6e7777;\n --wui-color-fg-325: #9a9a9a;\n --wui-color-fg-350: #363636;\n\n --wui-color-bg-100: #141414;\n --wui-color-bg-125: #191a1a;\n --wui-color-bg-150: #1e1f1f;\n --wui-color-bg-175: #222525;\n --wui-color-bg-200: #272a2a;\n --wui-color-bg-225: #2c3030;\n --wui-color-bg-250: #313535;\n --wui-color-bg-275: #363b3b;\n --wui-color-bg-300: #3b4040;\n --wui-color-bg-325: #252525;\n --wui-color-bg-350: #ffffff;\n\n --wui-color-success-base-100: #26d962;\n --wui-color-success-base-125: #30a46b;\n\n --wui-color-warning-base-100: #f3a13f;\n\n --wui-color-error-base-100: #f25a67;\n --wui-color-error-base-125: #df4a34;\n\n --wui-color-blue-base-100: rgba(102, 125, 255, 1);\n --wui-color-blue-base-90: rgba(102, 125, 255, 0.9);\n\n --wui-color-success-glass-001: rgba(38, 217, 98, 0.01);\n --wui-color-success-glass-002: rgba(38, 217, 98, 0.02);\n --wui-color-success-glass-005: rgba(38, 217, 98, 0.05);\n --wui-color-success-glass-010: rgba(38, 217, 98, 0.1);\n --wui-color-success-glass-015: rgba(38, 217, 98, 0.15);\n --wui-color-success-glass-020: rgba(38, 217, 98, 0.2);\n --wui-color-success-glass-025: rgba(38, 217, 98, 0.25);\n --wui-color-success-glass-030: rgba(38, 217, 98, 0.3);\n --wui-color-success-glass-060: rgba(38, 217, 98, 0.6);\n --wui-color-success-glass-080: rgba(38, 217, 98, 0.8);\n\n --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2);\n\n --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2);\n\n --wui-color-error-glass-001: rgba(242, 90, 103, 0.01);\n --wui-color-error-glass-002: rgba(242, 90, 103, 0.02);\n --wui-color-error-glass-005: rgba(242, 90, 103, 0.05);\n --wui-color-error-glass-010: rgba(242, 90, 103, 0.1);\n --wui-color-error-glass-015: rgba(242, 90, 103, 0.15);\n --wui-color-error-glass-020: rgba(242, 90, 103, 0.2);\n --wui-color-error-glass-025: rgba(242, 90, 103, 0.25);\n --wui-color-error-glass-030: rgba(242, 90, 103, 0.3);\n --wui-color-error-glass-060: rgba(242, 90, 103, 0.6);\n --wui-color-error-glass-080: rgba(242, 90, 103, 0.8);\n\n --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2);\n\n --wui-color-gray-glass-001: rgba(255, 255, 255, 0.01);\n --wui-color-gray-glass-002: rgba(255, 255, 255, 0.02);\n --wui-color-gray-glass-005: rgba(255, 255, 255, 0.05);\n --wui-color-gray-glass-010: rgba(255, 255, 255, 0.1);\n --wui-color-gray-glass-015: rgba(255, 255, 255, 0.15);\n --wui-color-gray-glass-020: rgba(255, 255, 255, 0.2);\n --wui-color-gray-glass-025: rgba(255, 255, 255, 0.25);\n --wui-color-gray-glass-030: rgba(255, 255, 255, 0.3);\n --wui-color-gray-glass-060: rgba(255, 255, 255, 0.6);\n --wui-color-gray-glass-080: rgba(255, 255, 255, 0.8);\n --wui-color-gray-glass-090: rgba(255, 255, 255, 0.9);\n\n --wui-color-dark-glass-100: rgba(42, 42, 42, 1);\n\n --wui-icon-box-bg-error-base-100: #3c2426;\n --wui-icon-box-bg-blue-base-100: #20303f;\n --wui-icon-box-bg-success-base-100: #1f3a28;\n --wui-icon-box-bg-inverse-base-100: #243240;\n\n --wui-all-wallets-bg-100: #222b35;\n\n --wui-avatar-border-base: #252525;\n\n --wui-thumbnail-border-base: #252525;\n\n --wui-wallet-button-bg-base: var(--wui-color-bg-125);\n\n --w3m-card-embedded-shadow-color: rgb(17 17 18 / 25%);\n }\n `,\n dark: css `\n :root {\n --w3m-color-mix: ${unsafeCSS(themeVariables?.['--w3m-color-mix'] || '#000')};\n --w3m-accent: ${unsafeCSS(getW3mThemeVariables(themeVariables, 'light')['--w3m-accent'])};\n --w3m-default: #000;\n\n --wui-color-modal-bg-base: ${unsafeCSS(getW3mThemeVariables(themeVariables, 'light')['--w3m-background'])};\n --wui-color-accent-base-100: var(--w3m-accent);\n\n --wui-color-blueberry-100: hsla(231, 100%, 70%, 1);\n --wui-color-blueberry-090: hsla(231, 97%, 72%, 1);\n --wui-color-blueberry-080: hsla(231, 92%, 74%, 1);\n\n --wui-color-fg-100: #141414;\n --wui-color-fg-125: #2d3131;\n --wui-color-fg-150: #474d4d;\n --wui-color-fg-175: #636d6d;\n --wui-color-fg-200: #798686;\n --wui-color-fg-225: #828f8f;\n --wui-color-fg-250: #8b9797;\n --wui-color-fg-275: #95a0a0;\n --wui-color-fg-300: #9ea9a9;\n --wui-color-fg-325: #9a9a9a;\n --wui-color-fg-350: #d0d0d0;\n\n --wui-color-bg-100: #ffffff;\n --wui-color-bg-125: #f5fafa;\n --wui-color-bg-150: #f3f8f8;\n --wui-color-bg-175: #eef4f4;\n --wui-color-bg-200: #eaf1f1;\n --wui-color-bg-225: #e5eded;\n --wui-color-bg-250: #e1e9e9;\n --wui-color-bg-275: #dce7e7;\n --wui-color-bg-300: #d8e3e3;\n --wui-color-bg-325: #f3f3f3;\n --wui-color-bg-350: #202020;\n\n --wui-color-success-base-100: #26b562;\n --wui-color-success-base-125: #30a46b;\n\n --wui-color-warning-base-100: #f3a13f;\n\n --wui-color-error-base-100: #f05142;\n --wui-color-error-base-125: #df4a34;\n\n --wui-color-blue-base-100: rgba(102, 125, 255, 1);\n --wui-color-blue-base-90: rgba(102, 125, 255, 0.9);\n\n --wui-color-success-glass-001: rgba(38, 181, 98, 0.01);\n --wui-color-success-glass-002: rgba(38, 181, 98, 0.02);\n --wui-color-success-glass-005: rgba(38, 181, 98, 0.05);\n --wui-color-success-glass-010: rgba(38, 181, 98, 0.1);\n --wui-color-success-glass-015: rgba(38, 181, 98, 0.15);\n --wui-color-success-glass-020: rgba(38, 181, 98, 0.2);\n --wui-color-success-glass-025: rgba(38, 181, 98, 0.25);\n --wui-color-success-glass-030: rgba(38, 181, 98, 0.3);\n --wui-color-success-glass-060: rgba(38, 181, 98, 0.6);\n --wui-color-success-glass-080: rgba(38, 181, 98, 0.8);\n\n --wui-color-success-glass-reown-020: rgba(48, 164, 107, 0.2);\n\n --wui-color-warning-glass-reown-020: rgba(243, 161, 63, 0.2);\n\n --wui-color-error-glass-001: rgba(240, 81, 66, 0.01);\n --wui-color-error-glass-002: rgba(240, 81, 66, 0.02);\n --wui-color-error-glass-005: rgba(240, 81, 66, 0.05);\n --wui-color-error-glass-010: rgba(240, 81, 66, 0.1);\n --wui-color-error-glass-015: rgba(240, 81, 66, 0.15);\n --wui-color-error-glass-020: rgba(240, 81, 66, 0.2);\n --wui-color-error-glass-025: rgba(240, 81, 66, 0.25);\n --wui-color-error-glass-030: rgba(240, 81, 66, 0.3);\n --wui-color-error-glass-060: rgba(240, 81, 66, 0.6);\n --wui-color-error-glass-080: rgba(240, 81, 66, 0.8);\n\n --wui-color-error-glass-reown-020: rgba(223, 74, 52, 0.2);\n\n --wui-icon-box-bg-error-base-100: #f4dfdd;\n --wui-icon-box-bg-blue-base-100: #d9ecfb;\n --wui-icon-box-bg-success-base-100: #daf0e4;\n --wui-icon-box-bg-inverse-base-100: #dcecfc;\n\n --wui-all-wallets-bg-100: #e8f1fa;\n\n --wui-avatar-border-base: #f3f4f4;\n\n --wui-thumbnail-border-base: #eaefef;\n\n --wui-wallet-button-bg-base: var(--wui-color-bg-125);\n\n --wui-color-gray-glass-001: rgba(0, 0, 0, 0.01);\n --wui-color-gray-glass-002: rgba(0, 0, 0, 0.02);\n --wui-color-gray-glass-005: rgba(0, 0, 0, 0.05);\n --wui-color-gray-glass-010: rgba(0, 0, 0, 0.1);\n --wui-color-gray-glass-015: rgba(0, 0, 0, 0.15);\n --wui-color-gray-glass-020: rgba(0, 0, 0, 0.2);\n --wui-color-gray-glass-025: rgba(0, 0, 0, 0.25);\n --wui-color-gray-glass-030: rgba(0, 0, 0, 0.3);\n --wui-color-gray-glass-060: rgba(0, 0, 0, 0.6);\n --wui-color-gray-glass-080: rgba(0, 0, 0, 0.8);\n --wui-color-gray-glass-090: rgba(0, 0, 0, 0.9);\n\n --wui-color-dark-glass-100: rgba(233, 233, 233, 1);\n\n --w3m-card-embedded-shadow-color: rgb(224 225 233 / 25%);\n }\n `\n };\n}\nexport const resetStyles = css `\n *,\n *::after,\n *::before,\n :host {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-style: normal;\n text-rendering: optimizeSpeed;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -webkit-tap-highlight-color: transparent;\n font-family: var(--wui-font-family);\n backface-visibility: hidden;\n }\n`;\nexport const elementStyles = css `\n button,\n a {\n cursor: pointer;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n transition:\n color var(--wui-duration-lg) var(--wui-ease-out-power-1),\n background-color var(--wui-duration-lg) var(--wui-ease-out-power-1),\n border var(--wui-duration-lg) var(--wui-ease-out-power-1),\n border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1),\n box-shadow var(--wui-duration-lg) var(--wui-ease-out-power-1);\n will-change: background-color, color, border, box-shadow, border-radius;\n outline: none;\n border: none;\n column-gap: var(--wui-spacing-3xs);\n background-color: transparent;\n text-decoration: none;\n }\n\n wui-flex {\n transition: border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1);\n will-change: border-radius;\n }\n\n button:disabled > wui-wallet-image,\n button:disabled > wui-all-wallets-image,\n button:disabled > wui-network-image,\n button:disabled > wui-image,\n button:disabled > wui-transaction-visual,\n button:disabled > wui-logo {\n filter: grayscale(1);\n }\n\n @media (hover: hover) and (pointer: fine) {\n button:hover:enabled {\n background-color: var(--wui-color-gray-glass-005);\n }\n\n button:active:enabled {\n background-color: var(--wui-color-gray-glass-010);\n }\n }\n\n button:disabled > wui-icon-box {\n opacity: 0.5;\n }\n\n input {\n border: none;\n outline: none;\n appearance: none;\n }\n`;\nexport const colorStyles = css `\n .wui-color-inherit {\n color: var(--wui-color-inherit);\n }\n\n .wui-color-accent-100 {\n color: var(--wui-color-accent-100);\n }\n\n .wui-color-error-100 {\n color: var(--wui-color-error-100);\n }\n\n .wui-color-blue-100 {\n color: var(--wui-color-blue-100);\n }\n\n .wui-color-blue-90 {\n color: var(--wui-color-blue-90);\n }\n\n .wui-color-error-125 {\n color: var(--wui-color-error-125);\n }\n\n .wui-color-success-100 {\n color: var(--wui-color-success-100);\n }\n\n .wui-color-success-125 {\n color: var(--wui-color-success-125);\n }\n\n .wui-color-inverse-100 {\n color: var(--wui-color-inverse-100);\n }\n\n .wui-color-inverse-000 {\n color: var(--wui-color-inverse-000);\n }\n\n .wui-color-fg-100 {\n color: var(--wui-color-fg-100);\n }\n\n .wui-color-fg-200 {\n color: var(--wui-color-fg-200);\n }\n\n .wui-color-fg-300 {\n color: var(--wui-color-fg-300);\n }\n\n .wui-color-fg-325 {\n color: var(--wui-color-fg-325);\n }\n\n .wui-color-fg-350 {\n color: var(--wui-color-fg-350);\n }\n\n .wui-bg-color-inherit {\n background-color: var(--wui-color-inherit);\n }\n\n .wui-bg-color-blue-100 {\n background-color: var(--wui-color-accent-100);\n }\n\n .wui-bg-color-error-100 {\n background-color: var(--wui-color-error-100);\n }\n\n .wui-bg-color-error-125 {\n background-color: var(--wui-color-error-125);\n }\n\n .wui-bg-color-success-100 {\n background-color: var(--wui-color-success-100);\n }\n\n .wui-bg-color-success-125 {\n background-color: var(--wui-color-success-100);\n }\n\n .wui-bg-color-inverse-100 {\n background-color: var(--wui-color-inverse-100);\n }\n\n .wui-bg-color-inverse-000 {\n background-color: var(--wui-color-inverse-000);\n }\n\n .wui-bg-color-fg-100 {\n background-color: var(--wui-color-fg-100);\n }\n\n .wui-bg-color-fg-200 {\n background-color: var(--wui-color-fg-200);\n }\n\n .wui-bg-color-fg-300 {\n background-color: var(--wui-color-fg-300);\n }\n\n .wui-color-fg-325 {\n background-color: var(--wui-color-fg-325);\n }\n\n .wui-color-fg-350 {\n background-color: var(--wui-color-fg-350);\n }\n`;\n//# sourceMappingURL=ThemeUtil.js.map","import { PresetsUtil } from '../PresetsUtil.js';\nexport const EthersHelpersUtil = {\n hexStringToNumber(value) {\n const string = value.startsWith('0x') ? value.slice(2) : value;\n const number = parseInt(string, 16);\n return number;\n },\n numberToHexString(value) {\n return `0x${value.toString(16)}`;\n },\n async getUserInfo(provider) {\n const [addresses, chainId] = await Promise.all([\n EthersHelpersUtil.getAddresses(provider),\n EthersHelpersUtil.getChainId(provider)\n ]);\n return { chainId, addresses };\n },\n async getChainId(provider) {\n const chainId = await provider.request({ method: 'eth_chainId' });\n return Number(chainId);\n },\n async getAddress(provider) {\n const [address] = await provider.request({ method: 'eth_accounts' });\n return address;\n },\n async getAddresses(provider) {\n const addresses = await provider.request({ method: 'eth_accounts' });\n return addresses;\n },\n async addEthereumChain(provider, caipNetwork) {\n const rpcUrls = caipNetwork.rpcUrls['chainDefault']?.http || [];\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: EthersHelpersUtil.numberToHexString(caipNetwork.id),\n rpcUrls: [...rpcUrls],\n chainName: caipNetwork.name,\n nativeCurrency: {\n name: caipNetwork.nativeCurrency.name,\n decimals: caipNetwork.nativeCurrency.decimals,\n symbol: caipNetwork.nativeCurrency.symbol\n },\n blockExplorerUrls: [caipNetwork.blockExplorers?.default.url],\n iconUrls: [PresetsUtil.NetworkImageIds[caipNetwork.id]]\n }\n ]\n });\n }\n};\n//# sourceMappingURL=EthersHelpersUtil.js.map","export const BitcoinConstantsUtil = {\n ACCOUNT_INDEXES: {\n PAYMENT: 0,\n ORDINAL: 1\n }\n};\n//# sourceMappingURL=BitcoinConstantsUtil.js.map","export function defineChain(chain) {\n return {\n formatters: undefined,\n fees: undefined,\n serializers: undefined,\n ...chain\n };\n}\n//# sourceMappingURL=utils.js.map","import { defineChain } from '../utils.js';\nexport const solana = defineChain({\n id: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n name: 'Solana',\n network: 'solana-mainnet',\n nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 },\n rpcUrls: {\n default: { http: ['https://rpc.walletconnect.org/v1'] }\n },\n blockExplorers: { default: { name: 'Solscan', url: 'https://solscan.io' } },\n testnet: false,\n chainNamespace: 'solana',\n caipNetworkId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n deprecatedCaipNetworkId: 'solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ'\n});\n//# sourceMappingURL=solana.js.map","import { defineChain } from '../utils.js';\nexport const solanaDevnet = defineChain({\n id: 'EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n name: 'Solana Devnet',\n network: 'solana-devnet',\n nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 },\n rpcUrls: {\n default: { http: ['https://rpc.walletconnect.org/v1'] }\n },\n blockExplorers: { default: { name: 'Solscan', url: 'https://solscan.io' } },\n testnet: true,\n chainNamespace: 'solana',\n caipNetworkId: 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n deprecatedCaipNetworkId: 'solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K'\n});\n//# sourceMappingURL=solanaDevnet.js.map","import { defineChain } from '../utils.js';\nexport const solanaTestnet = defineChain({\n id: '4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z',\n name: 'Solana Testnet',\n network: 'solana-testnet',\n nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 },\n rpcUrls: {\n default: { http: ['https://rpc.walletconnect.org/v1'] }\n },\n blockExplorers: { default: { name: 'Solscan', url: 'https://solscan.io' } },\n testnet: true,\n chainNamespace: 'solana',\n caipNetworkId: 'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z'\n});\n//# sourceMappingURL=solanaTestnet.js.map","import { defineChain } from './utils.js';\nexport const bitcoin = defineChain({\n id: '000000000019d6689c085ae165831e93',\n caipNetworkId: 'bip122:000000000019d6689c085ae165831e93',\n chainNamespace: 'bip122',\n name: 'Bitcoin',\n nativeCurrency: {\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8\n },\n rpcUrls: {\n default: { http: ['https://rpc.walletconnect.org/v1'] }\n }\n});\nexport const bitcoinTestnet = defineChain({\n id: '000000000933ea01ad0ee984209779ba',\n caipNetworkId: 'bip122:000000000933ea01ad0ee984209779ba',\n chainNamespace: 'bip122',\n name: 'Bitcoin Testnet',\n nativeCurrency: {\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8\n },\n rpcUrls: {\n default: { http: ['https://rpc.walletconnect.org/v1'] }\n },\n testnet: true\n});\n//# sourceMappingURL=bitcoin.js.map","import { ParseUtil } from '@reown/appkit-common';\nimport { CoreHelperUtil, EnsController } from '@reown/appkit-controllers';\nimport { solana, solanaDevnet } from '../networks/index.js';\nexport const DEFAULT_METHODS = {\n solana: [\n 'solana_signMessage',\n 'solana_signTransaction',\n 'solana_requestAccounts',\n 'solana_getAccounts',\n 'solana_signAllTransactions',\n 'solana_signAndSendTransaction'\n ],\n eip155: [\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n 'eth_signTypedData_v3',\n 'eth_signTypedData_v4',\n 'eth_sendTransaction',\n 'personal_sign',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n // EIP-5792\n 'wallet_getCallsStatus',\n 'wallet_showCallsStatus',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n // EIP-7715\n 'wallet_grantPermissions',\n 'wallet_revokePermissions',\n //EIP-7811\n 'wallet_getAssets'\n ],\n bip122: ['sendTransfer', 'signMessage', 'signPsbt', 'getAccountAddresses']\n};\nexport const WcHelpersUtil = {\n getMethodsByChainNamespace(chainNamespace) {\n return DEFAULT_METHODS[chainNamespace] || [];\n },\n createDefaultNamespace(chainNamespace) {\n return {\n methods: this.getMethodsByChainNamespace(chainNamespace),\n events: ['accountsChanged', 'chainChanged'],\n chains: [],\n rpcMap: {}\n };\n },\n applyNamespaceOverrides(baseNamespaces, overrides) {\n if (!overrides) {\n return { ...baseNamespaces };\n }\n const result = { ...baseNamespaces };\n const namespacesToOverride = new Set();\n if (overrides.methods) {\n Object.keys(overrides.methods).forEach(ns => namespacesToOverride.add(ns));\n }\n if (overrides.chains) {\n Object.keys(overrides.chains).forEach(ns => namespacesToOverride.add(ns));\n }\n if (overrides.events) {\n Object.keys(overrides.events).forEach(ns => namespacesToOverride.add(ns));\n }\n if (overrides.rpcMap) {\n Object.keys(overrides.rpcMap).forEach(chainId => {\n const [ns] = chainId.split(':');\n if (ns) {\n namespacesToOverride.add(ns);\n }\n });\n }\n namespacesToOverride.forEach(ns => {\n if (!result[ns]) {\n result[ns] = this.createDefaultNamespace(ns);\n }\n });\n if (overrides.methods) {\n Object.entries(overrides.methods).forEach(([ns, methods]) => {\n if (result[ns]) {\n result[ns].methods = methods;\n }\n });\n }\n if (overrides.chains) {\n Object.entries(overrides.chains).forEach(([ns, chains]) => {\n if (result[ns]) {\n result[ns].chains = chains;\n }\n });\n }\n if (overrides.events) {\n Object.entries(overrides.events).forEach(([ns, events]) => {\n if (result[ns]) {\n result[ns].events = events;\n }\n });\n }\n if (overrides.rpcMap) {\n const processedNamespaces = new Set();\n Object.entries(overrides.rpcMap).forEach(([chainId, rpcUrl]) => {\n const [ns, id] = chainId.split(':');\n if (!ns || !id || !result[ns]) {\n return;\n }\n if (!result[ns].rpcMap) {\n result[ns].rpcMap = {};\n }\n if (!processedNamespaces.has(ns)) {\n result[ns].rpcMap = {};\n processedNamespaces.add(ns);\n }\n result[ns].rpcMap[id] = rpcUrl;\n });\n }\n return result;\n },\n createNamespaces(caipNetworks, configOverride) {\n const defaultNamespaces = caipNetworks.reduce((acc, chain) => {\n const { id, chainNamespace, rpcUrls } = chain;\n const rpcUrl = rpcUrls.default.http[0];\n if (!acc[chainNamespace]) {\n acc[chainNamespace] = this.createDefaultNamespace(chainNamespace);\n }\n const caipNetworkId = `${chainNamespace}:${id}`;\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n const namespace = acc[chainNamespace];\n namespace.chains.push(caipNetworkId);\n // Workaround for wallets that only support deprecated Solana network ID\n switch (caipNetworkId) {\n case solana.caipNetworkId:\n namespace.chains.push(solana.deprecatedCaipNetworkId);\n break;\n case solanaDevnet.caipNetworkId:\n namespace.chains.push(solanaDevnet.deprecatedCaipNetworkId);\n break;\n default:\n }\n if (namespace?.rpcMap && rpcUrl) {\n namespace.rpcMap[id] = rpcUrl;\n }\n return acc;\n }, {});\n return this.applyNamespaceOverrides(defaultNamespaces, configOverride);\n },\n resolveReownName: async (name) => {\n const wcNameAddress = await EnsController.resolveName(name);\n const networkNameAddresses = Object.values(wcNameAddress?.addresses) || [];\n return networkNameAddresses[0]?.address || false;\n },\n getChainsFromNamespaces(namespaces = {}) {\n return Object.values(namespaces).flatMap(namespace => {\n const chains = (namespace.chains || []);\n const accountsChains = namespace.accounts.map(account => {\n const [chainNamespace, chainId] = account.split(':');\n return `${chainNamespace}:${chainId}`;\n });\n return Array.from(new Set([...chains, ...accountsChains]));\n });\n },\n isSessionEventData(data) {\n return (typeof data === 'object' &&\n data !== null &&\n 'id' in data &&\n 'topic' in data &&\n 'params' in data &&\n typeof data.params === 'object' &&\n data.params !== null &&\n 'chainId' in data.params &&\n 'event' in data.params &&\n typeof data.params.event === 'object' &&\n data.params.event !== null);\n },\n isOriginAllowed(currentOrigin, allowedPatterns, defaultAllowedOrigins) {\n for (const pattern of [...allowedPatterns, ...defaultAllowedOrigins]) {\n if (pattern.includes('*')) {\n // Convert wildcard pattern to regex, escape special chars, replace *, match whole string\n const escapedPattern = pattern.replace(/[.*+?^${}()|[\\]\\\\]/gu, '\\\\$&');\n const regexString = `^${escapedPattern.replace(/\\\\\\*/gu, '.*')}$`;\n const regex = new RegExp(regexString, 'u');\n if (regex.test(currentOrigin)) {\n return true;\n }\n }\n else {\n /**\n * There are some cases where pattern is getting just the origin, where using new URL(pattern).origin will throw an error\n * thus we a try catch to handle this case\n */\n try {\n if (new URL(pattern).origin === currentOrigin) {\n return true;\n }\n }\n catch (e) {\n if (pattern === currentOrigin) {\n return true;\n }\n }\n }\n }\n // No match found\n return false;\n },\n listenWcProvider({ universalProvider, namespace, onConnect, onDisconnect, onAccountsChanged, onChainChanged, onDisplayUri }) {\n if (onConnect) {\n universalProvider.on('connect', () => {\n const accounts = WcHelpersUtil.getWalletConnectAccounts(universalProvider, namespace);\n onConnect(accounts);\n });\n }\n if (onDisconnect) {\n universalProvider.on('disconnect', () => {\n onDisconnect();\n });\n }\n if (onAccountsChanged) {\n universalProvider.on('session_event', (callbackData) => {\n if (WcHelpersUtil.isSessionEventData(callbackData)) {\n const { name, data } = callbackData.params.event;\n if (name === 'accountsChanged' && Array.isArray(data)) {\n const parsedCaipAddresses = data\n .filter(account => CoreHelperUtil.isCaipAddress(account))\n .map(account => ParseUtil.parseCaipAddress(account))\n .filter(caipAddress => caipAddress.chainNamespace === namespace);\n onAccountsChanged(parsedCaipAddresses);\n }\n }\n });\n }\n if (onChainChanged) {\n universalProvider.on('chainChanged', (chainId) => {\n onChainChanged(chainId);\n });\n }\n if (onDisplayUri) {\n universalProvider.on('display_uri', (uri) => {\n onDisplayUri(uri);\n });\n }\n },\n getWalletConnectAccounts(universalProvider, namespace) {\n const accountsAdded = new Set();\n const accounts = universalProvider?.session?.namespaces?.[namespace]?.accounts\n ?.map(account => ParseUtil.parseCaipAddress(account))\n .filter(({ address }) => {\n if (accountsAdded.has(address.toLowerCase())) {\n return false;\n }\n accountsAdded.add(address.toLowerCase());\n return true;\n });\n if (accounts && accounts.length > 0) {\n return accounts;\n }\n return [];\n }\n};\n//# sourceMappingURL=HelpersUtil.js.map","import { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { CoreHelperUtil } from '@reown/appkit-controllers';\nimport { ConnectorUtil } from '@reown/appkit-scaffold-ui/utils';\nimport { HelpersUtil } from '@reown/appkit-utils';\nimport { BitcoinConstantsUtil } from '@reown/appkit-utils/bitcoin';\nimport { WcHelpersUtil } from '../utils/HelpersUtil.js';\n// -- Class ------------------------------------------------------------------\nexport class ConnectionManager {\n constructor(params) {\n this.namespace = params.namespace;\n }\n async syncConnections(params) {\n switch (this.namespace) {\n case CommonConstantsUtil.CHAIN.EVM:\n await this.syncEVMConnections(params);\n break;\n case CommonConstantsUtil.CHAIN.SOLANA:\n await this.syncSolanaConnections(params);\n break;\n case CommonConstantsUtil.CHAIN.BITCOIN:\n await this.syncBitcoinConnections(params);\n break;\n default:\n throw new Error(`Unsupported chain namespace: ${this.namespace}`);\n }\n }\n async syncEVMConnections({ connectors, caipNetworks, universalProvider, getConnectionStatusInfo, onConnection, onListenProvider }) {\n await Promise.all(connectors\n .filter(c => {\n const { hasDisconnected, hasConnected } = getConnectionStatusInfo(c.id);\n return !hasDisconnected && hasConnected;\n })\n .map(async (connector) => {\n if (connector.id === CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {\n const accounts = WcHelpersUtil.getWalletConnectAccounts(universalProvider, this.namespace);\n const caipNetwork = caipNetworks.find(n => n.chainNamespace === this.namespace &&\n n.id.toString() === accounts[0]?.chainId?.toString());\n if (accounts.length > 0) {\n onConnection({\n connectorId: connector.id,\n accounts: accounts.map(account => ({ address: account.address })),\n caipNetwork\n });\n }\n }\n else {\n const { accounts, chainId } = await ConnectorUtil.fetchProviderData(connector);\n if (accounts.length > 0 && chainId) {\n const caipNetwork = caipNetworks.find(n => n.chainNamespace === this.namespace && n.id.toString() === chainId.toString());\n onConnection({\n connectorId: connector.id,\n accounts: accounts.map(address => ({ address })),\n caipNetwork\n });\n if (connector.provider &&\n connector.id !== CommonConstantsUtil.CONNECTOR_ID.AUTH &&\n connector.id !== CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {\n onListenProvider(connector.id, connector.provider);\n }\n }\n }\n }));\n }\n async syncSolanaConnections({ connectors, caipNetwork, universalProvider, getConnectionStatusInfo, onConnection, onListenProvider }) {\n await Promise.all(connectors\n .filter(c => {\n const { hasDisconnected, hasConnected } = getConnectionStatusInfo(c.id);\n return !hasDisconnected && hasConnected;\n })\n .map(async (connector) => {\n if (connector.id === CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {\n const accounts = WcHelpersUtil.getWalletConnectAccounts(universalProvider, this.namespace);\n if (accounts.length > 0) {\n onConnection({\n connectorId: connector.id,\n accounts: accounts.map(account => ({ address: account.address })),\n caipNetwork\n });\n }\n }\n else {\n const address = await connector.connect({\n chainId: caipNetwork?.id\n });\n if (address) {\n onConnection({\n connectorId: connector.id,\n accounts: [{ address }],\n caipNetwork\n });\n onListenProvider(connector.id, connector.provider);\n }\n }\n }));\n }\n async syncBitcoinConnections({ connectors, caipNetwork, universalProvider, getConnectionStatusInfo, onConnection, onListenProvider }) {\n await Promise.all(connectors\n .filter(c => {\n const { hasDisconnected, hasConnected } = getConnectionStatusInfo(c.id);\n return !hasDisconnected && hasConnected;\n })\n .map(async (connector) => {\n if (connector.id === CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT) {\n const accounts = WcHelpersUtil.getWalletConnectAccounts(universalProvider, this.namespace);\n if (accounts.length > 0) {\n onConnection({\n connectorId: connector.id,\n accounts: accounts.map(account => ({ address: account.address })),\n caipNetwork\n });\n }\n return;\n }\n const address = await connector.connect();\n const addresses = await connector.getAccountAddresses();\n let accounts = addresses?.map(a => CoreHelperUtil.createAccount(CommonConstantsUtil.CHAIN.BITCOIN, a.address, a.purpose || 'payment', a.publicKey, a.path));\n if (accounts && accounts.length > 1) {\n accounts = [\n {\n namespace: CommonConstantsUtil.CHAIN.BITCOIN,\n publicKey: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.PAYMENT]?.publicKey ?? '',\n path: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.PAYMENT]?.path ?? '',\n address: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.PAYMENT]?.address ?? '',\n type: 'payment'\n },\n {\n namespace: CommonConstantsUtil.CHAIN.BITCOIN,\n publicKey: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.ORDINAL]?.publicKey ?? '',\n path: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.ORDINAL]?.path ?? '',\n address: accounts[BitcoinConstantsUtil.ACCOUNT_INDEXES.ORDINAL]?.address ?? '',\n type: 'ordinal'\n }\n ];\n }\n const chain = connector.chains.find(c => c.id === caipNetwork?.id) || connector.chains[0];\n if (!chain) {\n throw new Error('The connector does not support any of the requested chains');\n }\n if (address) {\n onListenProvider(connector.id, connector.provider);\n onConnection({\n connectorId: connector.id,\n accounts: accounts.map(a => ({ address: a.address, type: a.type })),\n caipNetwork\n });\n }\n }));\n }\n /**\n * Gets a connection based on provided parameters.\n * If connectorId is provided, returns connection for that specific connector.\n * Otherwise, returns the first available valid connection.\n *\n * @param params - Connection parameters\n * @param params.address - Optional address to filter by\n * @param params.connectorId - Optional connector ID to filter by\n * @param params.connections - List of available connections\n * @param params.connectors - List of available connectors\n * @returns Connection or null if none found\n */\n getConnection({ address, connectorId, connections, connectors }) {\n if (connectorId) {\n const connection = connections.find(c => HelpersUtil.isLowerCaseMatch(c.connectorId, connectorId));\n if (!connection) {\n return null;\n }\n const connector = connectors.find(c => HelpersUtil.isLowerCaseMatch(c.id, connection.connectorId));\n const account = address\n ? connection.accounts.find(a => HelpersUtil.isLowerCaseMatch(a.address, address))\n : connection.accounts[0];\n return { ...connection, account, connector };\n }\n const validConnection = connections.find(c => c.accounts.length > 0 &&\n connectors.some(conn => HelpersUtil.isLowerCaseMatch(conn.id, c.connectorId)));\n if (validConnection) {\n const [account] = validConnection.accounts;\n const connector = connectors.find(c => HelpersUtil.isLowerCaseMatch(c.id, validConnection.connectorId));\n return {\n ...validConnection,\n account,\n connector\n };\n }\n return null;\n }\n}\n//# sourceMappingURL=ConnectionManager.js.map","export const WcConstantsUtil = {\n ERROR_CODE_UNRECOGNIZED_CHAIN_ID: 4902,\n ERROR_CODE_DEFAULT: 5000,\n ERROR_INVALID_CHAIN_ID: 32603,\n DEFAULT_ALLOWED_ANCESTORS: [\n 'http://localhost:*',\n 'https://localhost:*',\n 'http://127.0.0.1:*',\n 'https://127.0.0.1:*',\n 'https://*.pages.dev',\n 'https://*.vercel.app',\n 'https://*.ngrok-free.app',\n 'https://secure-mobile.walletconnect.com',\n 'https://secure-mobile.walletconnect.org'\n ]\n};\n//# sourceMappingURL=ConstantsUtil.js.map","import UniversalProvider from '@walletconnect/universal-provider';\nimport { ConstantsUtil } from '@reown/appkit-common';\nimport { ChainController, OptionsController, SIWXUtil } from '@reown/appkit-controllers';\nimport { PresetsUtil } from '@reown/appkit-utils';\nimport { WcHelpersUtil } from '../utils/index.js';\nexport class WalletConnectConnector {\n constructor({ provider, namespace }) {\n this.id = ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n this.name = PresetsUtil.ConnectorNamesMap[ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT];\n this.type = 'WALLET_CONNECT';\n this.imageId = PresetsUtil.ConnectorImageIds[ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT];\n this.getCaipNetworks = ChainController.getCaipNetworks.bind(ChainController);\n this.caipNetworks = this.getCaipNetworks();\n this.provider = provider;\n this.chain = namespace;\n }\n get chains() {\n return this.getCaipNetworks();\n }\n async connectWalletConnect() {\n const isAuthenticated = await this.authenticate();\n if (!isAuthenticated) {\n const caipNetworks = this.getCaipNetworks();\n const universalProviderConfigOverride = OptionsController.state.universalProviderConfigOverride;\n const namespaces = WcHelpersUtil.createNamespaces(caipNetworks, universalProviderConfigOverride);\n await this.provider.connect({ optionalNamespaces: namespaces });\n }\n return {\n clientId: await this.provider.client.core.crypto.getClientId(),\n session: this.provider.session\n };\n }\n async disconnect() {\n await this.provider.disconnect();\n }\n async authenticate() {\n const chains = this.chains.map(network => network.caipNetworkId);\n return SIWXUtil.universalProviderAuthenticate({\n universalProvider: this.provider,\n chains,\n methods: OPTIONAL_METHODS\n });\n }\n}\nconst OPTIONAL_METHODS = [\n 'eth_accounts',\n 'eth_requestAccounts',\n 'eth_sendRawTransaction',\n 'eth_sign',\n 'eth_signTransaction',\n 'eth_signTypedData',\n 'eth_signTypedData_v3',\n 'eth_signTypedData_v4',\n 'eth_sendTransaction',\n 'personal_sign',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain',\n 'wallet_getPermissions',\n 'wallet_requestPermissions',\n 'wallet_registerOnboarding',\n 'wallet_watchAsset',\n 'wallet_scanQRCode',\n // EIP-5792\n 'wallet_getCallsStatus',\n 'wallet_sendCalls',\n 'wallet_getCapabilities',\n // EIP-7715\n 'wallet_grantPermissions',\n 'wallet_revokePermissions',\n //EIP-7811\n 'wallet_getAssets'\n];\n//# sourceMappingURL=WalletConnectConnector.js.map","import UniversalProvider from '@walletconnect/universal-provider';\nimport { ConstantsUtil as CommonConstantsUtil } from '@reown/appkit-common';\nimport { AccountController, ChainController, ConnectorController, CoreHelperUtil, getPreferredAccountType } from '@reown/appkit-controllers';\nimport {} from '@reown/appkit-controllers';\nimport { HelpersUtil, PresetsUtil } from '@reown/appkit-utils';\nimport { EthersHelpersUtil } from '@reown/appkit-utils/ethers';\nimport { ConnectionManager } from '../connections/ConnectionManager.js';\nimport { WalletConnectConnector } from '../connectors/WalletConnectConnector.js';\nconst IGNORED_CONNECTOR_IDS_FOR_LISTENER = [\n CommonConstantsUtil.CONNECTOR_ID.AUTH,\n CommonConstantsUtil.CONNECTOR_ID.WALLET_CONNECT\n];\n/**\n * Abstract class representing a chain adapter blueprint.\n * @template Connector - The type of connector extending ChainAdapterConnector\n */\nexport class AdapterBlueprint {\n /**\n * Creates an instance of AdapterBlueprint.\n * @param {AdapterBlueprint.Params} params - The parameters for initializing the adapter\n */\n constructor(params) {\n this.availableConnectors = [];\n this.availableConnections = [];\n this.providerHandlers = {};\n this.eventListeners = new Map();\n this.getCaipNetworks = (namespace) => ChainController.getCaipNetworks(namespace);\n this.getConnectorId = (namespace) => ConnectorController.getConnectorId(namespace);\n if (params) {\n this.construct(params);\n }\n if (params?.namespace) {\n this.connectionManager = new ConnectionManager({\n namespace: params.namespace\n });\n }\n }\n /**\n * Initializes the adapter with the given parameters.\n * @param {AdapterBlueprint.Params} params - The parameters for initializing the adapter\n */\n construct(params) {\n this.projectId = params.projectId;\n this.namespace = params.namespace;\n this.adapterType = params.adapterType;\n }\n /**\n * Gets the available connectors.\n * @returns {Connector[]} An array of available connectors\n */\n get connectors() {\n return this.availableConnectors;\n }\n /**\n * Gets the available connections.\n * @returns {Connection[]} An array of available connections\n */\n get connections() {\n return this.availableConnections;\n }\n /**\n * Gets the supported networks.\n * @returns {CaipNetwork[]} An array of supported networks\n */\n get networks() {\n return this.getCaipNetworks(this.namespace);\n }\n /**\n * Handles the auth connected event.\n * @param {W3mFrameTypes.Responses['FrameGetUserResponse']} user - The user response\n */\n onAuthConnected({ accounts, chainId }) {\n const caipNetwork = this.getCaipNetworks()\n .filter(n => n.chainNamespace === this.namespace)\n .find(n => n.id.toString() === chainId?.toString());\n if (accounts && caipNetwork) {\n this.addConnection({\n connectorId: CommonConstantsUtil.CONNECTOR_ID.AUTH,\n accounts,\n caipNetwork\n });\n }\n }\n /**\n * Sets the auth provider.\n * @param {W3mFrameProvider} authProvider - The auth provider instance\n */\n setAuthProvider(authProvider) {\n authProvider.onConnect(this.onAuthConnected.bind(this));\n authProvider.onSocialConnected(this.onAuthConnected.bind(this));\n this.addConnector({\n id: CommonConstantsUtil.CONNECTOR_ID.AUTH,\n type: 'AUTH',\n name: CommonConstantsUtil.CONNECTOR_NAMES.AUTH,\n provider: authProvider,\n imageId: PresetsUtil.ConnectorImageIds[CommonConstantsUtil.CONNECTOR_ID.AUTH],\n chain: this.namespace,\n chains: []\n });\n }\n /**\n * Adds one or more connectors to the available connectors list.\n * @param {...Connector} connectors - The connectors to add\n */\n addConnector(...connectors) {\n const connectorsAdded = new Set();\n this.availableConnectors = [...connectors, ...this.availableConnectors].filter(connector => {\n if (connectorsAdded.has(connector.id)) {\n return false;\n }\n connectorsAdded.add(connector.id);\n return true;\n });\n this.emit('connectors', this.availableConnectors);\n }\n /**\n * Adds connections to the available connections list\n * @param {...Connection} connections - The connections to add\n */\n addConnection(...connections) {\n const connectionsAdded = new Set();\n this.availableConnections = [...connections, ...this.availableConnections].filter(connection => {\n if (connectionsAdded.has(connection.connectorId.toLowerCase())) {\n return false;\n }\n connectionsAdded.add(connection.connectorId.toLowerCase());\n return true;\n });\n this.emit('connections', this.availableConnections);\n }\n /**\n * Deletes a connection from the available connections list\n * @param {string} connectorId - The connector ID of the connection to delete\n */\n deleteConnection(connectorId) {\n this.availableConnections = this.availableConnections.filter(c => !HelpersUtil.isLowerCaseMatch(c.connectorId, connectorId));\n this.emit('connections', this.availableConnections);\n }\n /**\n * Clears all connections from the available connections list\n * @param {boolean} emit - Whether to emit the connections event\n */\n clearConnections(emit = false) {\n this.availableConnections = [];\n if (emit) {\n this.emit('connections', this.availableConnections);\n }\n }\n setStatus(status, chainNamespace) {\n AccountController.setStatus(status, chainNamespace);\n }\n /**\n * Adds an event listener for a specific event.\n * @template T\n * @param {T} eventName - The name of the event\n * @param {EventCallback} callback - The callback function to be called when the event is emitted\n */\n on(eventName, callback) {\n if (!this.eventListeners.has(eventName)) {\n this.eventListeners.set(eventName, new Set());\n }\n this.eventListeners.get(eventName)?.add(callback);\n }\n /**\n * Removes an event listener for a specific event.\n * @template T\n * @param {T} eventName - The name of the event\n * @param {EventCallback} callback - The callback function to be removed\n */\n off(eventName, callback) {\n const listeners = this.eventListeners.get(eventName);\n if (listeners) {\n listeners.delete(callback);\n }\n }\n /**\n * Removes all event listeners.\n */\n removeAllEventListeners() {\n this.eventListeners.forEach(listeners => {\n listeners.clear();\n });\n }\n /**\n * Emits an event with the given name and optional data.\n * @template T\n * @param {T} eventName - The name of the event to emit\n * @param {EventData[T]} [data] - The optional data to be passed to the event listeners\n */\n emit(eventName, data) {\n const listeners = this.eventListeners.get(eventName);\n if (listeners) {\n listeners.forEach(callback => callback(data));\n }\n }\n /**\n * Connects to WalletConnect.\n * @param {number | string} [_chainId] - Optional chain ID to connect to\n */\n async connectWalletConnect(_chainId) {\n const connector = this.getWalletConnectConnector();\n const result = await connector.connectWalletConnect();\n return { clientId: result.clientId };\n }\n /**\n * Switches the network.\n * @param {AdapterBlueprint.SwitchNetworkParams} params - Network switching parameters\n */\n async switchNetwork(params) {\n const { caipNetwork, providerType } = params;\n if (!params.provider) {\n return;\n }\n const provider = 'provider' in params.provider ? params.provider.provider : params.provider;\n if (providerType === 'WALLET_CONNECT') {\n ;\n provider.setDefaultChain(caipNetwork.caipNetworkId);\n return;\n }\n if (provider && providerType === 'AUTH') {\n const authProvider = provider;\n const preferredAccountType = getPreferredAccountType(caipNetwork.chainNamespace);\n await authProvider.switchNetwork({ chainId: caipNetwork.caipNetworkId });\n const user = await authProvider.getUser({\n chainId: caipNetwork.caipNetworkId,\n preferredAccountType\n });\n this.emit('switchNetwork', user);\n }\n }\n getWalletConnectConnector() {\n const connector = this.connectors.find(c => c instanceof WalletConnectConnector);\n if (!connector) {\n throw new Error('WalletConnectConnector not found');\n }\n return connector;\n }\n /**\n * Handles connect event for a specific connector.\n * @param {string[]} accounts - The accounts that changed\n * @param {string} connectorId - The ID of the connector\n */\n onConnect(accounts, connectorId) {\n if (accounts.length > 0) {\n const { address, chainId } = CoreHelperUtil.getAccount(accounts[0]);\n const caipNetwork = this.getCaipNetworks()\n .filter(n => n.chainNamespace === this.namespace)\n .find(n => n.id.toString() === chainId?.toString());\n const connector = this.connectors.find(c => c.id === connectorId);\n if (address) {\n this.emit('accountChanged', {\n address,\n chainId,\n connector\n });\n this.addConnection({\n connectorId,\n accounts: accounts.map(_account => {\n const { address } = CoreHelperUtil.getAccount(_account);\n return { address: address };\n }),\n caipNetwork\n });\n }\n }\n }\n /**\n * Handles accounts changed event for a specific connector.\n * @param {string[]} accounts - The accounts that changed\n * @param {string} connectorId - The ID of the connector\n */\n onAccountsChanged(accounts, connectorId, disconnectIfNoAccounts = true) {\n if (accounts.length > 0) {\n const { address } = CoreHelperUtil.getAccount(accounts[0]);\n const connection = this.connectionManager?.getConnection({\n connectorId,\n connections: this.connections,\n connectors: this.connectors\n });\n if (address &&\n HelpersUtil.isLowerCaseMatch(this.getConnectorId(CommonConstantsUtil.CHAIN.EVM), connectorId)) {\n this.emit('accountChanged', {\n address,\n chainId: connection?.caipNetwork?.id,\n connector: connection?.connector\n });\n }\n this.addConnection({\n connectorId,\n accounts: accounts.map(_account => {\n const { address } = CoreHelperUtil.getAccount(_account);\n return { address: address };\n }),\n caipNetwork: connection?.caipNetwork\n });\n }\n else if (disconnectIfNoAccounts) {\n this.onDisconnect(connectorId);\n }\n }\n /**\n * Handles disconnect event for a specific connector.\n * @param {string} connectorId - The ID of the connector\n */\n onDisconnect(connectorId) {\n this.removeProviderListeners(connectorId);\n this.deleteConnection(connectorId);\n if (HelpersUtil.isLowerCaseMatch(this.getConnectorId(CommonConstantsUtil.CHAIN.EVM), connectorId)) {\n this.emitFirstAvailableConnection();\n }\n if (this.connections.length === 0) {\n this.emit('disconnect');\n }\n }\n /**\n * Handles chain changed event for a specific connector.\n * @param {string} chainId - The ID of the chain that changed\n * @param {string} connectorId - The ID of the connector\n */\n onChainChanged(chainId, connectorId) {\n const formattedChainId = typeof chainId === 'string' && chainId.startsWith('0x')\n ? EthersHelpersUtil.hexStringToNumber(chainId).toString()\n : chainId.toString();\n const connection = this.connectionManager?.getConnection({\n connectorId,\n connections: this.connections,\n connectors: this.connectors\n });\n const caipNetwork = this.getCaipNetworks()\n .filter(n => n.chainNamespace === this.namespace)\n .find(n => n.id.toString() === formattedChainId);\n if (connection) {\n this.addConnection({\n connectorId,\n accounts: connection.accounts,\n caipNetwork\n });\n }\n if (HelpersUtil.isLowerCaseMatch(this.getConnectorId(CommonConstantsUtil.CHAIN.EVM), connectorId)) {\n this.emit('switchNetwork', { chainId: formattedChainId });\n }\n }\n /**\n * Listens to provider events for a specific connector.\n * @param {string} connectorId - The ID of the connector\n * @param {Provider | CombinedProvider} provider - The provider to listen to\n */\n listenProviderEvents(connectorId, provider) {\n if (IGNORED_CONNECTOR_IDS_FOR_LISTENER.includes(connectorId)) {\n return;\n }\n const accountsChangedHandler = (accounts) => this.onAccountsChanged(accounts, connectorId);\n const chainChangedHandler = (chainId) => this.onChainChanged(chainId, connectorId);\n const disconnectHandler = () => this.onDisconnect(connectorId);\n if (!this.providerHandlers[connectorId]) {\n provider.on('disconnect', disconnectHandler);\n provider.on('accountsChanged', accountsChangedHandler);\n provider.on('chainChanged', chainChangedHandler);\n this.providerHandlers[connectorId] = {\n provider,\n disconnect: disconnectHandler,\n accountsChanged: accountsChangedHandler,\n chainChanged: chainChangedHandler\n };\n }\n }\n /**\n * Removes provider listeners for a specific connector.\n * @param {string} connectorId - The ID of the connector\n */\n removeProviderListeners(connectorId) {\n if (this.providerHandlers[connectorId]) {\n const { provider, disconnect, accountsChanged, chainChanged } = this.providerHandlers[connectorId];\n provider.removeListener('disconnect', disconnect);\n provider.removeListener('accountsChanged', accountsChanged);\n provider.removeListener('chainChanged', chainChanged);\n this.providerHandlers[connectorId] = null;\n }\n }\n /**\n * Emits the first available connection.\n */\n emitFirstAvailableConnection() {\n const connection = this.connectionManager?.getConnection({\n connections: this.connections,\n connectors: this.connectors\n });\n if (connection) {\n const [account] = connection.accounts;\n this.emit('accountChanged', {\n address: account?.address,\n chainId: connection.caipNetwork?.id,\n connector: connection.connector\n });\n }\n }\n}\n//# sourceMappingURL=ChainAdapterBlueprint.js.map","import bs58 from 'bs58';\nimport { toHex } from 'viem';\nimport { ConstantsUtil } from '@reown/appkit-common';\nimport { AccountController, ChainController, ConstantsUtil as CoreConstantsUtil, CoreHelperUtil } from '@reown/appkit-controllers';\nimport { AdapterBlueprint } from '../adapters/ChainAdapterBlueprint.js';\nimport { WalletConnectConnector } from '../connectors/WalletConnectConnector.js';\nimport { WcConstantsUtil } from '../utils/ConstantsUtil.js';\nexport class UniversalAdapter extends AdapterBlueprint {\n async setUniversalProvider(universalProvider) {\n if (!this.namespace) {\n throw new Error('UniversalAdapter:setUniversalProvider - namespace is required');\n }\n this.addConnector(new WalletConnectConnector({\n provider: universalProvider,\n caipNetworks: this.getCaipNetworks(),\n namespace: this.namespace\n }));\n return Promise.resolve();\n }\n async connect(params) {\n return Promise.resolve({\n id: 'WALLET_CONNECT',\n type: 'WALLET_CONNECT',\n chainId: Number(params.chainId),\n provider: this.provider,\n address: ''\n });\n }\n async disconnect() {\n try {\n const connector = this.getWalletConnectConnector();\n await connector.disconnect();\n this.emit('disconnect');\n }\n catch (error) {\n console.warn('UniversalAdapter:disconnect - error', error);\n }\n return { connections: [] };\n }\n syncConnections() {\n return Promise.resolve();\n }\n async getAccounts({ namespace }) {\n const provider = this.provider;\n const addresses = (provider?.session?.namespaces?.[namespace]?.accounts\n ?.map(account => {\n const [, , address] = account.split(':');\n return address;\n })\n .filter((address, index, self) => self.indexOf(address) === index) || []);\n return Promise.resolve({\n accounts: addresses.map(address => CoreHelperUtil.createAccount(namespace, address, namespace === 'bip122' ? 'payment' : 'eoa'))\n });\n }\n async syncConnectors() {\n return Promise.resolve();\n }\n async getBalance(params) {\n const isBalanceSupported = params.caipNetwork &&\n CoreConstantsUtil.BALANCE_SUPPORTED_CHAINS.includes(params.caipNetwork?.chainNamespace);\n if (!isBalanceSupported || params.caipNetwork?.testnet) {\n return {\n balance: '0.00',\n symbol: params.caipNetwork?.nativeCurrency.symbol || ''\n };\n }\n if (AccountController.state.balanceLoading &&\n params.chainId === ChainController.state.activeCaipNetwork?.id) {\n return {\n balance: AccountController.state.balance || '0.00',\n symbol: AccountController.state.balanceSymbol || ''\n };\n }\n const balances = await AccountController.fetchTokenBalance();\n const balance = balances.find(b => b.chainId === `${params.caipNetwork?.chainNamespace}:${params.chainId}` &&\n b.symbol === params.caipNetwork?.nativeCurrency.symbol);\n return {\n balance: balance?.quantity.numeric || '0.00',\n symbol: balance?.symbol || params.caipNetwork?.nativeCurrency.symbol || ''\n };\n }\n async signMessage(params) {\n const { provider, message, address } = params;\n if (!provider) {\n throw new Error('UniversalAdapter:signMessage - provider is undefined');\n }\n let signature = '';\n if (ChainController.state.activeCaipNetwork?.chainNamespace === ConstantsUtil.CHAIN.SOLANA) {\n const response = await provider.request({\n method: 'solana_signMessage',\n params: {\n message: bs58.encode(new TextEncoder().encode(message)),\n pubkey: address\n }\n }, ChainController.state.activeCaipNetwork?.caipNetworkId);\n signature = response.signature;\n }\n else {\n signature = await provider.request({\n method: 'personal_sign',\n params: [message, address]\n }, ChainController.state.activeCaipNetwork?.caipNetworkId);\n }\n return { signature };\n }\n // -- Transaction methods ---------------------------------------------------\n /**\n *\n * These methods are supported only on `wagmi` and `ethers` since the Solana SDK does not support them in the same way.\n * These function definition is to have a type parity between the clients. Currently not in use.\n */\n async estimateGas() {\n return Promise.resolve({\n gas: BigInt(0)\n });\n }\n async sendTransaction() {\n return Promise.resolve({\n hash: ''\n });\n }\n walletGetAssets(_params) {\n return Promise.resolve({});\n }\n async writeContract() {\n return Promise.resolve({\n hash: ''\n });\n }\n emitFirstAvailableConnection() {\n return undefined;\n }\n parseUnits() {\n return 0n;\n }\n formatUnits() {\n return '0';\n }\n async getCapabilities() {\n return Promise.resolve({});\n }\n async grantPermissions() {\n return Promise.resolve({});\n }\n async revokePermissions() {\n return Promise.resolve('0x');\n }\n async syncConnection() {\n return Promise.resolve({\n id: 'WALLET_CONNECT',\n type: 'WALLET_CONNECT',\n chainId: 1,\n provider: this.provider,\n address: ''\n });\n }\n // eslint-disable-next-line @typescript-eslint/require-await\n async switchNetwork(params) {\n const { caipNetwork } = params;\n const connector = this.getWalletConnectConnector();\n if (caipNetwork.chainNamespace === ConstantsUtil.CHAIN.EVM) {\n try {\n await connector.provider?.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: toHex(caipNetwork.id) }]\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n catch (switchError) {\n if (switchError.code === WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID ||\n switchError.code === WcConstantsUtil.ERROR_INVALID_CHAIN_ID ||\n switchError.code === WcConstantsUtil.ERROR_CODE_DEFAULT ||\n switchError?.data?.originalError?.code ===\n WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID) {\n try {\n await connector.provider?.request({\n method: 'wallet_addEthereumChain',\n params: [\n {\n chainId: toHex(caipNetwork.id),\n rpcUrls: [caipNetwork?.rpcUrls['chainDefault']?.http],\n chainName: caipNetwork.name,\n nativeCurrency: caipNetwork.nativeCurrency,\n blockExplorerUrls: [caipNetwork.blockExplorers?.default.url]\n }\n ]\n });\n }\n catch (error) {\n throw new Error('Chain is not supported');\n }\n }\n }\n }\n connector.provider.setDefaultChain(caipNetwork.caipNetworkId);\n }\n getWalletConnectProvider() {\n const connector = this.connectors.find(c => c.type === 'WALLET_CONNECT');\n const provider = connector?.provider;\n return provider;\n }\n}\n//# sourceMappingURL=client.js.map","import { AlertController, ApiController, ConstantsUtil } from '@reown/appkit-controllers';\nimport { ErrorUtil } from '@reown/appkit-utils';\nconst FEATURE_KEYS = [\n 'email',\n 'socials',\n 'swaps',\n 'onramp',\n 'activity',\n 'reownBranding',\n 'multiWallet',\n 'emailCapture'\n];\nconst featureConfig = {\n email: {\n apiFeatureName: 'social_login',\n localFeatureName: 'email',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => {\n if (!apiConfig?.config) {\n return false;\n }\n const config = apiConfig.config;\n return Boolean(apiConfig.isEnabled) && config.includes('email');\n },\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.email;\n }\n return Boolean(localValue);\n }\n },\n socials: {\n apiFeatureName: 'social_login',\n localFeatureName: 'socials',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => {\n if (!apiConfig?.config) {\n return false;\n }\n const config = apiConfig.config;\n return Boolean(apiConfig.isEnabled) && config.length > 0\n ? config.filter((s) => s !== 'email')\n : false;\n },\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.socials;\n }\n if (typeof localValue === 'boolean') {\n return localValue ? ConstantsUtil.DEFAULT_REMOTE_FEATURES.socials : false;\n }\n return localValue;\n }\n },\n swaps: {\n apiFeatureName: 'swap',\n localFeatureName: 'swaps',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => {\n if (!apiConfig?.config) {\n return false;\n }\n const config = apiConfig.config;\n return Boolean(apiConfig.isEnabled) && config.length > 0 ? config : false;\n },\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.swaps;\n }\n if (typeof localValue === 'boolean') {\n return localValue ? ConstantsUtil.DEFAULT_REMOTE_FEATURES.swaps : false;\n }\n return localValue;\n }\n },\n onramp: {\n apiFeatureName: 'onramp',\n localFeatureName: 'onramp',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => {\n if (!apiConfig?.config) {\n return false;\n }\n const config = apiConfig.config;\n return Boolean(apiConfig.isEnabled) && config.length > 0 ? config : false;\n },\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.onramp;\n }\n if (typeof localValue === 'boolean') {\n return localValue ? ConstantsUtil.DEFAULT_REMOTE_FEATURES.onramp : false;\n }\n return localValue;\n }\n },\n activity: {\n apiFeatureName: 'activity',\n localFeatureName: 'history',\n returnType: false,\n isLegacy: true,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => Boolean(apiConfig.isEnabled),\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.activity;\n }\n return Boolean(localValue);\n }\n },\n reownBranding: {\n apiFeatureName: 'reown_branding',\n localFeatureName: 'reownBranding',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => Boolean(apiConfig.isEnabled),\n processFallback: (localValue) => {\n if (localValue === undefined) {\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES.reownBranding;\n }\n return Boolean(localValue);\n }\n },\n emailCapture: {\n apiFeatureName: 'email_capture',\n localFeatureName: 'emailCapture',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => apiConfig.isEnabled && (apiConfig.config ?? []),\n processFallback: (_localValue) => false\n },\n multiWallet: {\n apiFeatureName: 'multi_wallet',\n localFeatureName: 'multiWallet',\n returnType: false,\n isLegacy: false,\n isAvailableOnBasic: false,\n processApi: (apiConfig) => Boolean(apiConfig.isEnabled),\n processFallback: () => ConstantsUtil.DEFAULT_REMOTE_FEATURES.multiWallet\n }\n};\nexport const ConfigUtil = {\n localSettingsOverridden: new Set(),\n getApiConfig(id, apiProjectConfig) {\n return apiProjectConfig?.find((f) => f.id === id);\n },\n addWarning(localFeatureValue, featureKey) {\n if (localFeatureValue !== undefined) {\n const config = featureConfig[featureKey];\n const warningName = config.isLegacy\n ? `\"features.${config.localFeatureName}\" (now \"${featureKey}\")`\n : `\"features.${featureKey}\"`;\n this.localSettingsOverridden.add(warningName);\n }\n },\n processFeature(featureKey, localFeatures, apiProjectConfig, useApi, isBasic) {\n const config = featureConfig[featureKey];\n const localValue = localFeatures[config.localFeatureName];\n if (isBasic && !config.isAvailableOnBasic) {\n return false;\n }\n if (useApi) {\n const apiConfig = this.getApiConfig(config.apiFeatureName, apiProjectConfig);\n if (apiConfig?.config === null) {\n return this.processFallbackFeature(featureKey, localValue);\n }\n if (!apiConfig?.config) {\n return false;\n }\n if (localValue !== undefined) {\n this.addWarning(localValue, featureKey);\n }\n return this.processApiFeature(featureKey, apiConfig);\n }\n return this.processFallbackFeature(featureKey, localValue);\n },\n processApiFeature(featureKey, apiConfig) {\n return featureConfig[featureKey].processApi(apiConfig);\n },\n processFallbackFeature(featureKey, localValue) {\n return featureConfig[featureKey].processFallback(localValue);\n },\n async fetchRemoteFeatures(config) {\n const isBasic = config.basic ?? false;\n const localFeatures = config.features || {};\n this.localSettingsOverridden.clear();\n let apiProjectConfig = null;\n let useApiConfig = false;\n try {\n apiProjectConfig = await ApiController.fetchProjectConfig();\n useApiConfig = apiProjectConfig !== null && apiProjectConfig !== undefined;\n }\n catch (e) {\n console.warn('[Reown Config] Failed to fetch remote project configuration. Using local/default values.', e);\n }\n const remoteFeaturesConfig = useApiConfig && !isBasic\n ? ConstantsUtil.DEFAULT_REMOTE_FEATURES\n : ConstantsUtil.DEFAULT_REMOTE_FEATURES_DISABLED;\n try {\n for (const featureKey of FEATURE_KEYS) {\n const result = this.processFeature(featureKey, localFeatures, apiProjectConfig, useApiConfig, isBasic);\n Object.assign(remoteFeaturesConfig, { [featureKey]: result });\n }\n }\n catch (e) {\n console.warn('[Reown Config] Failed to process the configuration from Cloud. Using default values.', e);\n return ConstantsUtil.DEFAULT_REMOTE_FEATURES;\n }\n if (useApiConfig && this.localSettingsOverridden.size > 0) {\n const warningMessage = `Your local configuration for ${Array.from(this.localSettingsOverridden).join(', ')} was ignored because a remote configuration was successfully fetched. Please manage these features via your project dashboard on dashboard.reown.com.`;\n AlertController.open({\n debugMessage: ErrorUtil.ALERT_WARNINGS.LOCAL_CONFIGURATION_IGNORED.debugMessage(warningMessage)\n }, 'warning');\n }\n return remoteFeaturesConfig;\n }\n};\n//# sourceMappingURL=ConfigUtil.js.map","import UniversalProvider from '@walletconnect/universal-provider';\nimport { ConstantsUtil, NetworkUtil, ParseUtil } from '@reown/appkit-common';\nimport { AccountController, AlertController, ApiController, AssetUtil, BlockchainApiController, ChainController, ConnectionController, ConnectionControllerUtil, ConnectorController, ConstantsUtil as CoreConstantsUtil, CoreHelperUtil, EnsController, EventsController, ModalController, OnRampController, OptionsController, PublicStateController, RouterController, SIWXUtil, SendController, SnackController, StorageUtil, ThemeController, getPreferredAccountType } from '@reown/appkit-controllers';\nimport { WalletUtil } from '@reown/appkit-scaffold-ui/utils';\nimport { setColorTheme, setThemeVariables } from '@reown/appkit-ui';\nimport { CaipNetworksUtil, ErrorUtil, HelpersUtil, LoggerUtil, ConstantsUtil as UtilConstantsUtil } from '@reown/appkit-utils';\nimport { ProviderUtil } from '@reown/appkit-utils';\nimport { UniversalAdapter } from '../universal-adapter/client.js';\nimport { ConfigUtil } from '../utils/ConfigUtil.js';\nimport { WcConstantsUtil, WcHelpersUtil } from '../utils/index.js';\nexport class AppKitBaseClient {\n constructor(options) {\n this.chainNamespaces = [];\n this.remoteFeatures = {};\n this.reportedAlertErrors = {};\n // -- Public Internal ---------------------------------------------------\n this.getCaipNetwork = (chainNamespace, id) => {\n if (chainNamespace) {\n const caipNetworkWithId = ChainController.getCaipNetworks(chainNamespace)?.find(c => c.id === id);\n if (caipNetworkWithId) {\n return caipNetworkWithId;\n }\n const namespaceCaipNetwork = ChainController.getNetworkData(chainNamespace)?.caipNetwork;\n if (namespaceCaipNetwork) {\n return namespaceCaipNetwork;\n }\n const requestedCaipNetworks = ChainController.getRequestedCaipNetworks(chainNamespace);\n return requestedCaipNetworks.filter(c => c.chainNamespace === chainNamespace)?.[0];\n }\n return ChainController.state.activeCaipNetwork || this.defaultCaipNetwork;\n };\n this.getCaipNetworkId = () => {\n const network = this.getCaipNetwork();\n if (network) {\n return network.id;\n }\n return undefined;\n };\n this.getCaipNetworks = (namespace) => ChainController.getCaipNetworks(namespace);\n this.getActiveChainNamespace = () => ChainController.state.activeChain;\n this.setRequestedCaipNetworks = (requestedCaipNetworks, chain) => {\n ChainController.setRequestedCaipNetworks(requestedCaipNetworks, chain);\n };\n this.getApprovedCaipNetworkIds = () => ChainController.getAllApprovedCaipNetworkIds();\n this.getCaipAddress = (chainNamespace) => {\n if (ChainController.state.activeChain === chainNamespace || !chainNamespace) {\n return ChainController.state.activeCaipAddress;\n }\n return ChainController.state.chains.get(chainNamespace)?.accountState?.caipAddress;\n };\n this.setClientId = clientId => {\n BlockchainApiController.setClientId(clientId);\n };\n this.getProvider = (namespace) => ProviderUtil.getProvider(namespace);\n this.getProviderType = (namespace) => ProviderUtil.getProviderId(namespace);\n this.getPreferredAccountType = (namespace) => getPreferredAccountType(namespace);\n this.setCaipAddress = (caipAddress, chain) => {\n AccountController.setCaipAddress(caipAddress, chain);\n };\n this.setBalance = (balance, balanceSymbol, chain) => {\n AccountController.setBalance(balance, balanceSymbol, chain);\n };\n this.setProfileName = (profileName, chain) => {\n AccountController.setProfileName(profileName, chain);\n };\n this.setProfileImage = (profileImage, chain) => {\n AccountController.setProfileImage(profileImage, chain);\n };\n this.setUser = (user, chain) => {\n AccountController.setUser(user, chain);\n };\n this.resetAccount = (chain) => {\n AccountController.resetAccount(chain);\n };\n this.setCaipNetwork = caipNetwork => {\n ChainController.setActiveCaipNetwork(caipNetwork);\n };\n this.setCaipNetworkOfNamespace = (caipNetwork, chainNamespace) => {\n ChainController.setChainNetworkData(chainNamespace, { caipNetwork });\n };\n this.setStatus = (status, chain) => {\n AccountController.setStatus(status, chain);\n // If at least one namespace is connected, set the connection status\n if (ConnectorController.isConnected()) {\n StorageUtil.setConnectionStatus('connected');\n }\n else {\n StorageUtil.setConnectionStatus('disconnected');\n }\n };\n this.getAddressByChainNamespace = (chainNamespace) => ChainController.state.chains.get(chainNamespace)?.accountState?.address;\n this.setConnectors = connectors => {\n const allConnectors = [...ConnectorController.state.allConnectors, ...connectors];\n ConnectorController.setConnectors(allConnectors);\n };\n this.setConnections = (connections, chainNamespace) => {\n StorageUtil.setConnections(connections, chainNamespace);\n ConnectionController.setConnections(connections, chainNamespace);\n };\n this.fetchIdentity = request => BlockchainApiController.fetchIdentity(request);\n this.getReownName = address => EnsController.getNamesForAddress(address);\n this.getConnectors = () => ConnectorController.getConnectors();\n this.getConnectorImage = connector => AssetUtil.getConnectorImage(connector);\n this.getConnections = (namespace) => {\n if (!this.remoteFeatures.multiWallet) {\n AlertController.open(ConstantsUtil.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT, 'info');\n return [];\n }\n return ConnectionControllerUtil.getConnectionsData(namespace).connections;\n };\n this.getRecentConnections = (namespace) => {\n if (!this.remoteFeatures.multiWallet) {\n AlertController.open(ConstantsUtil.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT, 'info');\n return [];\n }\n return ConnectionControllerUtil.getConnectionsData(namespace).recentConnections;\n };\n this.switchConnection = async (params) => {\n if (!this.remoteFeatures.multiWallet) {\n AlertController.open(ConstantsUtil.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT, 'info');\n return;\n }\n await ConnectionController.switchConnection(params);\n };\n this.deleteConnection = params => {\n if (!this.remoteFeatures.multiWallet) {\n AlertController.open(ConstantsUtil.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT, 'info');\n return;\n }\n StorageUtil.deleteAddressFromConnection(params);\n ConnectionController.syncStorageConnections();\n };\n this.setConnectedWalletInfo = (connectedWalletInfo, chain) => {\n const type = ProviderUtil.getProviderId(chain);\n const walletInfo = connectedWalletInfo ? { ...connectedWalletInfo, type } : undefined;\n AccountController.setConnectedWalletInfo(walletInfo, chain);\n };\n this.getIsConnectedState = () => Boolean(ChainController.state.activeCaipAddress);\n this.addAddressLabel = (address, label, chain) => {\n AccountController.addAddressLabel(address, label, chain);\n };\n this.removeAddressLabel = (address, chain) => {\n AccountController.removeAddressLabel(address, chain);\n };\n this.getAddress = (chainNamespace) => {\n if (ChainController.state.activeChain === chainNamespace || !chainNamespace) {\n return AccountController.state.address;\n }\n return ChainController.state.chains.get(chainNamespace)?.accountState?.address;\n };\n this.setApprovedCaipNetworksData = namespace => ChainController.setApprovedCaipNetworksData(namespace);\n this.resetNetwork = (namespace) => {\n ChainController.resetNetwork(namespace);\n };\n this.addConnector = connector => {\n ConnectorController.addConnector(connector);\n };\n this.resetWcConnection = () => {\n ConnectionController.resetWcConnection();\n };\n this.setAddressExplorerUrl = (addressExplorerUrl, chain) => {\n AccountController.setAddressExplorerUrl(addressExplorerUrl, chain);\n };\n this.setSmartAccountDeployed = (isDeployed, chain) => {\n AccountController.setSmartAccountDeployed(isDeployed, chain);\n };\n this.setPreferredAccountType = (preferredAccountType, chain) => {\n ChainController.setAccountProp('preferredAccountType', preferredAccountType, chain);\n };\n this.setEIP6963Enabled = enabled => {\n OptionsController.setEIP6963Enabled(enabled);\n };\n this.handleUnsafeRPCRequest = () => {\n if (this.isOpen()) {\n // If we are on the modal but there is no transaction stack, close the modal\n if (this.isTransactionStackEmpty()) {\n return;\n }\n // Check if we need to replace or redirect\n this.redirect('ApproveTransaction');\n }\n else {\n // If called from outside the modal, open ApproveTransaction\n this.open({ view: 'ApproveTransaction' });\n }\n };\n this.options = options;\n this.version = options.sdkVersion;\n this.caipNetworks = this.extendCaipNetworks(options);\n this.chainNamespaces = this.getChainNamespacesSet(options.adapters, this.caipNetworks);\n this.defaultCaipNetwork = this.extendDefaultCaipNetwork(options);\n this.chainAdapters = this.createAdapters(options.adapters);\n this.readyPromise = this.initialize(options);\n }\n getChainNamespacesSet(adapters, caipNetworks) {\n const adapterNamespaces = adapters\n ?.map(adapter => adapter.namespace)\n .filter((namespace) => Boolean(namespace));\n if (adapterNamespaces?.length) {\n return [...new Set(adapterNamespaces)];\n }\n const networkNamespaces = caipNetworks?.map(network => network.chainNamespace);\n return [...new Set(networkNamespaces)];\n }\n async initialize(options) {\n this.initializeProjectSettings(options);\n this.initControllers(options);\n await this.initChainAdapters();\n this.sendInitializeEvent(options);\n if (OptionsController.state.enableReconnect) {\n await this.syncExistingConnection();\n await this.syncAdapterConnections();\n }\n else {\n await this.unSyncExistingConnection();\n }\n this.remoteFeatures = await ConfigUtil.fetchRemoteFeatures(options);\n OptionsController.setRemoteFeatures(this.remoteFeatures);\n if (this.remoteFeatures.onramp) {\n OnRampController.setOnrampProviders(this.remoteFeatures.onramp);\n }\n // Check allowed origins only if email or social features are enabled\n if (OptionsController.state.remoteFeatures?.email ||\n (Array.isArray(OptionsController.state.remoteFeatures?.socials) &&\n OptionsController.state.remoteFeatures?.socials.length > 0)) {\n await this.checkAllowedOrigins();\n }\n }\n async checkAllowedOrigins() {\n try {\n const allowedOrigins = await ApiController.fetchAllowedOrigins();\n if (!allowedOrigins || !CoreHelperUtil.isClient()) {\n AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, 'error');\n return;\n }\n const currentOrigin = window.location.origin;\n const isOriginAllowed = WcHelpersUtil.isOriginAllowed(currentOrigin, allowedOrigins, WcConstantsUtil.DEFAULT_ALLOWED_ANCESTORS);\n if (!isOriginAllowed) {\n AlertController.open(ErrorUtil.ALERT_ERRORS.ORIGIN_NOT_ALLOWED, 'error');\n }\n }\n catch (error) {\n if (!(error instanceof Error)) {\n AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, 'error');\n return;\n }\n switch (error.message) {\n case 'RATE_LIMITED':\n AlertController.open(ErrorUtil.ALERT_ERRORS.RATE_LIMITED_APP_CONFIGURATION, 'error');\n break;\n case 'SERVER_ERROR': {\n const originalError = error.cause instanceof Error ? error.cause : error;\n AlertController.open({\n displayMessage: ErrorUtil.ALERT_ERRORS.SERVER_ERROR_APP_CONFIGURATION.displayMessage,\n debugMessage: ErrorUtil.ALERT_ERRORS.SERVER_ERROR_APP_CONFIGURATION.debugMessage(originalError.message)\n }, 'error');\n break;\n }\n default:\n AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, 'error');\n }\n }\n }\n sendInitializeEvent(options) {\n const { ...optionsCopy } = options;\n delete optionsCopy.adapters;\n delete optionsCopy.universalProvider;\n EventsController.sendEvent({\n type: 'track',\n event: 'INITIALIZE',\n properties: {\n ...optionsCopy,\n networks: options.networks.map(n => n.id),\n siweConfig: {\n options: options.siweConfig?.options || {}\n }\n }\n });\n }\n // -- Controllers initialization ---------------------------------------------------\n initControllers(options) {\n this.initializeOptionsController(options);\n this.initializeChainController(options);\n this.initializeThemeController(options);\n this.initializeConnectionController(options);\n this.initializeConnectorController();\n }\n initializeThemeController(options) {\n if (options.themeMode) {\n ThemeController.setThemeMode(options.themeMode);\n }\n if (options.themeVariables) {\n ThemeController.setThemeVariables(options.themeVariables);\n }\n }\n initializeChainController(options) {\n if (!this.connectionControllerClient || !this.networkControllerClient) {\n throw new Error('ConnectionControllerClient and NetworkControllerClient must be set');\n }\n ChainController.initialize(options.adapters ?? [], this.caipNetworks, {\n connectionControllerClient: this.connectionControllerClient,\n networkControllerClient: this.networkControllerClient\n });\n const network = this.getDefaultNetwork();\n if (network) {\n ChainController.setActiveCaipNetwork(network);\n }\n }\n initializeConnectionController(options) {\n ConnectionController.initialize(options.adapters ?? []);\n ConnectionController.setWcBasic(options.basic ?? false);\n }\n initializeConnectorController() {\n ConnectorController.initialize(this.chainNamespaces);\n }\n initializeProjectSettings(options) {\n OptionsController.setProjectId(options.projectId);\n OptionsController.setSdkVersion(options.sdkVersion);\n }\n initializeOptionsController(options) {\n OptionsController.setDebug(options.debug !== false);\n // On by default\n OptionsController.setEnableWalletConnect(options.enableWalletConnect !== false);\n OptionsController.setEnableWalletGuide(options.enableWalletGuide !== false);\n OptionsController.setEnableWallets(options.enableWallets !== false);\n OptionsController.setEIP6963Enabled(options.enableEIP6963 !== false);\n OptionsController.setEnableNetworkSwitch(options.enableNetworkSwitch !== false);\n OptionsController.setEnableReconnect(options.enableReconnect !== false);\n OptionsController.setEnableAuthLogger(options.enableAuthLogger !== false);\n OptionsController.setCustomRpcUrls(options.customRpcUrls);\n OptionsController.setEnableEmbedded(options.enableEmbedded);\n OptionsController.setAllWallets(options.allWallets);\n OptionsController.setIncludeWalletIds(options.includeWalletIds);\n OptionsController.setExcludeWalletIds(options.excludeWalletIds);\n OptionsController.setFeaturedWalletIds(options.featuredWalletIds);\n OptionsController.setTokens(options.tokens);\n OptionsController.setTermsConditionsUrl(options.termsConditionsUrl);\n OptionsController.setPrivacyPolicyUrl(options.privacyPolicyUrl);\n OptionsController.setCustomWallets(options.customWallets);\n OptionsController.setFeatures(options.features);\n OptionsController.setAllowUnsupportedChain(options.allowUnsupportedChain);\n OptionsController.setUniversalProviderConfigOverride(options.universalProviderConfigOverride);\n OptionsController.setPreferUniversalLinks(options.experimental_preferUniversalLinks);\n // Save option in controller\n OptionsController.setDefaultAccountTypes(options.defaultAccountTypes);\n const defaultMetaData = this.getDefaultMetaData();\n if (!options.metadata && defaultMetaData) {\n options.metadata = defaultMetaData;\n }\n OptionsController.setMetadata(options.metadata);\n OptionsController.setDisableAppend(options.disableAppend);\n OptionsController.setEnableEmbedded(options.enableEmbedded);\n OptionsController.setSIWX(options.siwx);\n if (!options.projectId) {\n AlertController.open(ErrorUtil.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED, 'error');\n return;\n }\n const evmAdapter = options.adapters?.find(adapter => adapter.namespace === ConstantsUtil.CHAIN.EVM);\n // Set the SIWE client for EVM chains\n if (evmAdapter) {\n if (options.siweConfig) {\n if (options.siwx) {\n throw new Error('Cannot set both `siweConfig` and `siwx` options');\n }\n OptionsController.setSIWX(options.siweConfig.mapToSIWX());\n }\n }\n }\n getDefaultMetaData() {\n if (CoreHelperUtil.isClient()) {\n return {\n name: document.getElementsByTagName('title')?.[0]?.textContent || '',\n description: document.querySelector('meta[property=\"og:description\"]')?.content || '',\n url: window.location.origin,\n icons: [document.querySelector('link[rel~=\"icon\"]')?.href || '']\n };\n }\n return null;\n }\n // -- Network Initialization ---------------------------------------------------\n setUnsupportedNetwork(chainId) {\n const namespace = this.getActiveChainNamespace();\n if (namespace) {\n const unsupportedNetwork = CaipNetworksUtil.getUnsupportedNetwork(`${namespace}:${chainId}`);\n ChainController.setActiveCaipNetwork(unsupportedNetwork);\n }\n }\n getDefaultNetwork() {\n return CaipNetworksUtil.getCaipNetworkFromStorage(this.defaultCaipNetwork);\n }\n extendCaipNetwork(network, options) {\n const extendedNetwork = CaipNetworksUtil.extendCaipNetwork(network, {\n customNetworkImageUrls: options.chainImages,\n projectId: options.projectId\n });\n return extendedNetwork;\n }\n extendCaipNetworks(options) {\n const extendedNetworks = CaipNetworksUtil.extendCaipNetworks(options.networks, {\n customNetworkImageUrls: options.chainImages,\n customRpcUrls: options.customRpcUrls,\n projectId: options.projectId\n });\n return extendedNetworks;\n }\n extendDefaultCaipNetwork(options) {\n const defaultNetwork = options.networks.find(n => n.id === options.defaultNetwork?.id);\n const extendedNetwork = defaultNetwork\n ? CaipNetworksUtil.extendCaipNetwork(defaultNetwork, {\n customNetworkImageUrls: options.chainImages,\n customRpcUrls: options.customRpcUrls,\n projectId: options.projectId\n })\n : undefined;\n return extendedNetwork;\n }\n async disconnectNamespace(namespace, id) {\n try {\n this.setLoading(true, namespace);\n let disconnectResult = {\n connections: []\n };\n const adapter = this.getAdapter(namespace);\n const caipAddress = ChainController.state.chains.get(namespace)?.accountState?.caipAddress;\n /**\n * When the page loaded, the controller doesn't have address yet.\n * To disconnect, we are checking enableReconnect flag to disconnect the namespace.\n */\n if ((caipAddress || !OptionsController.state.enableReconnect) && adapter?.disconnect) {\n disconnectResult = await adapter.disconnect({ id });\n }\n this.setLoading(false, namespace);\n return disconnectResult;\n }\n catch (error) {\n this.setLoading(false, namespace);\n throw new Error(`Failed to disconnect chains: ${error.message}`);\n }\n }\n // -- Client Initialization ---------------------------------------------------\n createClients() {\n this.connectionControllerClient = {\n connectWalletConnect: async () => {\n const activeChain = ChainController.state.activeChain;\n const adapter = this.getAdapter(activeChain);\n const chainId = this.getCaipNetwork(activeChain)?.id;\n const connections = ConnectionController.getConnections(activeChain);\n const isMultiWallet = this.remoteFeatures.multiWallet;\n const hasConnections = connections.length > 0;\n if (!adapter) {\n throw new Error('Adapter not found');\n }\n const result = await adapter.connectWalletConnect(chainId);\n const shouldClose = !hasConnections || !isMultiWallet;\n if (shouldClose) {\n this.close();\n }\n this.setClientId(result?.clientId || null);\n StorageUtil.setConnectedNamespaces([...ChainController.state.chains.keys()]);\n await this.syncWalletConnectAccount();\n await SIWXUtil.initializeIfEnabled();\n },\n connectExternal: async ({ id, address, info, type, provider, chain, caipNetwork, socialUri }) => {\n const activeChain = ChainController.state.activeChain;\n const namespace = chain || activeChain;\n const adapter = this.getAdapter(namespace);\n if (chain && chain !== activeChain && !caipNetwork) {\n const toConnectNetwork = this.getCaipNetworks().find(network => network.chainNamespace === chain);\n if (toConnectNetwork) {\n this.setCaipNetwork(toConnectNetwork);\n }\n }\n if (!namespace) {\n throw new Error('connectExternal: namespace not found');\n }\n if (!adapter) {\n throw new Error('connectExternal: adapter not found');\n }\n const fallbackCaipNetwork = this.getCaipNetwork(namespace);\n const res = await adapter.connect({\n id,\n address,\n info,\n type,\n provider,\n socialUri,\n chainId: caipNetwork?.id || fallbackCaipNetwork?.id,\n rpcUrl: caipNetwork?.rpcUrls?.default?.http?.[0] ||\n fallbackCaipNetwork?.rpcUrls?.default?.http?.[0]\n });\n if (!res) {\n return undefined;\n }\n StorageUtil.addConnectedNamespace(namespace);\n this.syncProvider({ ...res, chainNamespace: namespace });\n this.setStatus('connected', namespace);\n this.syncConnectedWalletInfo(namespace);\n StorageUtil.removeDisconnectedConnectorId(id, namespace);\n return { address: res.address };\n },\n reconnectExternal: async ({ id, info, type, provider }) => {\n const namespace = ChainController.state.activeChain;\n const adapter = this.getAdapter(namespace);\n if (!namespace) {\n throw new Error('reconnectExternal: namespace not found');\n }\n if (!adapter) {\n throw new Error('reconnectExternal: adapter not found');\n }\n if (adapter?.reconnect) {\n await adapter?.reconnect({ id, info, type, provider, chainId: this.getCaipNetwork()?.id });\n StorageUtil.addConnectedNamespace(namespace);\n this.syncConnectedWalletInfo(namespace);\n }\n },\n disconnect: async (params) => {\n const { id: connectorIdParam, chainNamespace, initialDisconnect } = params || {};\n const namespace = chainNamespace || ChainController.state.activeChain;\n const namespaceConnectorId = ConnectorController.getConnectorId(namespace);\n const isAuth = connectorIdParam === ConstantsUtil.CONNECTOR_ID.AUTH ||\n namespaceConnectorId === ConstantsUtil.CONNECTOR_ID.AUTH;\n const isWalletConnect = connectorIdParam === ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT ||\n namespaceConnectorId === ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n try {\n const namespaces = Array.from(ChainController.state.chains.keys());\n let namespacesToDisconnect = chainNamespace ? [chainNamespace] : namespaces;\n /*\n * If the connector is WalletConnect or Auth, disconnect all namespaces\n * since they share a single connector instance across all adapters\n */\n if (isWalletConnect || isAuth) {\n namespacesToDisconnect = namespaces;\n }\n const disconnectPromises = namespacesToDisconnect.map(async (ns) => {\n const connectorIdToDisconnect = ConnectorController.getConnectorId(ns);\n const disconnectData = await this.disconnectNamespace(ns, connectorIdParam || connectorIdToDisconnect);\n if (disconnectData) {\n if (isAuth) {\n StorageUtil.deleteConnectedSocialProvider();\n }\n disconnectData.connections.forEach(connection => {\n StorageUtil.addDisconnectedConnectorId(connection.connectorId, ns);\n });\n }\n if (initialDisconnect) {\n this.onDisconnectNamespace({ chainNamespace: ns, closeModal: false });\n }\n });\n const disconnectResults = await Promise.allSettled(disconnectPromises);\n SendController.resetSend();\n ConnectionController.resetWcConnection();\n if (SIWXUtil.getSIWX()?.signOutOnDisconnect) {\n await SIWXUtil.clearSessions();\n }\n ConnectorController.setFilterByNamespace(undefined);\n ConnectionController.syncStorageConnections();\n const failures = disconnectResults.filter((result) => result.status === 'rejected');\n if (failures.length > 0) {\n throw new Error(failures.map(f => f.reason.message).join(', '));\n }\n EventsController.sendEvent({\n type: 'track',\n event: 'DISCONNECT_SUCCESS',\n properties: {\n namespace: chainNamespace || 'all'\n }\n });\n }\n catch (error) {\n throw new Error(`Failed to disconnect chains: ${error.message}`);\n }\n },\n checkInstalled: (ids) => {\n if (!ids) {\n return Boolean(window.ethereum);\n }\n return ids.some(id => Boolean(window.ethereum?.[String(id)]));\n },\n signMessage: async (message) => {\n const namespace = ChainController.state.activeChain;\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!namespace) {\n throw new Error('signMessage: namespace not found');\n }\n if (!adapter) {\n throw new Error('signMessage: adapter not found');\n }\n const result = await adapter?.signMessage({\n message,\n address: AccountController.state.address,\n provider: ProviderUtil.getProvider(namespace)\n });\n return result?.signature || '';\n },\n sendTransaction: async (args) => {\n const namespace = args.chainNamespace;\n if (!namespace) {\n throw new Error('sendTransaction: namespace not found');\n }\n if (CoreConstantsUtil.SEND_SUPPORTED_NAMESPACES.includes(namespace)) {\n const adapter = this.getAdapter(namespace);\n if (!adapter) {\n throw new Error('sendTransaction: adapter not found');\n }\n const provider = ProviderUtil.getProvider(namespace);\n const result = await adapter?.sendTransaction({\n ...args,\n caipNetwork: this.getCaipNetwork(),\n provider\n });\n return result?.hash || '';\n }\n return '';\n },\n estimateGas: async (args) => {\n const namespace = args.chainNamespace;\n if (namespace === ConstantsUtil.CHAIN.EVM) {\n const adapter = this.getAdapter(namespace);\n if (!adapter) {\n throw new Error('estimateGas: adapter is required but got undefined');\n }\n const provider = ProviderUtil.getProvider(namespace);\n const caipNetwork = this.getCaipNetwork();\n if (!caipNetwork) {\n throw new Error('estimateGas: caipNetwork is required but got undefined');\n }\n const result = await adapter?.estimateGas({ ...args, provider, caipNetwork });\n return result?.gas || 0n;\n }\n return 0n;\n },\n getEnsAvatar: async () => {\n const namespace = ChainController.state.activeChain;\n if (!namespace) {\n throw new Error('getEnsAvatar: namespace is required but got undefined');\n }\n await this.syncIdentity({\n address: AccountController.state.address,\n chainId: Number(this.getCaipNetwork()?.id),\n chainNamespace: namespace\n });\n return AccountController.state.profileImage || false;\n },\n getEnsAddress: async (name) => await WcHelpersUtil.resolveReownName(name),\n writeContract: async (args) => {\n const namespace = ChainController.state.activeChain;\n const adapter = this.getAdapter(namespace);\n if (!namespace) {\n throw new Error('writeContract: namespace is required but got undefined');\n }\n if (!adapter) {\n throw new Error('writeContract: adapter is required but got undefined');\n }\n const caipNetwork = this.getCaipNetwork();\n const caipAddress = this.getCaipAddress();\n const provider = ProviderUtil.getProvider(namespace);\n if (!caipNetwork || !caipAddress) {\n throw new Error('writeContract: caipNetwork or caipAddress is required but got undefined');\n }\n const result = await adapter?.writeContract({ ...args, caipNetwork, provider, caipAddress });\n return result?.hash;\n },\n parseUnits: (value, decimals) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('parseUnits: adapter is required but got undefined');\n }\n return adapter?.parseUnits({ value, decimals }) ?? 0n;\n },\n formatUnits: (value, decimals) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('formatUnits: adapter is required but got undefined');\n }\n return adapter?.formatUnits({ value, decimals }) ?? '0';\n },\n getCapabilities: async (params) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('getCapabilities: adapter is required but got undefined');\n }\n return await adapter?.getCapabilities(params);\n },\n grantPermissions: async (params) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('grantPermissions: adapter is required but got undefined');\n }\n return await adapter?.grantPermissions(params);\n },\n revokePermissions: async (params) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('revokePermissions: adapter is required but got undefined');\n }\n if (adapter?.revokePermissions) {\n return await adapter.revokePermissions(params);\n }\n return '0x';\n },\n walletGetAssets: async (params) => {\n const adapter = this.getAdapter(ChainController.state.activeChain);\n if (!adapter) {\n throw new Error('walletGetAssets: adapter is required but got undefined');\n }\n return (await adapter?.walletGetAssets(params)) ?? {};\n },\n updateBalance: (namespace) => {\n const caipNetwork = this.getCaipNetwork(namespace);\n if (!caipNetwork || !AccountController.state.address) {\n return;\n }\n this.updateNativeBalance(AccountController.state.address, caipNetwork?.id, namespace);\n }\n };\n this.networkControllerClient = {\n switchCaipNetwork: async (caipNetwork) => await this.switchCaipNetwork(caipNetwork),\n // eslint-disable-next-line @typescript-eslint/require-await\n getApprovedCaipNetworksData: async () => this.getApprovedCaipNetworksData()\n };\n ConnectionController.setClient(this.connectionControllerClient);\n }\n getApprovedCaipNetworksData() {\n const providerType = ProviderUtil.getProviderId(ChainController.state.activeChain);\n if (providerType === UtilConstantsUtil.CONNECTOR_TYPE_WALLET_CONNECT) {\n const namespaces = this.universalProvider?.session?.namespaces;\n return {\n /*\n * MetaMask Wallet only returns 1 namespace in the session object. This makes it imposible\n * to switch to other networks. Setting supportsAllNetworks to true for MetaMask Wallet\n * will make it possible to switch to other networks.\n */\n supportsAllNetworks: this.universalProvider?.session?.peer?.metadata.name === 'MetaMask Wallet',\n approvedCaipNetworkIds: this.getChainsFromNamespaces(namespaces)\n };\n }\n return { supportsAllNetworks: true, approvedCaipNetworkIds: [] };\n }\n async switchCaipNetwork(caipNetwork) {\n if (!caipNetwork) {\n return;\n }\n const networkNamespace = caipNetwork.chainNamespace;\n const namespaceAddress = this.getAddressByChainNamespace(caipNetwork.chainNamespace);\n if (namespaceAddress) {\n const provider = ProviderUtil.getProvider(networkNamespace);\n const providerType = ProviderUtil.getProviderId(networkNamespace);\n if (caipNetwork.chainNamespace === ChainController.state.activeChain) {\n const adapter = this.getAdapter(networkNamespace);\n await adapter?.switchNetwork({ caipNetwork, provider, providerType });\n }\n else {\n this.setCaipNetwork(caipNetwork);\n if (providerType === UtilConstantsUtil.CONNECTOR_TYPE_WALLET_CONNECT) {\n this.syncWalletConnectAccount();\n }\n else {\n const address = this.getAddressByChainNamespace(networkNamespace);\n if (address) {\n this.syncAccount({\n address,\n chainId: caipNetwork.id,\n chainNamespace: networkNamespace\n });\n }\n }\n }\n }\n else {\n this.setCaipNetwork(caipNetwork);\n }\n }\n getChainsFromNamespaces(namespaces = {}) {\n return Object.values(namespaces).flatMap((namespace) => {\n const chains = (namespace.chains || []);\n const accountsChains = namespace.accounts.map(account => {\n const { chainId, chainNamespace } = ParseUtil.parseCaipAddress(account);\n return `${chainNamespace}:${chainId}`;\n });\n return Array.from(new Set([...chains, ...accountsChains]));\n });\n }\n // -- Adapter Initialization ---------------------------------------------------\n createAdapters(blueprints) {\n this.createClients();\n return this.chainNamespaces.reduce((adapters, namespace) => {\n const blueprint = blueprints?.find(b => b.namespace === namespace);\n if (blueprint) {\n blueprint.construct({\n namespace,\n projectId: this.options?.projectId,\n networks: this.getCaipNetworks()\n });\n adapters[namespace] = blueprint;\n }\n else {\n adapters[namespace] = new UniversalAdapter({\n namespace,\n networks: this.getCaipNetworks()\n });\n }\n return adapters;\n // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter\n }, {});\n }\n async initChainAdapter(namespace) {\n this.onConnectors(namespace);\n this.listenAdapter(namespace);\n await this.chainAdapters?.[namespace].syncConnectors(this.options, this);\n await this.createUniversalProviderForAdapter(namespace);\n }\n async initChainAdapters() {\n await Promise.all(this.chainNamespaces.map(async (namespace) => {\n await this.initChainAdapter(namespace);\n }));\n }\n onConnectors(chainNamespace) {\n const adapter = this.getAdapter(chainNamespace);\n adapter?.on('connectors', this.setConnectors.bind(this));\n }\n listenAdapter(chainNamespace) {\n const adapter = this.getAdapter(chainNamespace);\n if (!adapter) {\n return;\n }\n const connectionStatus = StorageUtil.getConnectionStatus();\n if (OptionsController.state.enableReconnect === false) {\n this.setStatus('disconnected', chainNamespace);\n }\n else if (connectionStatus === 'connected') {\n this.setStatus('connecting', chainNamespace);\n }\n else if (connectionStatus === 'disconnected') {\n /*\n * Address cache is kept after disconnecting from the wallet\n * but should be cleared if appkit is launched in disconnected state\n */\n StorageUtil.clearAddressCache();\n this.setStatus(connectionStatus, chainNamespace);\n }\n else {\n this.setStatus(connectionStatus, chainNamespace);\n }\n adapter.on('switchNetwork', ({ address, chainId }) => {\n const caipNetwork = this.getCaipNetworks().find(n => n.id.toString() === chainId.toString() ||\n n.caipNetworkId.toString() === chainId.toString());\n const isSameNamespace = ChainController.state.activeChain === chainNamespace;\n const accountAddress = ChainController.state.chains.get(chainNamespace)?.accountState?.address;\n if (caipNetwork) {\n const account = isSameNamespace && address ? address : accountAddress;\n if (account) {\n this.syncAccount({ address: account, chainId: caipNetwork.id, chainNamespace });\n }\n }\n else {\n this.setUnsupportedNetwork(chainId);\n }\n });\n adapter.on('disconnect', () => {\n const isMultiWallet = this.remoteFeatures.multiWallet;\n const allConnections = Array.from(ConnectionController.state.connections.values()).flat();\n this.onDisconnectNamespace({\n chainNamespace,\n closeModal: !isMultiWallet || allConnections.length === 0\n });\n });\n adapter.on('connections', connections => {\n this.setConnections(connections, chainNamespace);\n });\n adapter.on('pendingTransactions', () => {\n const address = AccountController.state.address;\n const activeCaipNetwork = ChainController.state.activeCaipNetwork;\n if (!address || !activeCaipNetwork?.id) {\n return;\n }\n this.updateNativeBalance(address, activeCaipNetwork.id, activeCaipNetwork.chainNamespace);\n });\n adapter.on('accountChanged', ({ address, chainId, connector }) => {\n const isActiveChain = ChainController.state.activeChain === chainNamespace;\n if (connector?.provider) {\n this.syncProvider({\n id: connector.id,\n type: connector.type,\n provider: connector.provider,\n chainNamespace\n });\n this.syncConnectedWalletInfo(chainNamespace);\n }\n if (isActiveChain && chainId) {\n this.syncAccount({\n address,\n chainId,\n chainNamespace\n });\n }\n else if (isActiveChain && ChainController.state.activeCaipNetwork?.id) {\n this.syncAccount({\n address,\n chainId: ChainController.state.activeCaipNetwork?.id,\n chainNamespace\n });\n }\n else {\n this.syncAccountInfo(address, chainId, chainNamespace);\n }\n StorageUtil.addConnectedNamespace(chainNamespace);\n });\n }\n async createUniversalProviderForAdapter(chainNamespace) {\n await this.getUniversalProvider();\n if (this.universalProvider) {\n await this.chainAdapters?.[chainNamespace]?.setUniversalProvider?.(this.universalProvider);\n }\n }\n // -- Connection Sync ---------------------------------------------------\n async syncExistingConnection() {\n await Promise.allSettled(this.chainNamespaces.map(namespace => this.syncNamespaceConnection(namespace)));\n }\n async unSyncExistingConnection() {\n try {\n await Promise.allSettled(this.chainNamespaces.map(namespace => ConnectionController.disconnect({ namespace, initialDisconnect: true })));\n }\n catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error disconnecting existing connections:', error);\n }\n }\n async syncNamespaceConnection(namespace) {\n try {\n if (namespace === ConstantsUtil.CHAIN.EVM && CoreHelperUtil.isSafeApp()) {\n ConnectorController.setConnectorId(ConstantsUtil.CONNECTOR_ID.SAFE, namespace);\n }\n const connectorId = ConnectorController.getConnectorId(namespace);\n this.setStatus('connecting', namespace);\n switch (connectorId) {\n case ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT:\n await this.syncWalletConnectAccount();\n break;\n case ConstantsUtil.CONNECTOR_ID.AUTH:\n // Handled during initialization of adapters' auth provider\n break;\n default:\n await this.syncAdapterConnection(namespace);\n }\n }\n catch (err) {\n console.warn(\"AppKit couldn't sync existing connection\", err);\n this.setStatus('disconnected', namespace);\n }\n }\n onDisconnectNamespace(options) {\n const { chainNamespace, closeModal } = options || {};\n ChainController.resetAccount(chainNamespace);\n ChainController.resetNetwork(chainNamespace);\n StorageUtil.removeConnectedNamespace(chainNamespace);\n const namespaces = Array.from(ChainController.state.chains.keys());\n const namespacesToDisconnect = chainNamespace ? [chainNamespace] : namespaces;\n namespacesToDisconnect.forEach(ns => StorageUtil.addDisconnectedConnectorId(ConnectorController.getConnectorId(ns) || '', ns));\n ConnectorController.removeConnectorId(chainNamespace);\n ProviderUtil.resetChain(chainNamespace);\n this.setUser(undefined, chainNamespace);\n this.setStatus('disconnected', chainNamespace);\n this.setConnectedWalletInfo(undefined, chainNamespace);\n if (closeModal !== false) {\n ModalController.close();\n }\n }\n async syncAdapterConnections() {\n await Promise.allSettled(this.chainNamespaces.map(namespace => {\n const caipAddress = this.getCaipAddress(namespace);\n const caipNetwork = this.getCaipNetwork(namespace);\n return this.chainAdapters?.[namespace].syncConnections({\n connectToFirstConnector: !caipAddress,\n caipNetwork,\n getConnectorStorageInfo(connectorId) {\n const storageConnectionsByNamespace = StorageUtil.getConnections();\n const storageConnections = storageConnectionsByNamespace[namespace] ?? [];\n return {\n hasDisconnected: StorageUtil.isConnectorDisconnected(connectorId, namespace),\n hasConnected: storageConnections.some(c => HelpersUtil.isLowerCaseMatch(c.connectorId, connectorId))\n };\n }\n });\n }));\n }\n async syncAdapterConnection(namespace) {\n const adapter = this.getAdapter(namespace);\n const connectorId = ConnectorController.getConnectorId(namespace);\n const caipNetwork = this.getCaipNetwork(namespace);\n const connectors = ConnectorController.getConnectors(namespace);\n const connector = connectors.find(c => c.id === connectorId);\n try {\n if (!adapter || !connector) {\n throw new Error(`Adapter or connector not found for namespace ${namespace}`);\n }\n if (!caipNetwork?.id) {\n throw new Error('CaipNetwork not found');\n }\n const connection = await adapter?.syncConnection({\n namespace,\n id: connector.id,\n chainId: caipNetwork.id,\n rpcUrl: caipNetwork?.rpcUrls?.default?.http?.[0]\n });\n if (connection) {\n this.syncProvider({ ...connection, chainNamespace: namespace });\n await this.syncAccount({ ...connection, chainNamespace: namespace });\n this.setStatus('connected', namespace);\n }\n else {\n this.setStatus('disconnected', namespace);\n }\n }\n catch (e) {\n this.onDisconnectNamespace({ chainNamespace: namespace, closeModal: false });\n }\n }\n async syncWalletConnectAccount() {\n const sessionNamespaces = Object.keys(this.universalProvider?.session?.namespaces || {});\n const syncTasks = this.chainNamespaces.map(async (chainNamespace) => {\n const adapter = this.getAdapter(chainNamespace);\n if (!adapter) {\n return;\n }\n const namespaceAccounts = this.universalProvider?.session?.namespaces?.[chainNamespace]?.accounts || [];\n // We try and find the address for this network in the session object.\n const activeChainId = ChainController.state.activeCaipNetwork?.id;\n const sessionAddress = namespaceAccounts.find(account => {\n const { chainId } = ParseUtil.parseCaipAddress(account);\n return chainId === activeChainId?.toString();\n }) || namespaceAccounts[0];\n if (sessionAddress) {\n const caipAddress = ParseUtil.validateCaipAddress(sessionAddress);\n const { chainId, address } = ParseUtil.parseCaipAddress(caipAddress);\n ProviderUtil.setProviderId(chainNamespace, UtilConstantsUtil.CONNECTOR_TYPE_WALLET_CONNECT);\n if (this.caipNetworks &&\n ChainController.state.activeCaipNetwork &&\n adapter.namespace !== ConstantsUtil.CHAIN.EVM) {\n const provider = adapter.getWalletConnectProvider({\n caipNetworks: this.getCaipNetworks(),\n provider: this.universalProvider,\n activeCaipNetwork: ChainController.state.activeCaipNetwork\n });\n ProviderUtil.setProvider(chainNamespace, provider);\n }\n else {\n ProviderUtil.setProvider(chainNamespace, this.universalProvider);\n }\n ConnectorController.setConnectorId(ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT, chainNamespace);\n StorageUtil.addConnectedNamespace(chainNamespace);\n await this.syncAccount({\n address,\n chainId,\n chainNamespace\n });\n }\n else if (sessionNamespaces.includes(chainNamespace)) {\n this.setStatus('disconnected', chainNamespace);\n }\n this.syncConnectedWalletInfo(chainNamespace);\n await ChainController.setApprovedCaipNetworksData(chainNamespace);\n });\n await Promise.all(syncTasks);\n }\n syncProvider({ type, provider, id, chainNamespace }) {\n ProviderUtil.setProviderId(chainNamespace, type);\n ProviderUtil.setProvider(chainNamespace, provider);\n ConnectorController.setConnectorId(id, chainNamespace);\n }\n async syncAccount(params) {\n const isActiveNamespace = params.chainNamespace === ChainController.state.activeChain;\n const networkOfChain = ChainController.getCaipNetworkByNamespace(params.chainNamespace, params.chainId);\n const { address, chainId, chainNamespace } = params;\n const { chainId: activeChainId } = StorageUtil.getActiveNetworkProps();\n const chainIdToUse = chainId || activeChainId;\n const isUnsupportedNetwork = ChainController.state.activeCaipNetwork?.name === ConstantsUtil.UNSUPPORTED_NETWORK_NAME;\n const shouldSupportAllNetworks = ChainController.getNetworkProp('supportsAllNetworks', chainNamespace);\n this.setStatus('connected', chainNamespace);\n if (isUnsupportedNetwork && !shouldSupportAllNetworks) {\n return;\n }\n if (chainIdToUse) {\n let caipNetwork = this.getCaipNetworks().find(n => n.id.toString() === chainIdToUse.toString());\n let fallbackCaipNetwork = this.getCaipNetworks().find(n => n.chainNamespace === chainNamespace);\n // If doesn't support all networks, we need to use approved networks\n if (!shouldSupportAllNetworks && !caipNetwork && !fallbackCaipNetwork) {\n // Connection can be requested for a chain that is not supported by the wallet so we need to use approved networks here\n const caipNetworkIds = this.getApprovedCaipNetworkIds() || [];\n const caipNetworkId = caipNetworkIds.find(id => ParseUtil.parseCaipNetworkId(id)?.chainId === chainIdToUse.toString());\n const fallBackCaipNetworkId = caipNetworkIds.find(id => ParseUtil.parseCaipNetworkId(id)?.chainNamespace === chainNamespace);\n caipNetwork = this.getCaipNetworks().find(n => n.caipNetworkId === caipNetworkId);\n fallbackCaipNetwork = this.getCaipNetworks().find(n => n.caipNetworkId === fallBackCaipNetworkId ||\n // This is a workaround used in Solana network to support deprecated caipNetworkId\n ('deprecatedCaipNetworkId' in n && n.deprecatedCaipNetworkId === fallBackCaipNetworkId));\n }\n const network = caipNetwork || fallbackCaipNetwork;\n if (network?.chainNamespace === ChainController.state.activeChain) {\n // If the network is unsupported and the user doesn't allow unsupported chains, we show the unsupported chain UI\n if (OptionsController.state.enableNetworkSwitch &&\n !OptionsController.state.allowUnsupportedChain &&\n ChainController.state.activeCaipNetwork?.name === ConstantsUtil.UNSUPPORTED_NETWORK_NAME) {\n ChainController.showUnsupportedChainUI();\n }\n else {\n this.setCaipNetwork(network);\n }\n }\n else if (!isActiveNamespace) {\n if (networkOfChain) {\n this.setCaipNetworkOfNamespace(networkOfChain, chainNamespace);\n }\n }\n this.syncConnectedWalletInfo(chainNamespace);\n if (!HelpersUtil.isLowerCaseMatch(address, AccountController.state.address)) {\n this.syncAccountInfo(address, network?.id, chainNamespace);\n }\n if (isActiveNamespace) {\n await this.syncBalance({ address, chainId: network?.id, chainNamespace });\n }\n else {\n await this.syncBalance({ address, chainId: networkOfChain?.id, chainNamespace });\n }\n }\n }\n async syncAccountInfo(address, chainId, chainNamespace) {\n const caipAddress = this.getCaipAddress(chainNamespace);\n const newChainId = chainId || caipAddress?.split(':')[1];\n if (!newChainId) {\n return;\n }\n const newCaipAddress = `${chainNamespace}:${newChainId}:${address}`;\n this.setCaipAddress(newCaipAddress, chainNamespace);\n await this.syncIdentity({\n address,\n chainId: newChainId,\n chainNamespace\n });\n }\n async syncReownName(address, chainNamespace) {\n try {\n const registeredWcNames = await this.getReownName(address);\n if (registeredWcNames[0]) {\n const wcName = registeredWcNames[0];\n this.setProfileName(wcName.name, chainNamespace);\n }\n else {\n this.setProfileName(null, chainNamespace);\n }\n }\n catch {\n this.setProfileName(null, chainNamespace);\n }\n }\n syncConnectedWalletInfo(chainNamespace) {\n const connectorId = ConnectorController.getConnectorId(chainNamespace);\n const providerType = ProviderUtil.getProviderId(chainNamespace);\n if (providerType === UtilConstantsUtil.CONNECTOR_TYPE_ANNOUNCED ||\n providerType === UtilConstantsUtil.CONNECTOR_TYPE_INJECTED) {\n if (connectorId) {\n const connectors = this.getConnectors();\n const connector = connectors.find(c => {\n const isConnectorId = c.id === connectorId;\n const isRdns = c.info?.rdns === connectorId;\n const hasMultiChainConnector = c.connectors?.some(_c => _c.id === connectorId || _c.info?.rdns === connectorId);\n return isConnectorId || isRdns || Boolean(hasMultiChainConnector);\n });\n if (connector) {\n const { info, name, imageUrl } = connector;\n const icon = imageUrl || this.getConnectorImage(connector);\n this.setConnectedWalletInfo({ name, icon, ...info }, chainNamespace);\n }\n }\n }\n else if (providerType === UtilConstantsUtil.CONNECTOR_TYPE_WALLET_CONNECT) {\n const provider = ProviderUtil.getProvider(chainNamespace);\n if (provider?.session) {\n this.setConnectedWalletInfo({\n ...provider.session.peer.metadata,\n name: provider.session.peer.metadata.name,\n icon: provider.session.peer.metadata.icons?.[0]\n }, chainNamespace);\n }\n }\n else if (connectorId) {\n if (connectorId === ConstantsUtil.CONNECTOR_ID.COINBASE_SDK ||\n connectorId === ConstantsUtil.CONNECTOR_ID.COINBASE) {\n const connector = this.getConnectors().find(c => c.id === connectorId);\n const name = connector?.name || 'Coinbase Wallet';\n const icon = connector?.imageUrl || this.getConnectorImage(connector);\n const info = connector?.info;\n this.setConnectedWalletInfo({\n ...info,\n name,\n icon\n }, chainNamespace);\n }\n }\n }\n async syncBalance(params) {\n const caipNetwork = NetworkUtil.getNetworksByNamespace(this.getCaipNetworks(), params.chainNamespace).find(n => n.id.toString() === params.chainId?.toString());\n if (!caipNetwork || !params.chainId) {\n return;\n }\n await this.updateNativeBalance(params.address, params.chainId, params.chainNamespace);\n }\n async ready() {\n await this.readyPromise;\n }\n async updateNativeBalance(address, chainId, namespace) {\n const adapter = this.getAdapter(namespace);\n const caipNetwork = ChainController.getCaipNetworkByNamespace(namespace, chainId);\n if (adapter) {\n const balance = await adapter.getBalance({\n address,\n chainId,\n caipNetwork,\n tokens: this.options.tokens\n });\n this.setBalance(balance.balance, balance.symbol, namespace);\n return balance;\n }\n return undefined;\n }\n // -- Universal Provider ---------------------------------------------------\n async initializeUniversalAdapter() {\n const logger = LoggerUtil.createLogger((error, ...args) => {\n if (error) {\n this.handleAlertError(error);\n }\n // eslint-disable-next-line no-console\n console.error(...args);\n });\n const universalProviderOptions = {\n projectId: this.options?.projectId,\n metadata: {\n name: this.options?.metadata ? this.options?.metadata.name : '',\n description: this.options?.metadata ? this.options?.metadata.description : '',\n url: this.options?.metadata ? this.options?.metadata.url : '',\n icons: this.options?.metadata ? this.options?.metadata.icons : ['']\n },\n logger\n };\n OptionsController.setManualWCControl(Boolean(this.options?.manualWCControl));\n this.universalProvider =\n this.options.universalProvider ?? (await UniversalProvider.init(universalProviderOptions));\n // Clear the session if we don't want to reconnect on init\n if (OptionsController.state.enableReconnect === false && this.universalProvider.session) {\n await this.universalProvider.disconnect();\n }\n this.listenWalletConnect();\n }\n listenWalletConnect() {\n if (this.universalProvider) {\n this.chainNamespaces.forEach(namespace => {\n WcHelpersUtil.listenWcProvider({\n universalProvider: this.universalProvider,\n namespace,\n onDisplayUri: uri => {\n ConnectionController.setUri(uri);\n },\n onConnect: () => {\n ConnectionController.finalizeWcConnection();\n },\n onDisconnect: () => {\n if (ChainController.state.noAdapters) {\n this.resetAccount(namespace);\n }\n ConnectionController.resetWcConnection();\n },\n onChainChanged: chainId => {\n const activeNamespace = ChainController.state.activeChain;\n const isCurrentConnectorWalletConnect = activeNamespace &&\n ConnectorController.state.activeConnectorIds[activeNamespace] ===\n ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n if (activeNamespace === namespace &&\n (ChainController.state.noAdapters || isCurrentConnectorWalletConnect)) {\n const caipNetwork = this.getCaipNetworks().find(n => n.id.toString() === chainId.toString() ||\n n.caipNetworkId.toString() === chainId.toString());\n const currentCaipNetwork = this.getCaipNetwork();\n if (!caipNetwork) {\n this.setUnsupportedNetwork(chainId);\n return;\n }\n if (currentCaipNetwork?.id.toString() !== caipNetwork?.id.toString() &&\n currentCaipNetwork?.chainNamespace === caipNetwork?.chainNamespace) {\n this.setCaipNetwork(caipNetwork);\n }\n }\n },\n onAccountsChanged: accounts => {\n const activeNamespace = ChainController.state.activeChain;\n const isCurrentConnectorWalletConnect = activeNamespace &&\n ConnectorController.state.activeConnectorIds[activeNamespace] ===\n ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;\n if (activeNamespace === namespace &&\n (ChainController.state.noAdapters || isCurrentConnectorWalletConnect)) {\n if (accounts.length > 0) {\n const account = accounts[0];\n this.syncAccount({\n address: account.address,\n chainId: account.chainId,\n chainNamespace: account.chainNamespace\n });\n }\n }\n }\n });\n });\n }\n }\n createUniversalProvider() {\n if (!this.universalProviderInitPromise &&\n CoreHelperUtil.isClient() &&\n this.options?.projectId) {\n this.universalProviderInitPromise = this.initializeUniversalAdapter();\n }\n return this.universalProviderInitPromise;\n }\n async getUniversalProvider() {\n if (!this.universalProvider) {\n try {\n await this.createUniversalProvider();\n }\n catch (err) {\n EventsController.sendEvent({\n type: 'error',\n event: 'INTERNAL_SDK_ERROR',\n properties: {\n errorType: 'UniversalProviderInitError',\n errorMessage: err instanceof Error ? err.message : 'Unknown',\n uncaught: false\n }\n });\n // eslint-disable-next-line no-console\n console.error('AppKit:getUniversalProvider - Cannot create provider', err);\n }\n }\n return this.universalProvider;\n }\n // - Utils -------------------------------------------------------------------\n handleAlertError(error) {\n const matchedUniversalProviderError = Object.entries(ErrorUtil.UniversalProviderErrors).find(([, { message }]) => error.message.includes(message));\n const [errorKey, errorValue] = matchedUniversalProviderError ?? [];\n const { message, alertErrorKey } = errorValue ?? {};\n if (errorKey && message && !this.reportedAlertErrors[errorKey]) {\n const alertError = ErrorUtil.ALERT_ERRORS[alertErrorKey];\n if (alertError) {\n AlertController.open(alertError, 'error');\n this.reportedAlertErrors[errorKey] = true;\n }\n }\n }\n getAdapter(namespace) {\n if (!namespace) {\n return undefined;\n }\n return this.chainAdapters?.[namespace];\n }\n createAdapter(blueprint) {\n if (!blueprint) {\n return;\n }\n const namespace = blueprint.namespace;\n if (!namespace) {\n return;\n }\n this.createClients();\n const adapterBlueprint = blueprint;\n adapterBlueprint.namespace = namespace;\n adapterBlueprint.construct({\n namespace,\n projectId: this.options?.projectId,\n networks: this.getCaipNetworks()\n });\n if (!this.chainNamespaces.includes(namespace)) {\n this.chainNamespaces.push(namespace);\n }\n if (this.chainAdapters) {\n this.chainAdapters[namespace] = adapterBlueprint;\n }\n }\n // -- Public -------------------------------------------------------------------\n async open(options) {\n await this.injectModalUi();\n if (options?.uri) {\n ConnectionController.setUri(options.uri);\n }\n if (options?.arguments) {\n switch (options?.view) {\n case 'Swap':\n return ModalController.open({ ...options, data: { swap: options.arguments } });\n default:\n }\n }\n return ModalController.open(options);\n }\n async close() {\n await this.injectModalUi();\n ModalController.close();\n }\n setLoading(loading, namespace) {\n ModalController.setLoading(loading, namespace);\n }\n async disconnect(chainNamespace) {\n await ConnectionController.disconnect({ namespace: chainNamespace });\n }\n getSIWX() {\n return OptionsController.state.siwx;\n }\n // -- review these -------------------------------------------------------------------\n getError() {\n return '';\n }\n getChainId() {\n return ChainController.state.activeCaipNetwork?.id;\n }\n async switchNetwork(appKitNetwork) {\n const network = this.getCaipNetworks().find(n => n.id === appKitNetwork.id);\n if (!network) {\n AlertController.open(ErrorUtil.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND, 'error');\n return;\n }\n await ChainController.switchActiveNetwork(network);\n }\n getWalletProvider() {\n return ChainController.state.activeChain\n ? ProviderUtil.state.providers[ChainController.state.activeChain]\n : null;\n }\n getWalletProviderType() {\n return ProviderUtil.getProviderId(ChainController.state.activeChain);\n }\n subscribeProviders(callback) {\n return ProviderUtil.subscribeProviders(callback);\n }\n getThemeMode() {\n return ThemeController.state.themeMode;\n }\n getThemeVariables() {\n return ThemeController.state.themeVariables;\n }\n setThemeMode(themeMode) {\n ThemeController.setThemeMode(themeMode);\n setColorTheme(ThemeController.state.themeMode);\n }\n setTermsConditionsUrl(termsConditionsUrl) {\n OptionsController.setTermsConditionsUrl(termsConditionsUrl);\n }\n setPrivacyPolicyUrl(privacyPolicyUrl) {\n OptionsController.setPrivacyPolicyUrl(privacyPolicyUrl);\n }\n setThemeVariables(themeVariables) {\n ThemeController.setThemeVariables(themeVariables);\n setThemeVariables(ThemeController.state.themeVariables);\n }\n subscribeTheme(callback) {\n return ThemeController.subscribe(callback);\n }\n subscribeConnections(callback) {\n if (!this.remoteFeatures.multiWallet) {\n AlertController.open(ConstantsUtil.REMOTE_FEATURES_ALERTS.MULTI_WALLET_NOT_ENABLED.DEFAULT, 'info');\n return () => undefined;\n }\n return ConnectionController.subscribe(callback);\n }\n getWalletInfo(namespace) {\n if (namespace) {\n return ChainController.state.chains.get(namespace)?.accountState?.connectedWalletInfo;\n }\n return AccountController.state.connectedWalletInfo;\n }\n getAccount(_namespace) {\n const namespace = _namespace || ChainController.state.activeChain;\n const authConnector = ConnectorController.getAuthConnector(namespace);\n const accountState = ChainController.getAccountData(namespace);\n const activeConnectorId = StorageUtil.getConnectedConnectorId(ChainController.state.activeChain);\n const connections = ConnectionController.getConnections(namespace);\n if (!namespace) {\n throw new Error('AppKit:getAccount - namespace is required');\n }\n const allAccounts = connections.flatMap(connection => connection.accounts.map(({ address, type }) => CoreHelperUtil.createAccount(namespace, address, (type || 'eoa'))));\n if (!accountState) {\n return undefined;\n }\n return {\n allAccounts,\n caipAddress: accountState.caipAddress,\n address: CoreHelperUtil.getPlainAddress(accountState.caipAddress),\n isConnected: Boolean(accountState.caipAddress),\n status: accountState.status,\n embeddedWalletInfo: authConnector && activeConnectorId === ConstantsUtil.CONNECTOR_ID.AUTH\n ? {\n user: accountState.user\n ? {\n ...accountState.user,\n /*\n * Getting the username from the chain controller works well for social logins,\n * but Farcaster uses a different connection flow and doesn't emit the username via events.\n * Since the username is stored in local storage before the chain controller updates,\n * it's safe to use the local storage value here.\n */\n username: StorageUtil.getConnectedSocialUsername()\n }\n : undefined,\n authProvider: accountState.socialProvider ||\n 'email',\n accountType: getPreferredAccountType(namespace),\n isSmartAccountDeployed: Boolean(accountState.smartAccountDeployed)\n }\n : undefined\n };\n }\n subscribeAccount(callback, namespace) {\n const updateVal = () => {\n const account = this.getAccount(namespace);\n if (!account) {\n return;\n }\n callback(account);\n };\n if (namespace) {\n ChainController.subscribeChainProp('accountState', updateVal, namespace);\n }\n else {\n ChainController.subscribe(updateVal);\n }\n ConnectorController.subscribe(updateVal);\n }\n subscribeNetwork(callback) {\n return ChainController.subscribe(({ activeCaipNetwork }) => {\n callback({\n caipNetwork: activeCaipNetwork,\n chainId: activeCaipNetwork?.id,\n caipNetworkId: activeCaipNetwork?.caipNetworkId\n });\n });\n }\n subscribeWalletInfo(callback, namespace) {\n if (namespace) {\n return AccountController.subscribeKey('connectedWalletInfo', callback, namespace);\n }\n return AccountController.subscribeKey('connectedWalletInfo', callback);\n }\n subscribeShouldUpdateToAddress(callback) {\n AccountController.subscribeKey('shouldUpdateToAddress', callback);\n }\n subscribeCaipNetworkChange(callback) {\n ChainController.subscribeKey('activeCaipNetwork', callback);\n }\n getState() {\n return PublicStateController.state;\n }\n getRemoteFeatures() {\n return OptionsController.state.remoteFeatures;\n }\n subscribeState(callback) {\n return PublicStateController.subscribe(callback);\n }\n subscribeRemoteFeatures(callback) {\n return OptionsController.subscribeKey('remoteFeatures', callback);\n }\n showErrorMessage(message) {\n SnackController.showError(message);\n }\n showSuccessMessage(message) {\n SnackController.showSuccess(message);\n }\n getEvent() {\n return { ...EventsController.state };\n }\n subscribeEvents(callback) {\n return EventsController.subscribe(callback);\n }\n replace(route) {\n RouterController.replace(route);\n }\n redirect(route) {\n RouterController.push(route);\n }\n popTransactionStack(status) {\n RouterController.popTransactionStack(status);\n }\n isOpen() {\n return ModalController.state.open;\n }\n isTransactionStackEmpty() {\n return RouterController.state.transactionStack.length === 0;\n }\n static getInstance() {\n return this.instance;\n }\n updateFeatures(newFeatures) {\n OptionsController.setFeatures(newFeatures);\n }\n updateRemoteFeatures(newRemoteFeatures) {\n OptionsController.setRemoteFeatures(newRemoteFeatures);\n }\n updateOptions(newOptions) {\n const currentOptions = OptionsController.state || {};\n const updatedOptions = { ...currentOptions, ...newOptions };\n OptionsController.setOptions(updatedOptions);\n }\n setConnectMethodsOrder(connectMethodsOrder) {\n OptionsController.setConnectMethodsOrder(connectMethodsOrder);\n }\n setWalletFeaturesOrder(walletFeaturesOrder) {\n OptionsController.setWalletFeaturesOrder(walletFeaturesOrder);\n }\n setCollapseWallets(collapseWallets) {\n OptionsController.setCollapseWallets(collapseWallets);\n }\n setSocialsOrder(socialsOrder) {\n OptionsController.setSocialsOrder(socialsOrder);\n }\n getConnectMethodsOrder() {\n return WalletUtil.getConnectOrderMethod(OptionsController.state.features, ConnectorController.getConnectors());\n }\n /**\n * Adds a network to an existing adapter in AppKit.\n * @param namespace - The chain namespace to add the network to (e.g. 'eip155', 'solana')\n * @param network - The network configuration to add\n * @throws Error if adapter for namespace doesn't exist\n */\n addNetwork(namespace, network) {\n if (this.chainAdapters && !this.chainAdapters[namespace]) {\n throw new Error(`Adapter for namespace ${namespace} doesn't exist`);\n }\n const extendedNetwork = this.extendCaipNetwork(network, this.options);\n if (!this.getCaipNetworks().find(n => n.id === extendedNetwork.id)) {\n ChainController.addNetwork(extendedNetwork);\n }\n }\n /**\n * Removes a network from an existing adapter in AppKit.\n * @param namespace - The chain namespace the network belongs to\n * @param networkId - The network ID to remove\n * @throws Error if adapter for namespace doesn't exist or if removing last network\n */\n removeNetwork(namespace, networkId) {\n if (this.chainAdapters && !this.chainAdapters[namespace]) {\n throw new Error(`Adapter for namespace ${namespace} doesn't exist`);\n }\n const networkToRemove = this.getCaipNetworks().find(n => n.id === networkId);\n if (!networkToRemove) {\n return;\n }\n ChainController.removeNetwork(namespace, networkId);\n }\n}\n//# sourceMappingURL=appkit-base-client.js.map","import {} from '@reown/appkit-common';\nimport { AccountController, ConnectionController, ConnectorController, CoreHelperUtil, OptionsController } from '@reown/appkit-controllers';\nimport { AppKitBaseClient } from './appkit-base-client.js';\n// -- Export Controllers -------------------------------------------------------\nexport { AccountController };\n// -- Helpers -------------------------------------------------------------------\nlet isInitialized = false;\n// -- Client --------------------------------------------------------------------\nexport class AppKit extends AppKitBaseClient {\n // -- Overrides --------------------------------------------------------------\n async open(options) {\n // Only open modal when not connected\n const isConnected = ConnectorController.isConnected();\n if (!isConnected) {\n await super.open(options);\n }\n }\n async close() {\n await super.close();\n if (this.options.manualWCControl) {\n ConnectionController.finalizeWcConnection();\n }\n }\n async syncIdentity(_request) {\n return Promise.resolve();\n }\n async syncBalance(_params) {\n return Promise.resolve();\n }\n async injectModalUi() {\n if (!isInitialized && CoreHelperUtil.isClient()) {\n await import('@reown/appkit-scaffold-ui/basic');\n await import('@reown/appkit-scaffold-ui/w3m-modal');\n const isElementCreated = document.querySelector('w3m-modal');\n if (!isElementCreated) {\n const modal = document.createElement('w3m-modal');\n if (!OptionsController.state.disableAppend && !OptionsController.state.enableEmbedded) {\n document.body.insertAdjacentElement('beforeend', modal);\n }\n }\n isInitialized = true;\n }\n }\n}\n//# sourceMappingURL=appkit-core.js.map","export const PACKAGE_VERSION = '1.7.17';\n//# sourceMappingURL=constants.js.map","import { AppKit } from '../src/client/appkit-core.js';\nimport { PACKAGE_VERSION } from './constants.js';\nexport function createAppKit(options) {\n return new AppKit({\n ...options,\n basic: true,\n sdkVersion: `html-core-${PACKAGE_VERSION}`\n });\n}\nexport { AppKit };\n//# sourceMappingURL=core.js.map","import { UniversalProvider } from '@walletconnect/universal-provider';\nimport { AppKit, createAppKit } from '@reown/appkit/core';\nexport class UniversalConnector {\n constructor({ appKit, provider, config }) {\n this.appKit = appKit;\n this.provider = provider;\n this.config = config;\n }\n static async init(config) {\n const provider = await UniversalProvider.init({\n projectId: config.projectId,\n metadata: config.metadata\n });\n const appKitConfig = {\n networks: config.networks.flatMap(network => network.chains),\n projectId: config.projectId,\n metadata: config.metadata,\n universalProvider: provider,\n manualWCControl: true\n };\n const appKit = createAppKit(appKitConfig);\n return new UniversalConnector({ appKit, provider, config });\n }\n async connect() {\n const namespaces = this.config?.networks.reduce((acc, namespace) => {\n acc[namespace.namespace] = {\n ...(namespace || {}),\n methods: namespace?.methods || [],\n events: namespace?.events || [],\n chains: namespace?.chains?.map((chain) => chain.caipNetworkId) || []\n };\n return acc;\n }, {});\n try {\n await this.appKit.open();\n const session = await this.provider.connect({\n optionalNamespaces: namespaces\n });\n if (!session) {\n throw new Error('Error connecting to wallet: No session found');\n }\n await this.appKit.close();\n return { session };\n }\n catch (error) {\n await this.appKit.close();\n throw new Error(`Error connecting to wallet: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n async disconnect() {\n await this.appKit.disconnect();\n await this.provider.disconnect();\n }\n async request(params, chain) {\n return await this.provider.request(params, chain);\n }\n}\nexport default UniversalConnector;\n//# sourceMappingURL=UniversalConnector.js.map","import {bytesToUtf8,hexToBytes,bytesToHex,NoSessionDataError,utf8ToBytes}from'@stacks/common';import {base64}from'@scure/base';import {getProviderFromId,getSelectedProviderId,getProvider,clearSelectedProviderId,getInstalledProviders,setSelectedProviderId}from'@stacks/connect-ui';export{clearSelectedProviderId,getProvider as getSelectedProvider,getSelectedProviderId,isProviderSelected,setSelectedProviderId}from'@stacks/connect-ui';import {defineCustomElements}from'@stacks/connect-ui/loader';import {deserializeTransaction,postConditionToHex,Cl,Address,PostConditionMode}from'@stacks/transactions';import {ChainId,TransactionVersion}from'@stacks/network';import {StacksNetwork,StacksMainnet,StacksTestnet,StacksDevnet,StacksMocknet}from'@stacks/network-v6';import {ClarityType,serializePostCondition}from'@stacks/transactions-v6';import {UniversalConnector}from'@reown/appkit-universal-connector';import {bitcoin}from'@reown/appkit/networks';var Ve=Object.defineProperty,Ke=Object.defineProperties;var Je=Object.getOwnPropertyDescriptors;var j=Object.getOwnPropertySymbols;var Se=Object.prototype.hasOwnProperty,Ae=Object.prototype.propertyIsEnumerable;var ge=(e,t,s)=>t in e?Ve(e,t,{enumerable:true,configurable:true,writable:true,value:s}):e[t]=s,u=(e,t)=>{for(var s in t||(t={}))Se.call(t,s)&&ge(e,s,t[s]);if(j)for(var s of j(t))Ae.call(t,s)&&ge(e,s,t[s]);return e},p=(e,t)=>Ke(e,Je(t));var fe=(e,t)=>{var s={};for(var o in e)Se.call(e,o)&&t.indexOf(o)<0&&(s[o]=e[o]);if(e!=null&&j)for(var o of j(e))t.indexOf(o)<0&&Ae.call(e,o)&&(s[o]=e[o]);return s};var N=class e extends Error{constructor(s,o,r,n){super(s);this.message=s;this.code=o;this.data=r;this.cause=n;this.name=\"JsonRpcError\",this.message=s,this.code=o,this.data=r,this.cause=n;}static fromResponse(s){return new e(s.message,s.code,s.data)}toString(){return `${this.name} (${this.code}): ${this.message}${this.data?`: ${JSON.stringify(this.data)}`:\"\"}`}},me=(c=>(c[c.ParseError=-32700]=\"ParseError\",c[c.InvalidRequest=-32600]=\"InvalidRequest\",c[c.MethodNotFound=-32601]=\"MethodNotFound\",c[c.InvalidParams=-32602]=\"InvalidParams\",c[c.InternalError=-32603]=\"InternalError\",c[c.UserRejection=-32e3]=\"UserRejection\",c[c.MethodAddressMismatch=-32001]=\"MethodAddressMismatch\",c[c.MethodAccessDenied=-32002]=\"MethodAccessDenied\",c[c.UnknownError=-31e3]=\"UnknownError\",c[c.UserCanceled=-31001]=\"UserCanceled\",c))(me||{});var Ie=\"asigna-stx\",Y=(e,t)=>new Promise(s=>{function o(r){r.data.source===Ie&&r.data[t]&&(s(r.data[t]),window.removeEventListener(\"message\",o));}window.addEventListener(\"message\",o),window.top.postMessage(et(e,t),\"*\");}),$e={authenticationRequest:async e=>Y(e,\"authenticationRequest\"),transactionRequest:async e=>Y(e,\"transactionRequest\"),request:async(e,t)=>Y(t,e)},et=(e,t)=>({source:Ie,[t]:e}),ye=()=>{if(typeof window==\"undefined\")return;window.top!==window.self&&(window.AsignaProvider=$e);};ye();var Ne=[{id:\"LeatherProvider\",name:\"Leather\",icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMjYuODM4NyIgZmlsbD0iIzEyMTAwRiIvPgo8cGF0aCBkPSJNNzQuOTE3MSA1Mi43MTE0QzgyLjQ3NjYgNTEuNTQwOCA5My40MDg3IDQzLjU4MDQgOTMuNDA4NyAzNy4zNzYxQzkzLjQwODcgMzUuNTAzMSA5MS44OTY4IDM0LjIxNTQgODkuNjg3MSAzNC4yMTU0Qzg1LjUwMDQgMzQuMjE1NCA3OC40MDYxIDQwLjUzNjggNzQuOTE3MSA1Mi43MTE0Wk0zOS45MTEgODMuNDk5MUMzMC4wMjU2IDgzLjQ5OTEgMjkuMjExNSA5My4zMzI0IDM5LjA5NjkgOTMuMzMyNEM0My41MTYzIDkzLjMzMjQgNDguODY2MSA5MS41NzY0IDUxLjY1NzMgODguNDE1N0M0Ny41ODY4IDg0LjkwMzggNDQuMjE0MSA4My40OTkxIDM5LjkxMSA4My40OTkxWk0xMDIuODI5IDc5LjI4NDhDMTAzLjQxIDk1Ljc5MDcgOTUuMDM2OSAxMDUuMDM5IDgwLjg0ODQgMTA1LjAzOUM3Mi40NzQ4IDEwNS4wMzkgNjguMjg4MSAxMDEuODc4IDU5LjMzMyA5Ni4wMjQ5QzU0LjY4MSAxMDEuMTc2IDQ1Ljg0MjMgMTA1LjAzOSAzOC41MTU0IDEwNS4wMzlDMTMuMjc4NSAxMDUuMDM5IDE0LjMyNTIgNzIuODQ2MyA0MC4wMjczIDcyLjg0NjNDNDUuMzc3MSA3Mi44NDYzIDQ5LjkxMjggNzQuMjUxMSA1NS43Mjc3IDc3Ljg4TDU5LjU2NTYgNjQuNDE3N0M0My43NDg5IDYwLjA4NjQgMzUuODQwNSA0Ny45MTE4IDQzLjYzMjYgMzAuNDY5M0g1Ni4xOTI5QzQ5LjIxNSA0Mi4wNTg2IDUzLjk4MzIgNTEuNjU3OCA2Mi44MjIgNTIuNzExNEM2Ny41OTAzIDM1LjczNzIgNzcuODI0NiAyMi41MDkgOTEuNDMxNiAyMi41MDlDOTkuMTA3NCAyMi41MDkgMTA1LjE1NSAyNy41NDI4IDEwNS4xNTUgMzYuNjczN0MxMDUuMTU1IDUxLjMwNjYgODYuMDgxOSA2My4yNDcxIDcxLjY2MDcgNjQuNDE3N0w2NS43Mjk1IDg1LjM3MjFDNzIuNDc0OCA5My4yMTUzIDkxLjE5OSAxMDAuODI0IDkxLjE5OSA3OS4yODQ4SDEwMi44MjlaIiBmaWxsPSIjRjVGMUVEIi8+Cjwvc3ZnPgo=\",webUrl:\"https://leather.io\",chromeWebStoreUrl:\"https://chrome.google.com/webstore/detail/hiro-wallet/ldinpeekobnhjjdofggfgjlcehhmanlj\",mozillaAddOnsUrl:\"https://leather.io/install-extension\"},{id:\"XverseProviders.BitcoinProvider\",name:\"Xverse Wallet\",icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiMxNzE3MTciIGQ9Ik0wIDBoNjAwdjYwMEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTQ0MCA0MzUuNHYtNTFjMC0yLS44LTMuOS0yLjItNS4zTDIyMCAxNjIuMmE3LjYgNy42IDAgMCAwLTUuNC0yLjJoLTUxLjFjLTIuNSAwLTQuNiAyLTQuNiA0LjZ2NDcuM2MwIDIgLjggNCAyLjIgNS40bDc4LjIgNzcuOGE0LjYgNC42IDAgMCAxIDAgNi41bC03OSA3OC43Yy0xIC45LTEuNCAyLTEuNCAzLjJ2NTJjMCAyLjQgMiA0LjUgNC42IDQuNUgyNDljMi42IDAgNC42LTIgNC42LTQuNlY0MDVjMC0xLjIuNS0yLjQgMS40LTMuM2w0Mi40LTQyLjJhNC42IDQuNiAwIDAgMSA2LjQgMGw3OC43IDc4LjRhNy42IDcuNiAwIDAgMCA1LjQgMi4yaDQ3LjVjMi41IDAgNC42LTIgNC42LTQuNloiLz48cGF0aCBmaWxsPSIjRUU3QTMwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zMjUuNiAyMjcuMmg0Mi44YzIuNiAwIDQuNiAyLjEgNC42IDQuNnY0Mi42YzAgNCA1IDYuMSA4IDMuMmw1OC43LTU4LjVjLjgtLjggMS4zLTIgMS4zLTMuMnYtNTEuMmMwLTIuNi0yLTQuNi00LjYtNC42TDM4NCAxNjBjLTEuMiAwLTIuNC41LTMuMyAxLjNsLTU4LjQgNTguMWE0LjYgNC42IDAgMCAwIDMuMiA3LjhaIi8+PC9nPjwvc3ZnPg==\",webUrl:\"https://xverse.app\",chromeWebStoreUrl:\"https://chrome.google.com/webstore/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg\",googlePlayStoreUrl:\"https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse\",iOSAppStoreUrl:\"https://apps.apple.com/app/xverse-bitcoin-web3-wallet/id1552272513\",mozillaAddOnsUrl:\"https://www.xverse.app/download\"},{id:\"AsignaProvider\",name:\"Asigna Multisig\",icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMDEwMCIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Ik0xNS4xMSA1LjU1YTMgMyAwIDAgMC0xLjgyIDEuM2wtLjA1LjA4LS40My43Mi0uMDcuMTEtLjUuODUtLjA1LjA5LTEuMjkgMi4xOC0uMDQuMDctLjQ3LjgtLjA2LjEtLjQ2Ljc4LS4wNy4xMS0xLjYzIDIuNzYtLjA3LjExLS4zOC42Ni0uMDUuMDgtLjczIDEuMjQtLjM1LjYtLjQuNjctLjA1LjA5TDUuMSAyMC43bC0uMTEuMTgtLjE0LjIzLS4wNy4xMy0uMzMuNTUtLjA0LjA3di4wMWExLjI2IDEuMjYgMCAwIDAtLjE0LjQ3IDEuMzEgMS4zMSAwIDAgMCAxLjI0IDEuNGgxLjVsLjA1LS4wNi4wNC0uMDYuODctMS4yMS4wNS0uMDguNzctMS4wNy4wNS0uMDcuNC0uNTcuMDUtLjA2LjI0LS4zNGExLjUyIDEuNTIgMCAwIDEgMS4zOS0uNjIgMS41IDEuNSAwIDAgMSAuNjQuMiAxLjQ3IDEuNDcgMCAwIDEgLjczIDEuMjcgMS40NCAxLjQ0IDAgMCAxLS4yNy44NGwtLjYzLjg4LS4wNS4wNy0uMzIuNDUtLjA2LjA4LS4wOC4xMi0uMTIuMTYtLjA1LjA4aDIuMTNhMi4zMiAyLjMyIDAgMCAwIDEuNzctLjk2bDEuMTgtMS42My43Ny0xLjA4IDEuMy0xLjhhMS4yNCAxLjI0IDAgMCAxIC41NS0uNDNsLjA4LS4wM2ExLjMgMS4zIDAgMCAxIC4zLS4wNiAxLjI4IDEuMjggMCAwIDEgMS4xNS41NGwuMTEuMmExLjEzIDEuMTMgMCAwIDEgLjEuNDEgMS4xOSAxLjE5IDAgMCAxLS4yMy43N2wtLjAzLjA1LS41Ny44LS43Ljk4LS4yNy4zN2ExLjIyIDEuMjIgMCAwIDAtLjIuNSAxLjA1IDEuMDUgMCAwIDAtLjAyLjIzdi4wNmExLjE3IDEuMTcgMCAwIDAgLjE0LjQzbC4wMi4wNS4wNy4xYTEuNDQgMS40NCAwIDAgMCAuMS4xMWwuMDUuMDYuMDEuMDFhMS44IDEuOCAwIDAgMCAuMTQuMWMwIC4wMi4wMi4wMy4wNC4wM2ExIDEgMCAwIDAgLjA4LjA1bC4wNy4wNGExLjI1IDEuMjUgMCAwIDAgLjUuMWg2LjljLjEgMCAuMi0uMDEuMjktLjAzbC4wNi0uMDJhMS4yNyAxLjI3IDAgMCAwIC4yNy0uMS41Ny41NyAwIDAgMCAuMDctLjAzIDEuMjEgMS4yMSAwIDAgMCAuMjYtLjE5bC4wOC0uMDdhLjkyLjkyIDAgMCAwIC4xNS0uMTkgMS41NSAxLjU1IDAgMCAwIC4wOS0uMTdsLjAyLS4wNWExLjIyIDEuMjIgMCAwIDAgLjA4LS4yNnYtLjA0bC4wMi0uMDh2LS4wOGExLjMyIDEuMzIgMCAwIDAtLjItLjc0bC0xLjYtMi42NC0uMDYtLjEtLjItLjMyLS4zMy0uNTR2LS4wMWwtLjA1LS4wOC0xLjMtMi4xNS0uMDctLjEtLjA0LS4wNi0uOC0xLjMyLS4wNC0uMDctLjItLjM0LS4xLS4xNC0uMS0uMTYtLjUzLS45LS4xMy0uMi0uMDktLjE0LTIuMTctMy41Ny0uMDQtLjA3LS43Mi0xLjE5LS4wNS0uMDctLjQtLjY1YTIuNjUgMi42NSAwIDAgMC0uMy0uNCAyLjk2IDIuOTYgMCAwIDAtLjk3LS43NCAzLjA0IDMuMDQgMCAwIDAtMS4zLS4zYy0uMjUgMC0uNS4wNC0uNzQuMVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNMTkgMTYuM2E1LjQ1IDUuNDUgMCAwIDAtLjgzIDEuNTZsLS4wNC4xNWExLjM2IDEuMzYgMCAwIDEgLjI4LS4xNiAxLjI0IDEuMjQgMCAwIDEgLjM4LS4wOGguMWExLjI4IDEuMjggMCAwIDEgMS4wNS41NGMuMDQuMDYuMDguMTMuMS4yYTEuMjQgMS4yNCAwIDAgMSAuMDkuMjcgMS4xOSAxLjE5IDAgMCAxLS4yLjkxbC0uMDQuMDUtLjU3Ljc5LS43Ljk5LS4yNy4zN2ExLjIzIDEuMjMgMCAwIDAtLjIuNDIgMS4wNiAxLjA2IDAgMCAwLS4wMi4zMXYuMDZhMS4xNyAxLjE3IDAgMCAwIC4xNi40Ny45My45MyAwIDAgMCAuMDcuMSAxLjUgMS41IDAgMCAwIC4xLjEybC4wNS4wNmguMDFhMS45NCAxLjk0IDAgMCAwIC4wOS4wOCAxIDEgMCAwIDAgLjE3LjFsLjA3LjA0YTEuMjUgMS4yNSAwIDAgMCAuNS4xaDYuOWMuMSAwIC4yIDAgLjI4LS4wMmwuMDctLjAyYTEuMzIgMS4zMiAwIDAgMCAuMzQtLjEzbC4xNi0uMS4wMy0uMDNhMS4yOSAxLjI5IDAgMCAwIC4yLS4yIDIuNDMgMi40MyAwIDAgMCAuMTItLjE3Yy4wMy0uMDMuMDUtLjA4LjA3LS4xMmwuMDItLjA1YTEuMjEgMS4yMSAwIDAgMCAuMDktLjN2LS4wOGwuMDEtLjA5YTEuMzIgMS4zMiAwIDAgMC0uMi0uNzNsLTEuNi0yLjY0LS4wNi0uMS0uMi0uMzItLjMzLS41NHYtLjAybC0uMDUtLjA3LTEuMy0yLjE1LS4xMi0uMDctLjA3LS4wNGE0Ljk0IDQuOTQgMCAwIDAtMi40Ni0uNjdjLTEuMDMgMC0xLjc2LjU3LTIuMjYgMS4yWiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMi4yOSAyMS4wOGMwIC4yOS0uMDkuNTgtLjI3Ljg0bC0xLjMxIDEuODRIN2wyLjUyLTMuNTNhMS41NCAxLjU0IDAgMCAxIDIuMS0uMzZjLjQzLjI4LjY2Ljc0LjY2IDEuMloiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTEuMTYgMjEuMjVhLjU2LjU2IDAgMCAxLS41Ny41NS41Ni41NiAwIDAgMS0uNTctLjU2LjU2LjU2IDAgMCAxIC41Ny0uNTUuNTYuNTYgMCAwIDEgLjU3LjU2WiIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjE1LjIzIiB4Mj0iMTkuMyIgeTE9IjI1Ljc4IiB5Mj0iNi4xMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2NTIyRjQiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzlCNkJGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1ODVGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMjIuNTkiIHgyPSIyNC44IiB5MT0iMjQuNzEiIHkyPSIxNS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0MjFGOEIiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzcyMzBGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzk3NzNGRiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==\",webUrl:\"https://asigna.io\",chromeWebStoreUrl:\"https://stx.asigna.io/\"},{id:\"FordefiProviders.UtxoProvider\",name:\"Fordefi\",icon:\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbD0iIzEwMTExNCIgZD0iTTAgMGg0MnY0MkgweiIvPgogIDxwYXRoIGQ9Ik0xOS40NyAyNi44OUg1djMuNTdhNC41NyA0LjU3IDAgMCAwIDQuNTggNC41N2g1LjgzbDQuMDYtOC4xNFoiIGZpbGw9IiM3OTk0RkYiLz4KICA8cGF0aCBkPSJNNSAxNy40aDI3LjU4bC0zLjIgNi43OEg1VjE3LjRaIiBmaWxsPSIjNDg2REZGIi8+CiAgPHBhdGggZD0iTTE0LjY3IDdINXY3LjY4aDMzVjdoLTkuNjd2NS43NGgtMlY3aC05LjY3djUuNzRoLTEuOTlWN1oiIGZpbGw9IiM1Q0QxRkEiLz4KPC9zdmc+Cg==\",webUrl:\"https://www.fordefi.com/\",chromeWebStoreUrl:\"https://chromewebstore.google.com/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle\"}],De={id:\"WalletConnectProvider\",name:\"WalletConnect\",icon:\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBmaWxsPSJub25lIj48bWFzayBpZD0iYSIgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiIHg9IjAiIHk9IjAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDQwMHY0MDBIMFYwWiIvPjwvbWFzaz48ZyBtYXNrPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjMzM5NkZGIiBkPSJNNDAwIDQwMEgwVjBoNDAwdjQwMFoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTIyLjUyIDE0OC45N2M0Mi43OS00MS43MyAxMTIuMTctNDEuNzMgMTU0Ljk2IDBsNS4xNSA1LjAyYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTE3LjYyIDE3LjE4YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTcuMDktNi45Yy0yOS44NS0yOS4xMi03OC4yNS0yOS4xMi0xMDguMSAwbC03LjYgNy40YTIuNzkgMi43OSAwIDAgMS0zLjg3IDBsLTE3LjYxLTE3LjE5YTUuMjUgNS4yNSAwIDAgMSAwLTcuNTVsNS42NS01LjUxWm0xOTEuNCAzNS41MiAxNS42OCAxNS4zYTUuMjUgNS4yNSAwIDAgMSAwIDcuNTVsLTcwLjcgNjguOTRhNS41OCA1LjU4IDAgMCAxLTcuNzUgMGwtNTAuMTgtNDguOTNhMS40IDEuNCAwIDAgMC0xLjk0IDBsLTUwLjE4IDQ4LjkzYTUuNTggNS41OCAwIDAgMS03Ljc0IDBsLTcwLjctNjguOTRhNS4yNSA1LjI1IDAgMCAxIDAtNy41NmwxNS42Ny0xNS4yOWE1LjU4IDUuNTggMCAwIDEgNy43NSAwbDUwLjE4IDQ4Ljk0Yy41NC41MiAxLjQuNTIgMS45NCAwbDUwLjE4LTQ4Ljk0YTUuNTggNS41OCAwIDAgMSA3Ljc0IDBsNTAuMTggNDguOTRjLjU0LjUyIDEuNC41MiAxLjk0IDBsNTAuMTgtNDguOTRhNS41OCA1LjU4IDAgMCAxIDcuNzUgMFoiLz48L2c+PC9zdmc+\",webUrl:\"https://walletconnect.com/\",chromeWebStoreUrl:\"\"};function S(){return getProviderFromId(getSelectedProviderId())||window.StacksProvider||window.BlockstackProvider}function at(){return !!S()}function Te(e){return e?typeof e==\"string\"?StacksNetwork.fromName(e):\"version\"in e?e:\"url\"in e?new StacksMainnet({url:e.url}):e.transactionVersion===TransactionVersion.Mainnet?new StacksMainnet({url:e.client.baseUrl}):new StacksTestnet({url:e.client.baseUrl}):new StacksTestnet}function O(e,t){var s,o;return e instanceof t||((o=(s=e==null?void 0:e.constructor)==null?void 0:s.name)==null?void 0:o.toLowerCase())===t.name}function E(e){return e?typeof e==\"string\"?e:O(e,StacksMainnet)?\"mainnet\":O(e,StacksTestnet)?\"testnet\":O(e,StacksDevnet)||O(e,StacksMocknet)?\"devnet\":\"coreApiUrl\"in e?e.coreApiUrl:\"url\"in e?e.url:\"transactionVersion\"in e?e.transactionVersion===TransactionVersion.Mainnet?\"mainnet\":\"testnet\":\"mainnet\":\"mainnet\"}function y(e){if(typeof e.type==\"string\")return e;switch(e.type){case ClarityType.BoolFalse:return Cl.bool(false);case ClarityType.BoolTrue:return Cl.bool(true);case ClarityType.Int:return Cl.int(e.value);case ClarityType.UInt:return Cl.uint(e.value);case ClarityType.Buffer:return Cl.buffer(e.buffer);case ClarityType.StringASCII:return Cl.stringAscii(e.data);case ClarityType.StringUTF8:return Cl.stringUtf8(e.data);case ClarityType.List:return Cl.list(e.list.map(y));case ClarityType.Tuple:return Cl.tuple(Object.fromEntries(Object.entries(e.data).map(([s,o])=>[s,y(o)])));case ClarityType.OptionalNone:return Cl.none();case ClarityType.OptionalSome:return Cl.some(y(e.value));case ClarityType.ResponseErr:return Cl.error(y(e.value));case ClarityType.ResponseOk:return Cl.ok(y(e.value));case ClarityType.PrincipalContract:return Cl.contractPrincipal(Address.stringify(e.address),e.contractName.content);case ClarityType.PrincipalStandard:return Cl.standardPrincipal(Address.stringify(e.address));default:let t=e;throw new Error(`Unknown clarity type: ${t}`)}}function Le(e){return p(u({},e),{onFinish:void 0,onCancel:void 0})}function it(e){}var ct=async e=>{},dt=\"stx_updateProfile\",W=e=>e,Q=e=>e.profile;function ut(e,t=S()){A(dt,W,Q)(e,t);}function Mt(e){}var pt=async e=>{},lt=\"stx_signMessage\",F=e=>e,q=e=>e;function gt(e,t=S()){A(lt,F,q)(e,t);}async function At(e){}var ft=\"stx_signStructuredMessage\",Z=e=>({message:y(e.message),domain:y(e.domain)}),H=e=>e;function mt(e,t=S()){if(e.domain.type!==ClarityType.Tuple)throw new Error(\"Domain must be a tuple\");A(ft,Z,H)(e,t);}var je=e=>{let t=e;if(!t){let s=new k([\"store_write\"],document.location.href);t=new x({appConfig:s});}return t};function Nt(e){try{return je(e).loadUserData().appPrivateKey}catch(t){return false}}var Dt=e=>{};function xt(e){var d;let{stxAddress:t,userSession:s,network:o}=e;if(t)return t;if(!s||!o)return;let r=(d=s==null?void 0:s.loadUserData().profile)==null?void 0:d.stxAddress,n={[ChainId.Mainnet]:\"mainnet\",[ChainId.Testnet]:\"testnet\"},i=Te(o);return r==null?void 0:r[n[i.chainId]]}var Ct=async e=>{},Tt=async e=>{},Lt=async e=>{},Pt=async e=>{},wt=\"stx_callContract\",X=e=>{var s;let t=(s=e.functionArgs)==null?void 0:s.map(o=>typeof o==\"string\"?Cl.deserialize(o):y(o)).map(o=>Cl.serialize(o));return p(u({},e),{contract:`${e.contractAddress}.${e.contractName}`,functionArgs:t,network:E(e.network),postConditionMode:Ee(e.postConditionMode),postConditions:Oe(e.postConditions),address:e.stxAddress})},V=e=>({txId:e.txid,txRaw:e.transaction,stacksTransaction:deserializeTransaction(e.transaction)});function ht(e,t=S()){A(wt,X,V)(e,t);}var jt=\"stx_deployContract\",K=e=>p(u({},e),{name:e.contractName,clarityCode:e.codeBody,network:E(e.network),postConditionMode:Ee(e.postConditionMode),postConditions:Oe(e.postConditions),address:e.stxAddress}),J=e=>({txId:e.txid,txRaw:e.transaction,stacksTransaction:deserializeTransaction(e.transaction)});function Ot(e,t=S()){A(jt,K,J)(e,t);}var Et=\"stx_transferStx\",$=e=>p(u({},e),{amount:e.amount.toString(),network:E(e.network),address:e.stxAddress}),ee=e=>({txId:e.txid,txRaw:e.transaction,stacksTransaction:deserializeTransaction(e.transaction)});function bt(e,t=S()){A(Et,$,ee)(e,t);}var kt=\"stx_signTransaction\",te=e=>p(u({},e),{transaction:e.txHex}),se=e=>p(u({},e),{stacksTransaction:deserializeTransaction(e.transaction)});function Rt(e,t=S()){A(kt,te,se)(e,t);}function Oe(e){if(typeof e!=\"undefined\")return e.map(t=>typeof t==\"string\"?t:typeof t.type==\"string\"?p(u({},t),{amount:\"amount\"in t?t.amount.toString():void 0}):bytesToHex(serializePostCondition(t)))}function Ee(e){if(typeof e!=\"undefined\"){if(typeof e==\"string\")return e;switch(e){case PostConditionMode.Allow:return \"allow\";case PostConditionMode.Deny:return \"deny\";default:let t=e;throw new Error(`Unknown post condition mode: ${t}. Should be one of: 'allow', 'deny'`)}}}function C(e,t,s){return (o,r)=>{let n=t(Le(o)),i=o;P({provider:r},e,n).then(a=>{var M;let d=s(a);(M=i.onFinish)==null||M.call(i,d);}).catch(a=>{var d;console.error(a),(d=i.onCancel)==null||d.call(i,a);});}}var _t=ke,lo=C(\"stx_transferStx\",$,ee),go=C(\"stx_callContract\",X,V),So=C(\"stx_deployContract\",K,J),Ao=C(\"stx_signTransaction\",te,se),fo=C(\"stx_updateProfile\",W,Q),mo=C(\"stx_signMessage\",F,q),Io=C(\"stx_signStructuredMessage\",Z,H),yo=_t;var oe=\"@stacks/connect\",Bt={addresses:{stx:[],btc:[]},version:\"0.0.1\"},Re=e=>[...new Map(e.map(s=>[s.address,s])).values()].map(o=>{var s=fe(o,[]);return \"publicKey\"in s&&delete s.publicKey,\"derivationPath\"in s&&delete s.derivationPath,\"tweakedPublicKey\"in s&&delete s.tweakedPublicKey,s});function _e(e){try{let s=ne()||Bt,o=p(u({},s),{updatedAt:Date.now(),addresses:u(u({},s.addresses),e.addresses&&{stx:e.addresses.stx&&Re([...s.addresses.stx,...e.addresses.stx]),btc:e.addresses.btc&&Re([...s.addresses.btc,...e.addresses.btc])})});localStorage.setItem(oe,bytesToHex(utf8ToBytes(JSON.stringify(o))));}catch(t){console.warn(\"Failed to store data in localStorage:\",t);}}function ve(){try{localStorage.removeItem(oe);}catch(e){console.warn(\"Failed to clear localStorage:\",e);}}function ne(){try{let e=localStorage.getItem(oe);return e?JSON.parse(bytesToUtf8(hexToBytes(e))):null}catch(e){return console.warn(\"Failed to get data from localStorage:\",e),null}}function Wt(){let e=getProvider();e&&\"disconnect\"in e&&e.disconnect(),clearSelectedProviderId(),ve(),new x().store.deleteSessionData();}function Qt(){let e=ne();return (e==null?void 0:e.addresses.stx.length)>0||(e==null?void 0:e.addresses.btc.length)>0}var qt=[\"stx_signMessage\",\"stx_signTransaction\",\"stx_signStructuredMessage\",\"stx_getAccounts\",\"stx_getAddresses\",\"stx_updateProfile\",\"stx_transferStx\",\"stx_transferSip10Ft\",\"stx_transferSip9Nft\",\"stx_callContract\",\"stx_deployContract\",\"sendTransfer\",\"signPsbt\",\"getAddresses\"],R={id:1,chainNamespace:\"stacks\",caipNetworkId:\"stacks:1\",name:\"Stacks\",nativeCurrency:{name:\"STX\",symbol:\"STX\",decimals:6},rpcUrls:{default:{http:[\"https://api.mainnet.hiro.so\"]}}},Ue={projectId:\"your_project_id\",metadata:{name:\"Universal Connector\",description:\"Universal Connector\",url:\"https://appkit.reown.com\",icons:[\"https://appkit.reown.com/icon.png\"]},networks:[{namespace:\"stacks\",chains:[R],methods:qt,events:[\"stx_chainChanged\",\"stx_accountsChanged\"]},{namespace:\"bip122\",chains:[bitcoin],methods:[\"signMessage\",\"sendTransfer\",\"signPsbt\",\"getAccountAddresses\"],events:[\"bip122_addressesChanged\"]}]};function ze(e){return {jsonrpc:\"2.0\",id:1,result:e}}var re=class{constructor(t){this.connector=t;}async connect(){try{let{session:t}=await this.connector.connect();return t}catch(t){throw console.error(\">> WalletConnectProvider connect error\",t),t}}get stacksAddresses(){var i;let t=(i=this.connector.provider)==null?void 0:i.session,s=t==null?void 0:t.sessionProperties.stacks_getAddresses,o=JSON.parse(s||\"[]\"),n=[...t.namespaces.stacks.accounts.map(a=>({address:a.split(\":\")[2],publicKey:\"\"}))||[],...o||[]].sort(a=>a.publicKey?1:-1);return Array.from(new Map(n.map(a=>[a.address,a])).values())}get btcAddresses(){var i;let t=(i=this.connector.provider)==null?void 0:i.session,s=t==null?void 0:t.sessionProperties.bip122_getAccountAddresses,o=JSON.parse(s||\"{}\"),r=t.namespaces.bip122.accounts.map(a=>({address:a.split(\":\")[2],publicKey:\"\"})),n=[...(o==null?void 0:o.payment.map(a=>p(u({},a),{purpose:\"payment\"})))||[],...(o==null?void 0:o.ordinal.map(a=>p(u({},a),{purpose:\"ordinal\"})))||[],...r||[]].sort(a=>a.publicKey?1:-1).sort((a,d)=>(a==null?void 0:a.address.length)-(d==null?void 0:d.address.length));return Array.from(new Map(n.map(a=>[a.address,a])).values())}async getAddresses(){var n;let t=(n=this.connector.provider)==null?void 0:n.session;t||(t=await this.connect());let s=this.stacksAddresses||[],o=this.btcAddresses||[];return {addresses:[...s,...o]}}validateRpcMethod(t){var a,d,M,c;if([\"getAddresses\",\"stx_getAccounts\",\"stx_getAddresses\"].includes(t))return;if(!((a=this.connector.provider)!=null&&a.session))throw new Error(\"WalletConnectProvider not connected. Please connect first.\");let o=(d=this.connector.provider)==null?void 0:d.session.namespaces,r=((M=o.stacks)==null?void 0:M.methods)||[],n=((c=o.bip122)==null?void 0:c.methods)||[];if(![...r,...n].includes(t))throw new Error(`WalletConnectProvider does not support method ${t}. Please use a supported method.`)}getTargetCaipNetworkId(t){var o,r,n,i,a,d,M,c;if([\"getAddresses\",\"stx_getAccounts\",\"stx_getAddresses\"].includes(t))return R.caipNetworkId;if((i=(n=(r=(o=this.connector.provider)==null?void 0:o.session)==null?void 0:r.namespaces)==null?void 0:n.stacks)!=null&&i.methods.includes(t))return R.caipNetworkId;if((c=(M=(d=(a=this.connector.provider)==null?void 0:a.session)==null?void 0:d.namespaces)==null?void 0:M.bip122)!=null&&c.methods.includes(t))return bitcoin.caipNetworkId;throw new Error(`WalletConnectProvider does not support method ${t}. Please use a supported method.`)}async request(t,s){var o,r,n,i;try{this.validateRpcMethod(t);let a=this.getTargetCaipNetworkId(t);switch(t){case \"getAddresses\":case \"stx_getAddresses\":case \"stx_getAccounts\":let d=await this.getAddresses();return ze(d);case \"stx_signMessage\":let c=((i=(n=(r=(o=this.connector.provider)==null?void 0:o.session)==null?void 0:r.namespaces)==null?void 0:n.stacks)==null?void 0:i.accounts[0]).split(\":\")[2],I=await this.connector.request({method:t,params:u({address:c},s)},a);return ze(I);default:return await this.connector.request({method:t,params:s},a)}}catch(a){throw console.error(\">> WalletConnectProvider request error\",a),a}}async disconnect(){await this.connector.disconnect();}},Ye=async e=>{let t=await UniversalConnector.init(p(u({},Ue),{projectId:e})),s=new re(t);window.WalletConnectProvider=s;};async function v(e,t,s){var o;try{let r=await e.request(t,s);if(\"error\"in r)throw N.fromResponse(r.error);return r.result}catch(r){if(r instanceof N)throw r;if(\"jsonrpc\"in r)throw N.fromResponse(r.error);let n=(o=r.code)!=null?o:-31e3;throw new N(r.message,n,r.data,r)}}function ss(e){return e?async function(s,o,r){let n=await v(s,o,r);if((o===\"getAddresses\"||o===\"wallet_connect\")&&\"addresses\"in n){let{stx:i,btc:a}=us(n.addresses).reduce((d,M)=>(d[M.address.startsWith(\"S\")?\"stx\":\"btc\"].push(M),d),{stx:[],btc:[]});_e({addresses:{stx:i,btc:a}});}return n}:v}async function P(...e){let{options:t,method:s,params:o}=os(e),r=Ne;t!=null&&t.walletConnectProjectId&&(await Ye(t.walletConnectProjectId).catch(console.error),r=[...r,De]);let n=Object.assign({provider:getProvider(),defaultProviders:r,forceWalletSelect:false,persistWalletSelect:true,enableOverrides:true,enableLocalStorage:true},is(t)),i=cs(n.enableOverrides,ss(n.enableLocalStorage));if(n.provider&&!n.forceWalletSelect){let{method:a,params:d}=ae(n.provider,s,o,n.enableOverrides);return await i(n.provider,a,ie(d))}if(typeof window!=\"undefined\")return defineCustomElements(window),new Promise((a,d)=>{let M=document.createElement(\"connect-modal\");M.defaultProviders=We(n.approvedProviderIds,r),M.installedProviders=We(n.approvedProviderIds,getInstalledProviders(r));let c=document.body.style.overflow;document.body.style.overflow=\"hidden\";let I=()=>{M.remove(),document.body.style.overflow=c;};M.callback=D=>{I();let f=getProviderFromId(D),{method:w,params:z}=ae(f,s,o,n.enableOverrides),h=ds(n.persistWalletSelect,D);a(i(f,w,ie(z)).then(h));},M.cancelCallback=()=>{I(),d(new N(\"User canceled the request\",-31001));},document.body.appendChild(M);let T=D=>{D.key===\"Escape\"&&(document.removeEventListener(\"keydown\",T),M.remove(),d(new N(\"User canceled the request\",-31001)));};document.addEventListener(\"keydown\",T);})}function os(e){return typeof e[0]==\"string\"?{method:e[0],params:e[1]}:{options:e[0],method:e[1],params:e[2]}}function We(e,t){return e?t.filter(s=>e.includes(s.id)):t}function ns(e){let t=e&&\"network\"in e?{network:e.network}:void 0;return P(p(u({},e),{forceWalletSelect:true}),\"getAddresses\",t)}function A(e,t,s){return (o,r)=>{if(!r)throw new Error(\"[Connect] No installed Stacks wallet found\");let n=t(o),i=o,{method:a,params:d}=ae(r,e,n);v(r,a,ie(d)).then(M=>{var I;let c=s(M);(I=i.onFinish)==null||I.call(i,c);}).catch(i.onCancel);}}function _(e){return rs(e)||as(e)}function rs(e){return \"signMultipleTransactions\"in e&&\"createRepeatInscriptions\"in e&&!(e!=null&&e.isLeather)&&!(e!=null&&e.isFordefi)}function as(e){return \"isFordefi\"in e&&!!e.isFordefi}function Qe(e){return \"isLeather\"in e&&!!e.isLeather}function is(e){if(e===void 0)return {};let t={};for(let[s,o]of Object.entries(e))o!==void 0&&(t[s]=o);return t}function cs(e,t){return e?async(s,o,r)=>{let n=await t(s,o,r),i=u({},n);return n!==null&&\"txId\"in n&&n.txId&&!(\"txid\"in i)&&(i.txid=n.txId),n!==null&&\"hex\"in n&&n.hex&&typeof n.hex==\"string\"&&!(\"psbt\"in i)&&(i.psbt=base64.encode(hexToBytes(n.hex))),i}:t}function ae(e,t,s,o=true){if(!o)return {method:t,params:s};if(_(e)&&[\"getAddresses\",\"stx_getAddresses\"].includes(t))return {method:\"wallet_connect\",params:s};if(_(e)&&t===\"sendTransfer\"){let r=p(u({},s),{recipients:s.recipients.map(n=>p(u({},n),{amount:Number(n.amount)})),network:void 0});return {method:t,params:r}}if(_(e)&&t===\"signPsbt\"){let r=s.signInputs;if(!r)return {method:t,params:s};let n={};for(let a of r)typeof a!=\"number\"&&a.address&&(n[a.address]||(n[a.address]=[]),n[a.address].push(a.index));let i={psbt:s.psbt,signInputs:n,broadcast:s.broadcast};return {method:t,params:i}}if(!_(e)&&t===\"stx_signMessage\"){let r=u({},s);return delete r.publicKey,{method:t,params:r}}if(Qe(e)&&t===\"sendTransfer\"){let r=p(u({},s),{recipients:s.recipients.map(n=>p(u({},n),{amount:n.amount.toString()}))});return {method:t,params:r}}if(Qe(e)&&t===\"signPsbt\"){let r={hex:bytesToHex(base64.decode(s.psbt)),signAtIndex:s.signInputs.map(n=>typeof n==\"number\"?n:n.index),allowedSighash:s.allowedSighash,broadcast:s.broadcast,network:s.network};return {method:t,params:r}}return {method:t,params:s}}var Fe=[\"stx-postcondition\",\"ft-postcondition\",\"nft-postcondition\"];function ie(e){if(!e||typeof e!=\"object\")return e;let t=u({},e);for(let[s,o]of Object.entries(e)){if(typeof o==\"bigint\"){t[s]=o.toString();continue}if(o){if(Array.isArray(o)){t[s]=o.map(r=>typeof r==\"bigint\"?r.toString():!r||typeof r!=\"object\"||!(\"type\"in r)?r:Fe.includes(r.type)?postConditionToHex(r):Cl.serialize(r));continue}typeof o==\"object\"&&\"type\"in o&&(t[s]=Fe.includes(o.type)?postConditionToHex(o):Cl.serialize(o));}}return JSON.parse(JSON.stringify(t))}function ds(e,t){return function(o){if(e)try{setSelectedProviderId(t);}catch(r){}return o}}function us(e){return e.slice().sort((t,s)=>{let o=\"purpose\"in t&&t.purpose===\"payment\",r=\"purpose\"in s&&s.purpose===\"payment\";return o&&!r?-1:!o&&r?1:0})}var Jo=\"https://app.blockstack.org\";typeof window!=\"undefined\"&&(window.__CONNECT_VERSION__=\"__VERSION__\");var $o=()=>{let e=navigator.userAgent;return /android/i.test(e)||/iPad|iPhone|iPod/.test(e)?true:/windows phone/i.test(e)},ke=async(e,t)=>{var i,a,d,M,c,I;let{onFinish:s,onCancel:o,userSession:r}=e,n=He(r);n.isUserSignedIn()&&n.signUserOut();try{let D=await P({provider:t,forceWalletSelect:!0},\"getAddresses\"),f=n.store.getSessionData();(i=f.userData)!=null||(f.userData={profile:{}}),(d=(a=f.userData).profile)!=null||(a.profile={}),(c=(M=f.userData.profile).stxAddress)!=null||(M.stxAddress={mainnet:\"\",testnet:\"\"});let w=D.addresses.find(m=>(m==null?void 0:m.symbol)===\"STX\"||m.address.startsWith(\"S\")).address.toUpperCase(),z=w[1]===\"P\"||w[1]===\"M\";Object.assign(f.userData.profile.stxAddress,{[z?\"mainnet\":\"testnet\"]:w});let h=(I=D.addresses.find(m=>{var pe;return (pe=m==null?void 0:m.address)!=null&&pe.startsWith(\"S\")?!1:m.purpose===\"payment\"?!0:Ze(m==null?void 0:m.address)?D.addresses.every(L=>{var le;return ((le=L==null?void 0:L.address)==null?void 0:le.startsWith(\"S\"))||Ze(L==null?void 0:L.address)}):!0}))==null?void 0:I.address;h&&(f.userData.profile.btcAddress=h),n.store.setSessionData(f),s==null||s({userSession:n,authResponsePayload:f.userData});}catch(T){console.error(\"[Connect] Error during auth request\",T),o==null||o(T);}},Ms=\"blockstack-session\",k=class{constructor(t,s,o,r,n,i){}},x=class{constructor(t){t!=null&&t.appConfig&&(this.appConfig=t.appConfig),typeof window==\"undefined\"&&typeof self==\"undefined\"?this.store=new ce:this.store=new de;}makeAuthRequestToken(){}generateAndStoreTransitKey(){}getAuthResponseToken(){}isSignInPending(){return false}isUserSignedIn(){return !!this.store.getSessionData().userData}async handlePendingSignIn(){return Promise.resolve(this.loadUserData())}loadUserData(){let t=this.store.getSessionData().userData;if(!t)throw new NoSessionDataError(\"No user data found. Did the user sign in?\");return t}encryptContent(){}decryptContent(){}signUserOut(t){this.store.deleteSessionData(),t&&typeof location!=\"undefined\"&&location.href&&(location.href=t);}},U=class{constructor(t){t&&this.setSessionData(t);}getSessionData(){throw new Error(\"Abstract class\")}setSessionData(t){throw new Error(\"Abstract class\")}deleteSessionData(){throw new Error(\"Abstract class\")}},ce=class extends U{constructor(t){super(t),this.sessionData||this.setSessionData({});}getSessionData(){if(!this.sessionData)throw new NoSessionDataError(\"No session data was found.\");return this.sessionData}setSessionData(t){return this.sessionData=t,true}deleteSessionData(){return this.setSessionData({}),true}},de=class extends U{constructor(t){var o;super(t),this.key=typeof((o=t==null?void 0:t.storeOptions)==null?void 0:o.localStorageKey)==\"string\"?t.storeOptions.localStorageKey:Ms,localStorage.getItem(this.key)||this.setSessionData({});}getSessionData(){let t=localStorage.getItem(this.key);if(!t)throw new NoSessionDataError(\"No session data was found in localStorage\");return JSON.parse(t)}setSessionData(t){return localStorage.setItem(this.key,JSON.stringify(t)),true}deleteSessionData(){return localStorage.removeItem(this.key),this.setSessionData({}),true}},He=e=>e||new x,en=async e=>(e=He(e),e.isUserSignedIn()?Promise.resolve(e.loadUserData()):Promise.resolve(null));function Ze(e){let t=[\"bc1p\",\"tb1p\",\"bcrt1p\"],s=[62,62,64],o=t.findIndex(r=>e.startsWith(r));return o===-1?false:e.length===s[o]}var ps=(o=>(o.ContractCall=\"contract_call\",o.ContractDeploy=\"smart_contract\",o.STXTransfer=\"token_transfer\",o))(ps||{}),ls=(n=>(n.BUFFER=\"buffer\",n.UINT=\"uint\",n.INT=\"int\",n.PRINCIPAL=\"principal\",n.BOOL=\"bool\",n))(ls||{});var Me=(n=>(n[n.DEFAULT=0]=\"DEFAULT\",n[n.ALL=1]=\"ALL\",n[n.NONE=2]=\"NONE\",n[n.SINGLE=3]=\"SINGLE\",n[n.ANYONECANPAY=128]=\"ANYONECANPAY\",n))(Me||{});function As(e){}var fs=async e=>{},ms=\"signPsbt\",Is=e=>{var t;return {psbt:base64.encode(hexToBytes(e.hex)),signInputs:typeof e.signAtIndex==\"number\"?[e.signAtIndex]:e.signAtIndex,allowedSighash:(t=e.allowedSighash)==null?void 0:t.map(s=>Me[s])}},ys=e=>({hex:bytesToHex(base64.decode(e.psbt))});function Ns(e,t=S()){A(ms,Is,ys)(e,t);}\nexport{k as AppConfig,ls as ContractCallArgumentType,Ne as DEFAULT_PROVIDERS,ce as InstanceDataStore,N as JsonRpcError,me as JsonRpcErrorCode,Ms as LOCALSTORAGE_SESSION_KEY,de as LocalStorageStore,U as SessionDataStore,Me as SignatureHash,ps as TransactionTypes,x as UserSession,De as WALLET_CONNECT_PROVIDER,ke as authenticate,ve as clearLocalStorage,ns as connect,Jo as defaultAuthURL,Wt as disconnect,it as getDefaultProfileUpdateRequestOptions,As as getDefaultPsbtRequestOptions,Mt as getDefaultSignatureRequestOptions,Dt as getKeys,ne as getLocalStorage,He as getOrCreateUserSession,S as getStacksProvider,xt as getStxAddress,en as getUserData,je as getUserSession,Nt as hasAppPrivateKey,Ze as isAddressTaproot,Qt as isConnected,$o as isMobile,at as isStacksWalletInstalled,Ct as makeContractCallToken,Tt as makeContractDeployToken,ct as makeProfileUpdateToken,fs as makePsbtToken,Lt as makeSTXTransferToken,Pt as makeSignTransaction,ht as openContractCall,Ot as openContractDeploy,ut as openProfileUpdateRequestPopup,Ns as openPsbtRequestPopup,bt as openSTXTransfer,Rt as openSignTransaction,gt as openSignatureRequestPopup,mt as openStructuredDataSignatureRequestPopup,P as request,v as requestRaw,yo as showBlockstackConnect,_t as showConnect,go as showContractCall,So as showContractDeploy,fo as showProfileUpdate,lo as showSTXTransfer,mo as showSignMessage,Io as showSignStructuredMessage,Ao as showSignTransaction,pt as signMessage,At as signStructuredMessage};//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","import C,{createContext,useContext,useReducer}from'react';import {authenticate,showBlockstackConnect,openContractCall,openContractDeploy,openSTXTransfer,openProfileUpdateRequestPopup,openSignTransaction,openSignatureRequestPopup,openStructuredDataSignatureRequestPopup,openPsbtRequestPopup}from'@stacks/connect';export*from'@stacks/connect';var _=Object.defineProperty,I=Object.defineProperties;var E=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var H=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var S=(n,e,r)=>e in n?_(n,e,{enumerable:true,configurable:true,writable:true,value:r}):n[e]=r,a=(n,e)=>{for(var r in e||(e={}))H.call(e,r)&&S(n,r,e[r]);if(O)for(var r of O(e))N.call(e,r)&&S(n,r,e[r]);return n},s=(n,e)=>I(n,E(e));var D={isOpen:false,isAuthenticating:false,authData:void 0,userSession:void 0,authOptions:{redirectTo:\"\",manifestPath:\"\",onFinish:()=>null,authOrigin:void 0,sendToSignIn:false,appDetails:{name:\"\",icon:\"\"}}},$=(n,{type:e,payload:r})=>{switch(e){case \"data/update-auth-options\":return s(a({},n),{authOptions:a(a({},n.authOptions),r)});default:throw new Error(`Unhandled action type: ${e}`)}},c=createContext(D),d=createContext(void 0),g=({authOptions:n,children:e})=>{let[r,t]=useReducer($,D);return C.createElement(c.Provider,{value:s(a({},r),{authOptions:n})},C.createElement(d.Provider,{value:t},e))};var z=({authOptions:n,children:e})=>C.createElement(g,{authOptions:n},e);var Z=()=>{let n=useContext(d);if(!n)throw new Error(\"This must be used within the ConnectProvider component.\");return n},tt=()=>{let{isOpen:n,isAuthenticating:e,authData:r,authOptions:t,userSession:T}=useContext(c),A=Z(),m=o=>A({type:\"data/update-auth-options\",payload:o}),v=(o,i,u)=>{if(o){let p=s(a(a({},t),i),{onFinish:w=>{var l;(l=t.onFinish)==null||l.call(t,w);},sendToSignIn:true});authenticate(p,u);return}else showBlockstackConnect(s(a({},t),{sendToSignIn:false}));t&&m(t);},y=(o={},i)=>{authenticate(s(a(a({},t),o),{onFinish:u=>{var p;(p=t.onFinish)==null||p.call(t,u);}}),i);};function R(o,i){return openContractCall(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function x(o,i){return openContractDeploy(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function U(o,i){return openSTXTransfer(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function k(o,i){return openProfileUpdateRequestPopup(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function q(o,i){return openSignTransaction(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function F(o,i){return openSignatureRequestPopup(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function b(o,i){return openStructuredDataSignatureRequestPopup(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}function X(o,i){return openPsbtRequestPopup(s(a({},o),{authOrigin:t.authOrigin,appDetails:t.appDetails}),i)}return {isOpen:n,isAuthenticating:e,authData:r,authOptions:t,userSession:T,doOpenAuth:v,doAuth:y,authenticate:authenticate,doContractCall:R,doContractDeploy:x,doSTXTransfer:U,doSignTransaction:q,doProfileUpdate:k,sign:F,signStructuredData:b,signPsbt:X}};export{z as Connect,tt as useConnect};//# sourceMappingURL=index.mjs.map\n//# sourceMappingURL=index.mjs.map","/**\n * @license\n * Copyright 2010-2024 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '170';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst NeutralToneMapping = 7;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst UnsignedInt5999Type = 35902;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst RGBDepthPacking = 3202;\nconst RGDepthPacking = 3203;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range to range \nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\nfunction toNormalizedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\n\t// Convert [-1, 1] to [0, 1] projection matrix\n\tm[ 2 ] = 0.5 * m[ 2 ] + 0.5 * m[ 3 ];\n\tm[ 6 ] = 0.5 * m[ 6 ] + 0.5 * m[ 7 ];\n\tm[ 10 ] = 0.5 * m[ 10 ] + 0.5 * m[ 11 ];\n\tm[ 14 ] = 0.5 * m[ 14 ] + 0.5 * m[ 15 ];\n\n}\n\nfunction toReversedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\tconst isPerspectiveMatrix = m[ 11 ] === - 1;\n\n\t// Reverse [0, 1] projection matrix\n\tif ( isPerspectiveMatrix ) {\n\n\t\tm[ 10 ] = - m[ 10 ] - 1;\n\t\tm[ 14 ] = - m[ 14 ];\n\n\t} else {\n\n\t\tm[ 10 ] = - m[ 10 ];\n\t\tm[ 14 ] = - m[ 14 ] + 1;\n\n\t}\n\n}\n\nconst ColorManagement = {\n\n\tenabled: true,\n\n\tworkingColorSpace: LinearSRGBColorSpace,\n\n\t/**\n\t * Implementations of supported color spaces.\n\t *\n\t * Required:\n\t *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n\t *\t- whitePoint: reference white [ x y ]\n\t *\t- transfer: transfer function (pre-defined)\n\t *\t- toXYZ: Matrix3 RGB to XYZ transform\n\t *\t- fromXYZ: Matrix3 XYZ to RGB transform\n\t *\t- luminanceCoefficients: RGB luminance coefficients\n\t *\n\t * Optional:\n\t * - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }\n\t * - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n\t *\n\t * Reference:\n\t * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n\t */\n\tspaces: {},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\tcolor.r = SRGBToLinear( color.r );\n\t\t\tcolor.g = SRGBToLinear( color.g );\n\t\t\tcolor.b = SRGBToLinear( color.b );\n\n\t\t}\n\n\t\tif ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) {\n\n\t\t\tcolor.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ );\n\t\t\tcolor.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t}\n\n\t\tif ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\tcolor.r = LinearToSRGB( color.r );\n\t\t\tcolor.g = LinearToSRGB( color.g );\n\t\t\tcolor.b = LinearToSRGB( color.b );\n\n\t\t}\n\n\t\treturn color;\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n\tgetPrimaries: function ( colorSpace ) {\n\n\t\treturn this.spaces[ colorSpace ].primaries;\n\n\t},\n\n\tgetTransfer: function ( colorSpace ) {\n\n\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\treturn this.spaces[ colorSpace ].transfer;\n\n\t},\n\n\tgetLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {\n\n\t\treturn target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );\n\n\t},\n\n\tdefine: function ( colorSpaces ) {\n\n\t\tObject.assign( this.spaces, colorSpaces );\n\n\t},\n\n\t// Internal APIs\n\n\t_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {\n\n\t\treturn targetMatrix\n\t\t\t.copy( this.spaces[ sourceColorSpace ].toXYZ )\n\t\t\t.multiply( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t},\n\n\t_getDrawingBufferColorSpace: function ( colorSpace ) {\n\n\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace;\n\n\t},\n\n\t_getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) {\n\n\t\treturn this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace;\n\n\t}\n\n};\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n/******************************************************************************\n * sRGB definitions\n */\n\nconst REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ];\nconst REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ];\nconst D65 = [ 0.3127, 0.3290 ];\n\nconst LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(\n\t0.4123908, 0.3575843, 0.1804808,\n\t0.2126390, 0.7151687, 0.0721923,\n\t0.0193308, 0.1191948, 0.9505322\n);\n\nconst XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set(\n\t3.2409699, - 1.5373832, - 0.4986108,\n\t- 0.9692436, 1.8759675, 0.0415551,\n\t0.0556301, - 0.2039770, 1.0569715\n);\n\nColorManagement.define( {\n\n\t[ LinearSRGBColorSpace ]: {\n\t\tprimaries: REC709_PRIMARIES,\n\t\twhitePoint: D65,\n\t\ttransfer: LinearTransfer,\n\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\tworkingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t},\n\n\t[ SRGBColorSpace ]: {\n\t\tprimaries: REC709_PRIMARIES,\n\t\twhitePoint: D65,\n\t\ttransfer: SRGBTransfer,\n\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t},\n\n} );\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\t\tthis.channel = 0;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\tthis.colorSpace = colorSpace;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.pmremVersion = 0; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1\n\t\t}, options );\n\n\t\tconst texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\ttexture.flipY = false;\n\t\ttexture.generateMipmaps = options.generateMipmaps;\n\t\ttexture.internalFormat = options.internalFormat;\n\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// sets this quaternion to a uniform random unit quaternnion\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y &&\n\t\t\tpoint.z >= this.min.z && point.z <= this.max.z;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y &&\n\t\t\tbox.max.z >= this.min.z && box.min.z <= this.max.z;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$3.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$3 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$3, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$3, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$3, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$3, _v1$7, _v2$4, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$3 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$4.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$4.elements[ 0 ] *= invSX;\n\t\t_m1$4.elements[ 1 ] *= invSX;\n\t\t_m1$4.elements[ 2 ] *= invSX;\n\n\t\t_m1$4.elements[ 4 ] *= invSY;\n\t\t_m1$4.elements[ 5 ] *= invSY;\n\t\t_m1$4.elements[ 6 ] *= invSY;\n\n\t\t_m1$4.elements[ 8 ] *= invSZ;\n\t\t_m1$4.elements[ 9 ] *= invSZ;\n\t\t_m1$4.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$4 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$4 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$3 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nconst _childaddedEvent = { type: 'childadded', child: null };\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$3.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$3.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$3.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$3 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$3.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$3 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$3.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$3.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$3 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// make sure descendants are updated\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nconst _v40 = /*@__PURE__*/ new Vector4();\nconst _v41 = /*@__PURE__*/ new Vector4();\nconst _v42 = /*@__PURE__*/ new Vector4();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$2.subVectors( a, b );\n\t\ttarget.cross( _v0$2 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$2.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$2.dot( _v0$2 );\n\t\tconst dot01 = _v0$2.dot( _v1$3 );\n\t\tconst dot02 = _v0$2.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {\n\n\t\t_v40.setScalar( 0 );\n\t\t_v41.setScalar( 0 );\n\t\t_v42.setScalar( 0 );\n\n\t\t_v40.fromBufferAttribute( attr, i1 );\n\t\t_v41.fromBufferAttribute( attr, i2 );\n\t\t_v42.fromBufferAttribute( attr, i3 );\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( _v40, barycoord.x );\n\t\ttarget.addScaledVector( _v41, barycoord.y );\n\t\ttarget.addScaledVector( _v42, barycoord.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$2.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$2.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$2.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$2.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tstatic get type() {\n\n\t\treturn 'Material';\n\n\t}\n\n\tget type() {\n\n\t\treturn this.constructor.type;\n\n\t}\n\n\tset type( _value ) { /* */ }\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\t\tthis.alphaHash = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\t\tthis.blendAlpha = 0;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\t\tthis.forceSinglePass = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\t// onBeforeRender and onBeforeCompile only supported in WebGLRenderer\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {\n\n\t\tconsole.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshBasicMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nconst DataUtils = {\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat,\n};\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$2 = 0;\n\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.indirect = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetIndirect( indirect ) {\n\n\t\tthis.indirect = indirect;\n\n\t\treturn this;\n\n\t}\n\n\tgetIndirect() {\n\n\t\treturn this.indirect;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1$2.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1$2.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1$2.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1$2.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1$2.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1$2.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1$2 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute === undefined ) {\n\n\t\t\tconst position = [];\n\n\t\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tpositionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tif ( points.length > positionAttribute.count ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );\n\n\t\t\t}\n\n\t\t\tpositionAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tconst barycoord = new Vector3();\n\t\tTriangle.getBarycoord( _intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord );\n\n\t\tif ( uv ) {\n\n\t\t\tintersection.uv = Triangle.getInterpolatedAttribute( uv, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\tintersection.uv1 = Triangle.getInterpolatedAttribute( uv1, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\tintersection.normal = Triangle.getInterpolatedAttribute( normal, a, b, c, barycoord, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( - 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\t\tintersection.barycoord = barycoord;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'ShaderMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Copies the result into the target Vector2, where x is width and y is height.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = - 90; // negative fov is not an error\nconst aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tthis.renderTarget = renderTarget;\n\t\tthis.coordinateSystem = null;\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, - 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\t\tcameraPX.lookAt( - 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\t\tcameraNY.lookAt( 0, - 1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, - 1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$5.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$5.center.set( 0, 0, 0 );\n\t\t_sphere$5.radius = 0.7071067811865476;\n\t\t_sphere$5.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$5 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl ) {\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\t// Before applying update ranges, we merge any adjacent / overlapping\n\t\t\t// ranges to reduce load on `gl.bufferSubData`. Empirically, this has led\n\t\t\t// to performance improvements for applications which make heavy use of\n\t\t\t// update ranges. Likely due to GPU command overhead.\n\t\t\t//\n\t\t\t// Note that to reduce garbage collection between frames, we merge the\n\t\t\t// update ranges in-place. This is safe because this method will clear the\n\t\t\t// update ranges once updated.\n\n\t\t\tupdateRanges.sort( ( a, b ) => a.start - b.start );\n\n\t\t\t// To merge the update ranges in-place, we work from left to right in the\n\t\t\t// existing updateRanges array, merging ranges. This may result in a final\n\t\t\t// array which is smaller than the original. This index tracks the last\n\t\t\t// index representing a merged range, any data after this index can be\n\t\t\t// trimmed once the merge algorithm is completed.\n\t\t\tlet mergeIndex = 0;\n\n\t\t\tfor ( let i = 1; i < updateRanges.length; i ++ ) {\n\n\t\t\t\tconst previousRange = updateRanges[ mergeIndex ];\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\t// We add one here to merge adjacent ranges. This is safe because ranges\n\t\t\t\t// operate over positive integers.\n\t\t\t\tif ( range.start <= previousRange.start + previousRange.count + 1 ) {\n\n\t\t\t\t\tpreviousRange.count = Math.max(\n\t\t\t\t\t\tpreviousRange.count,\n\t\t\t\t\t\trange.start + range.count - previousRange.start\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t++ mergeIndex;\n\t\t\t\t\tupdateRanges[ mergeIndex ] = range;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Trim the array to only contain the merged ranges.\n\t\t\tupdateRanges.length = mergeIndex + 1;\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\t#if ! defined( GL_ANGLE_multi_draw )\\n\\t#define gl_DrawID _gl_DrawID\\n\\tuniform int _gl_DrawID;\\n\\t#endif\\n\\tuniform highp sampler2D batchingTexture;\\n\\tuniform highp usampler2D batchingIdTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n\\tfloat getIndirectIndex( const in int i ) {\\n\\t\\tint size = textureSize( batchingIdTexture, 0 ).x;\\n\\t\\tint x = i % size;\\n\\t\\tint y = i / size;\\n\\t\\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\\n\\t}\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\\tuniform sampler2D batchingColorTexture;\\n\\tvec3 getBatchingColor( const in float i ) {\\n\\t\\tint size = textureSize( batchingColorTexture, 0 ).x;\\n\\t\\tint j = int( i );\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n} // validated\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660, 0.0556434,\\n\\t\\t-1.5371385, 1.8760108, -0.2040259,\\n\\t\\t-0.4985314, 0.0415560, 1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\\n\\tvColor.xyz *= batchingColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n} // validated\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define cubeUV_r0 1.0\\n\\t#define cubeUV_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\n\\t#define cubeUV_m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= cubeUV_r1 ) {\\n\\t\\t\\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\\n\\t\\t} else if ( roughness >= cubeUV_r4 ) {\\n\\t\\t\\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\\n\\t\\t} else if ( roughness >= cubeUV_r5 ) {\\n\\t\\t\\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\\n\\t\\t} else if ( roughness >= cubeUV_r6 ) {\\n\\t\\t\\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\\n\\t\\temissiveColor = sRGBTransferEOTF( emissiveColor );\\n\\t#endif\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"vec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferEOTF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 sRGBTransferOETF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform mat3 envMapRotation;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\tvec2 fw = fwidth( coord ) * 0.5;\\n\\t\\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\\n\\t#endif\\n}\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_lambert_pars_fragment = \"varying vec3 vViewPosition;\\nstruct LambertMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Lambert\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Lambert\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\tmaterial.ior = ior;\\n\\t#ifdef USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_DISPERSION\\n\\tmaterial.dispersion = dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\tfloat dispersion;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n\\t#ifdef IOR\\n\\t\\tfloat ior;\\n\\t#endif\\n\\t#ifdef USE_TRANSMISSION\\n\\t\\tfloat transmission;\\n\\t\\tfloat transmissionAlpha;\\n\\t\\tfloat thickness;\\n\\t\\tfloat attenuationDistance;\\n\\t\\tvec3 attenuationColor;\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n float x2 = x * x;\\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.roughness;\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometryPosition, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\tvec4 spotColor;\\n\\tvec3 spotLightCoord;\\n\\tbool inSpotLightMap;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\\n\\t\\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\\n\\t\\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\\n\\t\\t#else\\n\\t\\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\\n\\t\\t#endif\\n\\t\\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\\n\\t\\t\\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\\n\\t\\t\\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\\n\\t\\t\\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\\n\\t\\t\\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\\n\\t\\t#endif\\n\\t\\t#undef SPOT_LIGHT_MAP_INDEX\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvFragDepth = 1.0 + gl_Position.w;\\n\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tmorphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\\t}\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\tuniform float morphTargetBaseInfluence;\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t#endif\\n\\tuniform sampler2DArray morphTargetsTexture;\\n\\tuniform ivec2 morphTargetsTextureSize;\\n\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t}\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = dFdx( vViewPosition );\\n\\tvec3 fdy = dFdy( vViewPosition );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\\nconst float Inv255 = 1. / 255.;\\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec4( 0., 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec4( 1., 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat af = modf( v * PackFactors.a, vuf );\\n\\tfloat bf = modf( vuf * ShiftRight8, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\\n}\\nvec3 packDepthToRGB( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec3( 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec3( 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat bf = modf( v * PackFactors.b, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\\n}\\nvec2 packDepthToRG( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec2( 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec2( 1., 1. );\\n\\tfloat vuf;\\n\\tfloat gf = modf( v * 256., vuf );\\n\\treturn vec2( vuf * Inv255, gf );\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors4 );\\n}\\nfloat unpackRGBToDepth( const in vec3 v ) {\\n\\treturn dot( v, UnpackFactors3 );\\n}\\nfloat unpackRGToDepth( const in vec2 v ) {\\n\\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\\n}\\nvec4 pack2HalfToRGBA( const in vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( const in vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn depth * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\\n\\t\\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn mix( 1.0, shadow, shadowIntensity );\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\t\\n\\t\\tfloat lightToPositionLength = length( lightToPosition );\\n\\t\\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\\t\\t\\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\t\\tdp += shadowBias;\\n\\t\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\t\\tshadow = (\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn mix( 1.0, shadow, shadowIntensity );\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowIntensity;\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\\n\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\tvec4 shadowWorldPosition;\\n#endif\\n#if defined( USE_SHADOWMAP )\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if NUM_SPOT_LIGHT_COORDS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition;\\n\\t\\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\t\\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\\n\\t\\t#endif\\n\\t\\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 CineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\\tconst float StartCompression = 0.8 - 0.04;\\n\\tconst float Desaturation = 0.15;\\n\\tcolor *= toneMappingExposure;\\n\\tfloat x = min( color.r, min( color.g, color.b ) );\\n\\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\\tcolor -= offset;\\n\\tfloat peak = max( color.r, max( color.g, color.b ) );\\n\\tif ( peak < StartCompression ) return color;\\n\\tfloat d = 1. - StartCompression;\\n\\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\\n\\tcolor *= newPeak / peak;\\n\\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\\n\\treturn mix( color, vec3( newPeak ), g );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tmaterial.transmission = transmission;\\n\\tmaterial.transmissionAlpha = 1.0;\\n\\tmaterial.thickness = thickness;\\n\\tmaterial.attenuationDistance = attenuationDistance;\\n\\tmaterial.attenuationColor = attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec4 transmittedLight;\\n\\t\\tvec3 transmittance;\\n\\t\\t#ifdef USE_DISPERSION\\n\\t\\t\\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\\n\\t\\t\\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\\n\\t\\t\\tfor ( int i = 0; i < 3; i ++ ) {\\n\\t\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\\n\\t\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\n\\t\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\n\\t\\t\\t\\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\\n\\t\\t\\t\\ttransmittedLight[ i ] = transmissionSample[ i ];\\n\\t\\t\\t\\ttransmittedLight.a += transmissionSample.a;\\n\\t\\t\\t\\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\\n\\t\\t\\t}\\n\\t\\t\\ttransmittedLight.a /= 3.0;\\n\\t\\t\\n\\t\\t#else\\n\\t\\t\\n\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\t\\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\t\\n\\t\\t#endif\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$h = \"uniform sampler2D t2D;\\nuniform float backgroundIntensity;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$g = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$g = \"#ifdef ENVMAP_TYPE_CUBE\\n\\tuniform samplerCube envMap;\\n#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\tuniform sampler2D envMap;\\n#endif\\nuniform float flipEnvMap;\\nuniform float backgroundBlurriness;\\nuniform float backgroundIntensity;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\\n\\t#else\\n\\t\\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\t#endif\\n\\ttexColor.rgb *= backgroundIntensity;\\n\\tgl_FragColor = texColor;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"uniform samplerCube tCube;\\nuniform float tFlip;\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\nvoid main() {\\n\\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\\n\\tgl_FragColor = texColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$e = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#elif DEPTH_PACKING == 3202\\n\\t\\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\\n\\t#elif DEPTH_PACKING == 3203\\n\\t\\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$a = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$9 = \"#define LAMBERT\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_DISPERSION\\n\\tuniform float dispersion;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include \\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$2 = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix[ 3 ];\\n\\tvec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphinstance_vertex: morphinstance_vertex,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tenvMapRotation: { value: /*@__PURE__*/ new Matrix3() },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: - 1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 },\n\t\t\tbackgroundRotation: { value: /*@__PURE__*/ new Matrix3() }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: - 1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tdispersion: { value: 0 },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\nconst _e1$1 = /*@__PURE__*/ new Euler();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction getBackground( scene ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\treturn background;\n\n\t}\n\n\tfunction render( scene ) {\n\n\t\tlet forceClear = false;\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\t// buffers might not be writable which is required to ensure a correct clear\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction addToRenderList( renderList, scene ) {\n\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\t_e1$1.copy( scene.backgroundRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1$1.x *= - 1; _e1$1.y *= - 1; _e1$1.z *= - 1;\n\n\t\t\tif ( background.isCubeTexture && background.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1$1.y *= - 1;\n\t\t\t\t_e1$1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) );\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render,\n\t\taddToRenderList: addToRenderList\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, attributes ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tconst state = getBindingState( geometry, program, material );\n\n\t\tif ( currentState !== state ) {\n\n\t\t\tcurrentState = state;\n\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t}\n\n\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\treturn gl.createVertexArray();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\treturn gl.bindVertexArray( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\treturn gl.deleteVertexArray( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tgl.vertexAttribDivisor( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes\n\n\t\t\t\t\tconst integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawArraysInstanced( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ], counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ] * primcount[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters, utils ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction textureFormatReadable( textureFormat ) {\n\n\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction textureTypeReadable( textureType ) {\n\n\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );\n\n\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\ttextureType !== FloatType && ! halfFloatSupportedByExt ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\tconst reverseDepthBuffer = parameters.reverseDepthBuffer === true && extensions.has( 'EXT_clip_control' );\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\n\tconst maxSamples = gl.getParameter( gl.MAX_SAMPLES );\n\n\treturn {\n\n\t\tisWebGL2: true, // keeping this for backwards compatibility\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\ttextureFormatReadable: textureFormatReadable,\n\t\ttextureTypeReadable: textureTypeReadable,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\treverseDepthBuffer: reverseDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nlet _oldXrEnabled = false;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported equirectangular image size is 64 x 32.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported cube size is 16 x 16.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\tthis._renderer.xr.enabled = _oldXrEnabled;\n\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\t\tconst n = this._lodPlanes.length;\n\n\t\tfor ( let i = 1; i < n; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( n - i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\tconst currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( renderTarget !== undefined ) {\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function () {\n\n\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\t\t\tgetExtension( 'WEBGL_render_shared_exponent' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\twarnOnce( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tfor ( const name in geometry.morphAttributes ) {\n\n\t\t\tconst array = geometry.morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.remove( array[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], gl.ARRAY_BUFFER );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ] / bytesPerElement, counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsInstancedWEBGL( mode, counts, 0, type, starts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ] * primcount[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// the following encodes morph targets into an array of data textures. Each layer represents a single morph target.\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet entry = morphTextures.get( geometry );\n\n\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\tlet vertexDataCount = 0;\n\n\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\tlet height = 1;\n\n\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t}\n\n\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\ttexture.type = FloatType;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\t// fill buffer\n\n\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tentry = {\n\t\t\t\tcount: morphTargetsCount,\n\t\t\t\ttexture: texture,\n\t\t\t\tsize: new Vector2( width, height )\n\t\t\t};\n\n\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\tfunction disposeTexture() {\n\n\t\t\t\ttexture.dispose();\n\n\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t}\n\n\t\t//\n\t\tif ( object.isInstancedMesh === true && object.morphTexture !== null ) {\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );\n\n\t\t} else {\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format = DepthFormat ) {\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n * \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tlet emptyTexture2D;\n\n\tif ( this.type === gl.SAMPLER_2D_SHADOW ) {\n\n\t\temptyShadowTexture.compareFunction = LessEqualCompare; // #28670\n\t\temptyTexture2D = emptyShadowTexture;\n\n\t} else {\n\n\t\temptyTexture2D = emptyTexture;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n// - followed by an optional right bracket (found when array index)\n// - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nconst _m0 = /*@__PURE__*/ new Matrix3();\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tColorManagement._getMatrix( _m0, ColorManagement.workingColorSpace, colorSpace );\n\n\tconst encodingMatrix = `mat3( ${ _m0.elements.map( ( v ) => v.toFixed( 4 ) ) } )`;\n\n\tswitch ( ColorManagement.getTransfer( colorSpace ) ) {\n\n\t\tcase LinearTransfer:\n\t\t\treturn [ encodingMatrix, 'LinearTransferOETF' ];\n\n\t\tcase SRGBTransfer:\n\t\t\treturn [ encodingMatrix, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space: ', colorSpace );\n\t\t\treturn [ encodingMatrix, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\n\treturn [\n\n\t\t`vec4 ${functionName}( vec4 value ) {`,\n\n\t\t`\treturn ${components[ 1 ]}( vec4( value.rgb * ${components[ 0 ]}, value.a ) );`,\n\n\t\t'}',\n\n\t].join( '\\n' );\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'Cineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase NeutralToneMapping:\n\t\t\ttoneMappingName = 'Neutral';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\n\nfunction getLuminanceFunction() {\n\n\tColorManagement.getLuminanceCoefficients( _v0$1 );\n\n\tconst r = _v0$1.x.toFixed( 4 );\n\tconst g = _v0$1.y.toFixed( 4 );\n\tconst b = _v0$1.z.toFixed( 4 );\n\n\treturn [\n\n\t\t'float luminance( const in vec3 rgb ) {',\n\n\t\t`\tconst vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`,\n\n\t\t'\treturn dot( weights, rgb );',\n\n\t\t'}'\n\n\t].join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map();\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\t\t\tparameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_MORPH',\n\n\t\t\t'\tuniform sampler2D morphTexture;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.dispersion ? '#define USE_DISPERSION' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\t\t\tparameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\t\t\tgetLuminanceFunction(),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id$1 = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id$1 ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst reverseDepthBuffer = renderer.state.buffers.depth.getReversed();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_DISPERSION = material.dispersion > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tbatchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\t\t\tinstancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tdispersion: HAS_DISPERSION,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( !! fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\t\treverseDepthBuffer: reverseDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\t\t\tdecodeVideoTextureEmissive: HAS_EMISSIVEMAP && ( material.emissiveMap.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.emissiveMap.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: ( HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH ) && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingMorph )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.dispersion )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.batchingColor )\n\t\t\t_programLayers.enable( 21 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.reverseDepthBuffer )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.decodeVideoTextureEmissive )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 21 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction has( object ) {\n\n\t\treturn properties.has( object );\n\n\t}\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\thas: has,\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1,\n\t\t\tnumSpotMaps: - 1,\n\n\t\t\tnumLightProbes: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions ) {\n\n\tconst lights = new WebGLLights( extensions );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init( camera ) {\n\n\t\tstate.camera = camera;\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights() {\n\n\t\tlights.setup( lightsArray );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tcamera: null,\n\n\t\tlights: lights,\n\n\t\ttransmissionRenderTarget: {}\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshDepthMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshDistanceMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( renderer, objects, capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst activeCubeFace = renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst _state = renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\trenderer.setRenderTarget( shadow.map );\n\t\t\trenderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\trenderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.mapPass );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.map );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst reversedFuncs = {\n\t[ NeverDepth ]: AlwaysDepth,\n\t[ LessDepth ]: GreaterDepth,\n\t[ EqualDepth ]: NotEqualDepth,\n\t[ LessEqualDepth ]: GreaterEqualDepth,\n\n\t[ AlwaysDepth ]: NeverDepth,\n\t[ GreaterDepth ]: LessDepth,\n\t[ NotEqualDepth ]: EqualDepth,\n\t[ GreaterEqualDepth ]: LessEqualDepth,\n};\n\nfunction WebGLState( gl, extensions ) {\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\t\tlet reversed = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetReversed: function ( value ) {\n\n\t\t\t\tif ( reversed !== value ) {\n\n\t\t\t\t\tconst ext = extensions.get( 'EXT_clip_control' );\n\n\t\t\t\t\tif ( reversed ) {\n\n\t\t\t\t\t\text.clipControlEXT( ext.LOWER_LEFT_EXT, ext.ZERO_TO_ONE_EXT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\text.clipControlEXT( ext.LOWER_LEFT_EXT, ext.NEGATIVE_ONE_TO_ONE_EXT );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst oldDepth = currentDepthClear;\n\t\t\t\t\tcurrentDepthClear = null;\n\t\t\t\t\tthis.setClear( oldDepth );\n\n\t\t\t\t}\n\n\t\t\t\treversed = value;\n\n\t\t\t},\n\n\t\t\tgetReversed: function () {\n\n\t\t\t\treturn reversed;\n\n\t\t\t},\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( reversed ) depthFunc = reversedFuncs[ depthFunc ];\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tif ( reversed ) {\n\n\t\t\t\t\t\tdepth = 1 - depth;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\t\t\t\treversed = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t currentStencilRef !== stencilRef ||\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t currentStencilZFail !== stencilZFail ||\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t}\n\n\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tequationToGL[ MinEquation ] = gl.MIN;\n\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\n\t\tdepthBuffer.setReversed( false );\n\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction contain( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t} else {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t}\n\n\treturn texture;\n\n}\n\nfunction cover( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t} else {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t}\n\n\treturn texture;\n\n}\n\nfunction fill( texture ) {\n\n\ttexture.repeat.x = 1;\n\ttexture.repeat.y = 1;\n\n\ttexture.offset.x = 0;\n\ttexture.offset.y = 0;\n\n\treturn texture;\n\n}\n\n\n\n/**\n * Given the width, height, format, and type of a texture. Determines how many\n * bytes must be used to represent the texture.\n */\nfunction getByteLength( width, height, format, type ) {\n\n\tconst typeByteLength = getTextureTypeByteLength( type );\n\n\tswitch ( format ) {\n\n\t\t// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n\t\tcase AlphaFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceAlphaFormat:\n\t\t\treturn width * height * 2;\n\t\tcase RedFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RedIntegerFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGIntegerFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBFormat:\n\t\t\treturn ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAIntegerFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n\t\tcase RGB_S3TC_DXT1_Format:\n\t\tcase RGBA_S3TC_DXT1_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_S3TC_DXT3_Format:\n\t\tcase RGBA_S3TC_DXT5_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n\t\tcase RGB_PVRTC_2BPPV1_Format:\n\t\tcase RGBA_PVRTC_2BPPV1_Format:\n\t\t\treturn ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4;\n\t\tcase RGB_PVRTC_4BPPV1_Format:\n\t\tcase RGBA_PVRTC_4BPPV1_Format:\n\t\t\treturn ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n\t\tcase RGB_ETC1_Format:\n\t\tcase RGB_ETC2_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_ETC2_EAC_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n\t\tcase RGBA_ASTC_4x4_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x4_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x5_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x5_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x6_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x5_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_8x6_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x8_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x5_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_10x6_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_10x8_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x10_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x10_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x12_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n\t\tcase RGBA_BPTC_Format:\n\t\tcase RGB_BPTC_SIGNED_Format:\n\t\tcase RGB_BPTC_UNSIGNED_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n\t\tcase RED_RGTC1_Format:\n\t\tcase SIGNED_RED_RGTC1_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8;\n\t\tcase RED_GREEN_RGTC2_Format:\n\t\tcase SIGNED_RED_GREEN_RGTC2_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine texture byte length for ${format} format.`,\n\t);\n\n}\n\nfunction getTextureTypeByteLength( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase UnsignedByteType:\n\t\tcase ByteType:\n\t\t\treturn { byteLength: 1, components: 1 };\n\t\tcase UnsignedShortType:\n\t\tcase ShortType:\n\t\tcase HalfFloatType:\n\t\t\treturn { byteLength: 2, components: 1 };\n\t\tcase UnsignedShort4444Type:\n\t\tcase UnsignedShort5551Type:\n\t\t\treturn { byteLength: 2, components: 4 };\n\t\tcase UnsignedIntType:\n\t\tcase IntType:\n\t\tcase FloatType:\n\t\t\treturn { byteLength: 4, components: 1 };\n\t\tcase UnsignedInt5999Type:\n\t\t\treturn { byteLength: 4, components: 3 };\n\n\t}\n\n\tthrow new Error( `Unknown texture type ${type}.` );\n\n}\n\nconst TextureUtils = {\n\tcontain,\n\tcover,\n\tfill,\n\tgetByteLength\n};\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _imageDimensions = new Vector2();\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\tconst dimensions = getDimensions( image );\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( dimensions.width > maxSize || dimensions.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( dimensions.width, dimensions.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||\n\t\t\t\t( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {\n\n\t\t\t\tconst width = Math.floor( scale * dimensions.width );\n\t\t\t\tconst height = Math.floor( scale * dimensions.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture ) {\n\n\t\treturn texture.generateMipmaps;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getTargetType( texture ) {\n\n\t\tif ( texture.isWebGLCubeRenderTarget ) return _gl.TEXTURE_CUBE_MAP;\n\t\tif ( texture.isWebGL3DRenderTarget ) return _gl.TEXTURE_3D;\n\t\tif ( texture.isWebGLArrayRenderTarget || texture.isCompressedArrayTexture ) return _gl.TEXTURE_2D_ARRAY;\n\t\treturn _gl.TEXTURE_2D;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RG32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGB8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGB16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGB32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RGB8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RGB16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RGB32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGBA8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGBA16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGBA32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RGBA8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RGBA16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RGBA32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getInternalDepthFormat( useStencil, depthType ) {\n\n\t\tlet glInternalFormat;\n\t\tif ( useStencil ) {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH32F_STENCIL8;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\t\t\t\tconsole.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn glInternalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t\tproperties.remove( renderTarget.depthTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\tinfo.memory.textures --;\n\n\t\t\t}\n\n\t\t\tproperties.remove( textures[ i ] );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tlet image = resizeImage( texture.image, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tlet glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\tglInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst layerData = mipmap.data.subarray(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\tconst layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\tconst layerData = image.data.subarray(\n\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tconst dimensions = getDimensions( mipmaps[ 0 ] );\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tconst dimensions = getDimensions( image );\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tconst dimensions = getDimensions( cubeImage[ 0 ] );\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\ttextureProperties.__renderTarget = renderTarget;\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t// retrieve the depth attachment types\n\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\tconst depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;\n\t\t\tconst glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType );\n\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t// set up the attachment\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\tconst isUseMultisampledRTT = useMultisampledRTT( renderTarget );\n\t\t\tif ( isUseMultisampledRTT ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( isMultisample ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\tconst textureProperties = properties.get( renderTarget.depthTexture );\n\t\ttextureProperties.__renderTarget = renderTarget;\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! textureProperties.__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = textureProperties.__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\t// if the bound depth texture has changed\n\t\tif ( renderTargetProperties.__boundDepthTexture !== renderTarget.depthTexture ) {\n\n\t\t\t// fire the dispose event to get rid of stored state associated with the previously bound depth buffer\n\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\tif ( renderTargetProperties.__depthDisposeCallback ) {\n\n\t\t\t\trenderTargetProperties.__depthDisposeCallback();\n\n\t\t\t}\n\n\t\t\t// set up dispose listeners to track when the currently attached buffer is implicitly unbound\n\t\t\tif ( depthTexture ) {\n\n\t\t\t\tconst disposeEvent = () => {\n\n\t\t\t\t\tdelete renderTargetProperties.__boundDepthTexture;\n\t\t\t\t\tdelete renderTargetProperties.__depthDisposeCallback;\n\t\t\t\t\tdepthTexture.removeEventListener( 'dispose', disposeEvent );\n\n\t\t\t\t};\n\n\t\t\t\tdepthTexture.addEventListener( 'dispose', disposeEvent );\n\t\t\t\trenderTargetProperties.__depthDisposeCallback = disposeEvent;\n\n\t\t\t}\n\n\t\t\trenderTargetProperties.__boundDepthTexture = depthTexture;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer[ i ] === undefined ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// attach buffer if it's been created already\n\t\t\t\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\tconst renderbuffer = renderTargetProperties.__webglDepthbuffer[ i ];\n\t\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer === undefined ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// attach buffer if it's been created already\n\t\t\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\t\tconst renderbuffer = renderTargetProperties.__webglDepthbuffer;\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\tif ( ! isMultipleRenderTargets ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture );\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tconst targetType = getTargetType( renderTarget );\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( targetType, webglTexture );\n\t\t\t\tgenerateMipmap( targetType );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst invalidationArrayRead = [];\n\tconst invalidationArrayDraw = [];\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.samples > 0 ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = renderTarget.textures;\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\t\t\t// If MRT we need to remove FBO attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTarget.resolveDepthBuffer ) {\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t\t\t\t// resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)\n\n\t\t\t\t\t\tif ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\t\tif ( supportsInvalidateFramebuffer === true ) {\n\n\t\t\t\t\t\tinvalidationArrayRead.length = 0;\n\t\t\t\t\t\tinvalidationArrayDraw.length = 0;\n\n\t\t\t\t\t\tinvalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) {\n\n\t\t\t\t\t\t\tinvalidationArrayRead.push( depthStyle );\n\t\t\t\t\t\t\tinvalidationArrayDraw.push( depthStyle );\n\n\t\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t} else {\n\n\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction getDimensions( image ) {\n\n\t\tif ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {\n\n\t\t\t// if intrinsic data are not available, fallback to width/height\n\n\t\t\t_imageDimensions.width = image.naturalWidth || image.width;\n\t\t\t_imageDimensions.height = image.naturalHeight || image.height;\n\n\t\t} else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {\n\n\t\t\t_imageDimensions.width = image.displayWidth;\n\t\t\t_imageDimensions.height = image.displayHeight;\n\n\t\t} else {\n\n\t\t\t_imageDimensions.width = image.width;\n\t\t\t_imageDimensions.height = image.height;\n\n\t\t}\n\n\t\treturn _imageDimensions;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions ) {\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\t\tif ( p === HalfFloatType ) return gl.HALF_FLOAT;\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC\n\n\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) return gl.UNSIGNED_INT_24_8;\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear != renderState.depthNear ) || ( depthData.depthFar != renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\tgetMesh( cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.mesh;\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n\tgetDepthTexture() {\n\n\t\treturn this.texture;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\tif ( session.renderState.layers === undefined ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0,\n\t\t\t\t\t\t\tresolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false )\n\t\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getDepthTexture = function () {\n\n\t\t\treturn depthSensing.getDepthTexture();\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Check if the projection uses an infinite far plane.\n\t\t\tif ( projL[ 10 ] === - 1.0 ) {\n\n\t\t\t\t// Use the projection matrix from the left eye.\n\t\t\t\t// The camera offset is sufficient to include the view volumes\n\t\t\t\t// of both eyes (assuming symmetric projections).\n\t\t\t\tcamera.projectionMatrix.copy( cameraL.projectionMatrix );\n\t\t\t\tcamera.projectionMatrixInverse.copy( cameraL.projectionMatrixInverse );\n\n\t\t\t} else {\n\n\t\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t\t// although must now be relative to the new union camera.\n\t\t\t\tconst near2 = near + zOffset;\n\t\t\t\tconst far2 = far + zOffset;\n\t\t\t\tconst left2 = left - xOffset;\n\t\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tlet depthNear = camera.near;\n\t\t\tlet depthFar = camera.far;\n\n\t\t\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tif ( depthSensing.depthNear > 0 ) depthNear = depthSensing.depthNear;\n\t\t\t\tif ( depthSensing.depthFar > 0 ) depthFar = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = depthNear;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = depthFar;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tcameraL.layers.mask = camera.layers.mask | 0b010;\n\t\t\tcameraR.layers.mask = camera.layers.mask | 0b100;\n\t\t\tcameraXR.layers.mask = cameraL.layers.mask | cameraR.layers.mask;\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\tthis.getDepthSensingMesh = function () {\n\n\t\t\treturn depthSensing.getMesh( cameraXR );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\n\t\t\t\tif ( enabledFeatures && enabledFeatures.includes( 'depth-sensing' ) ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nconst _e1 = /*@__PURE__*/ new Euler();\nconst _m1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= - 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst envMap = materialProperties.envMap;\n\t\tconst envMapRotation = materialProperties.envMapRotation;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\t_e1.copy( envMapRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1.x *= - 1; _e1.y *= - 1; _e1.z *= - 1;\n\n\t\t\tif ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1.y *= - 1;\n\t\t\t\t_e1.z *= - 1;\n\n\t\t\t}\n\n\t\t\tuniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.dispersion > 0 ) {\n\n\t\t\tuniforms.dispersion.value = material.dispersion;\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\tconst chunkOffset = offset % chunkSize; // offset in the current chunk\n\t\t\t\t\tconst chunkPadding = chunkOffset % info.boundary; // required padding to match boundary\n\t\t\t\t\tconst chunkStart = chunkOffset + chunkPadding; // the start position in the current chunk for the data\n\n\t\t\t\t\toffset += chunkPadding;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkStart !== 0 && ( chunkSize - chunkStart ) < info.storage ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkStart );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = false,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t\treverseDepthBuffer = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );\n\n\t\t\t}\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = - 1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// camera matrices cache\n\n\t\tconst _currentProjectionMatrix = new Matrix4();\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _vector4 = new Vector4();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tlet _renderBackground = false;\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextName, contextAttributes ) {\n\n\t\t\treturn canvas.getContext( contextName, contextAttributes );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextName = 'webgl2';\n\n\t\t\t\t_gl = getContext( contextName, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextName ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.init();\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );\n\n\t\t\tstate = new WebGLState( _gl, extensions );\n\n\t\t\tif ( capabilities.reverseDepthBuffer && reverseDepthBuffer ) {\n\n\t\t\t\tstate.buffers.depth.setReversed( true );\n\n\t\t\t}\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, attributes );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) {\n\n\t\t\t\tbits |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t}\n\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tif ( object._multiDrawInstances !== null ) {\n\n\t\t\t\t\trenderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! extensions.get( 'WEBGL_multi_draw' ) ) {\n\n\t\t\t\t\t\tconst starts = object._multiDrawStarts;\n\t\t\t\t\t\tconst counts = object._multiDrawCounts;\n\t\t\t\t\t\tconst drawCount = object._multiDrawCount;\n\t\t\t\t\t\tconst bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;\n\t\t\t\t\t\tconst uniforms = properties.get( material ).currentProgram.getUniforms();\n\t\t\t\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\t\t\t\tuniforms.setValue( _gl, '_gl_DrawID', i );\n\t\t\t\t\t\t\trenderer.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights();\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tif ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\trenderStateStack.pop();\n\t\t\tcurrentRenderState = null;\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tconst depthSensingMesh = _this.xr.getDepthSensingMesh();\n\n\t\t\t\tif ( depthSensingMesh !== null ) {\n\n\t\t\t\t\tprojectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t_renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;\n\t\t\tif ( _renderBackground ) {\n\n\t\t\t\tbackground.addToRenderList( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t\t// render scene\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\n\t\t\tcurrentRenderState.setupLights();\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) {\n\n\t\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\t\trenderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = - 1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector4.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector4\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {\n\n\t\t\t\tcurrentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: 4,\n\t\t\t\t\tstencilBuffer: stencil,\n\t\t\t\t\tresolveDepthBuffer: false,\n\t\t\t\t\tresolveStencilBuffer: false,\n\t\t\t\t\tcolorSpace: ColorManagement.workingColorSpace,\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\tconst transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];\n\n\t\t\tconst activeViewport = camera.viewport || _currentViewport;\n\t\t\ttransmissionRenderTarget.setSize( activeViewport.z, activeViewport.w );\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\t// Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).\n\t\t\t// Transmission render pass requires viewport to match the transmissionRenderTarget.\n\t\t\tconst currentCameraViewport = camera.viewport;\n\t\t\tif ( camera.viewport !== undefined ) camera.viewport = undefined;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131\n\n\t\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\t\tconst object = renderItem.object;\n\t\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\t\tconst material = renderItem.material;\n\t\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\tif ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\t\t\tmaterialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.batchingColor = parameters.batchingColor;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.instancingMorph = parameters.instancingMorph;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tconst reverseDepthBuffer = state.buffers.depth.getReversed();\n\n\t\t\t\tif ( reverseDepthBuffer ) {\n\n\t\t\t\t\t_currentProjectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t\t\ttoNormalizedProjectionMatrix( _currentProjectionMatrix );\n\t\t\t\t\ttoReversedProjectionMatrix( _currentProjectionMatrix );\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', _currentProjectionMatrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingIdTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingColorTexture' );\n\t\t\t\tif ( object._colorsTexture !== null ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {\n\n\t\t\t\tm_uniforms.envMapIntensity.value = scene.environmentIntensity;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t} else if ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t// check if the depth texture is already bound to the frame buffer and that it's been initialized\n\t\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\t\t\tif ( renderTargetProperties.__boundDepthTexture !== depthTexture ) {\n\n\t\t\t\t\t\t// check if the depth texture is compatible\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdepthTexture !== null &&\n\t\t\t\t\t\t\tproperties.has( depthTexture ) &&\n\t\t\t\t\t\t\t( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height )\n\t\t\t\t\t\t) {\n\n\t\t\t\t\t\t\tthrow new Error( 'WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Swap the depth buffer to the currently attached one\n\t\t\t\t\t\ttextures.setupDepthRenderbuffer( renderTarget );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t// set the active frame buffer to the one we want to read\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t\tconst glBuffer = _gl.createBuffer();\n\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );\n\n\t\t\t\t\t// reset the frame buffer to the currently set buffer before waiting\n\t\t\t\t\tconst currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer );\n\n\t\t\t\t\t// check if the commands have finished every 8 ms\n\t\t\t\t\tconst sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );\n\n\t\t\t\t\t_gl.flush();\n\n\t\t\t\t\tawait probeAsync( _gl, sync, 4 );\n\n\t\t\t\t\t// read the data and delete the buffer\n\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t_gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );\n\t\t\t\t\t_gl.deleteBuffer( glBuffer );\n\t\t\t\t\t_gl.deleteSync( sync );\n\n\t\t\t\t\treturn buffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {\n\n\t\t\t// support previous signature with position first\n\t\t\tif ( texture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyFramebufferToTexture function signature has changed.' );\n\n\t\t\t\tposition = arguments[ 0 ] || null;\n\t\t\t\ttexture = arguments[ 1 ];\n\n\t\t\t}\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\tconst x = position !== null ? position.x : 0;\n\t\t\tconst y = position !== null ? position.y : 0;\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {\n\n\t\t\t// support previous signature with dstPosition first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed.' );\n\n\t\t\t\tdstPosition = arguments[ 0 ] || null;\n\t\t\t\tsrcTexture = arguments[ 1 ];\n\t\t\t\tdstTexture = arguments[ 2 ];\n\t\t\t\tlevel = arguments[ 3 ] || 0;\n\t\t\t\tsrcRegion = null;\n\n\t\t\t}\n\n\t\t\t// gather the necessary dimensions to copy\n\t\t\tlet width, height, depth, minX, minY, minZ;\n\t\t\tlet dstX, dstY, dstZ;\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;\n\t\t\tif ( srcRegion !== null ) {\n\n\t\t\t\twidth = srcRegion.max.x - srcRegion.min.x;\n\t\t\t\theight = srcRegion.max.y - srcRegion.min.y;\n\t\t\t\tdepth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1;\n\t\t\t\tminX = srcRegion.min.x;\n\t\t\t\tminY = srcRegion.min.y;\n\t\t\t\tminZ = srcRegion.isBox3 ? srcRegion.min.z : 0;\n\n\t\t\t} else {\n\n\t\t\t\twidth = image.width;\n\t\t\t\theight = image.height;\n\t\t\t\tdepth = image.depth || 1;\n\t\t\t\tminX = 0;\n\t\t\t\tminY = 0;\n\t\t\t\tminZ = 0;\n\n\t\t\t}\n\n\t\t\tif ( dstPosition !== null ) {\n\n\t\t\t\tdstX = dstPosition.x;\n\t\t\t\tdstY = dstPosition.y;\n\t\t\t\tdstZ = dstPosition.z;\n\n\t\t\t} else {\n\n\t\t\t\tdstX = 0;\n\t\t\t\tdstY = 0;\n\t\t\t\tdstZ = 0;\n\n\t\t\t}\n\n\t\t\t// Set up the destination target\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\t// used for copying data from cpu\n\t\t\tconst currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );\n\n\t\t\t// set up the src texture\n\t\t\tconst isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;\n\t\t\tconst isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture;\n\t\t\tif ( srcTexture.isRenderTargetTexture || srcTexture.isDepthTexture ) {\n\n\t\t\t\tconst srcTextureProperties = properties.get( srcTexture );\n\t\t\t\tconst dstTextureProperties = properties.get( dstTexture );\n\t\t\t\tconst srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget );\n\t\t\t\tconst dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget );\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < depth; i ++ ) {\n\n\t\t\t\t\t// if the source or destination are a 3d target then a layer needs to be bound\n\t\t\t\t\tif ( isSrc3D ) {\n\n\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, level, minZ + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( srcTexture.isDepthTexture ) {\n\n\t\t\t\t\t\tif ( isDst3D ) {\n\n\t\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, level, dstZ + i );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST );\n\n\t\t\t\t\t} else if ( isDst3D ) {\n\n\t\t\t\t\t\t_gl.copyTexSubImage3D( glTarget, level, dstX, dstY, dstZ + i, minX, minY, width, height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.copyTexSubImage2D( glTarget, level, dstX, dstY, dstZ + i, minX, minY, width, height );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t} else {\n\n\t\t\t\tif ( isDst3D ) {\n\n\t\t\t\t\t// copy data into the 3d texture\n\t\t\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t\t\t_gl.texSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t\t\t} else if ( dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.texSubImage3D( glTarget, level, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// copy data into the 2d texture\n\t\t\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else if ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, image.width, image.height, glFormat, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, level, dstX, dstY, width, height, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// reset values\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( level === 0 && dstTexture.generateMipmaps ) {\n\n\t\t\t\t_gl.generateMipmap( glTarget );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {\n\n\t\t\t// support previous signature with source box first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture3D function signature has changed.' );\n\n\t\t\t\tsrcRegion = arguments[ 0 ] || null;\n\t\t\t\tdstPosition = arguments[ 1 ] || null;\n\t\t\t\tsrcTexture = arguments[ 2 ];\n\t\t\t\tdstTexture = arguments[ 3 ];\n\t\t\t\tlevel = arguments[ 4 ] || 0;\n\n\t\t\t}\n\n\t\t\t// @deprecated, r170\n\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use \"copyTextureToTexture\" instead.' );\n\n\t\t\treturn this.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, level );\n\n\t\t};\n\n\t\tthis.initRenderTarget = function ( target ) {\n\n\t\t\tif ( properties.get( target ).__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( target );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorspace = ColorManagement._getDrawingBufferColorSpace( colorSpace );\n\t\tgl.unpackColorSpace = ColorManagement._getUnpackColorSpace();\n\n\t}\n\n}\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.backgroundBlurriness = 0;\n\t\tthis.backgroundIntensity = 1;\n\t\tthis.backgroundRotation = new Euler();\n\n\t\tthis.environmentIntensity = 1;\n\t\tthis.environmentRotation = new Euler();\n\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'SpriteMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = material;\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tremoveLevel( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0; i < levels.length; i ++ ) {\n\n\t\t\tif ( levels[ i ].distance === distance ) {\n\n\t\t\t\tconst removedElements = levels.splice( i, 1 );\n\t\t\t\tthis.remove( removedElements[ 0 ].object );\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = AttachedBindMode;\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tapplyBoneTransform( index, vector ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( vector ).applyMatrix4( this.bindMatrix );\n\n\t\tvector.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\tvector.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn vector.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\t\tthis.morphTexture = null;\n\n\t\tthis.count = count;\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$3 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$3.copy( this.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction ascIdSort( a, b ) {\n\n\treturn a - b;\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( start, count, z, index ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: - 1,\n\t\t\t\tcount: - 1,\n\t\t\t\tz: - 1,\n\t\t\t\tindex: - 1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = start;\n\t\titem.count = count;\n\t\titem.z = z;\n\t\titem.index = index;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _forward = /*@__PURE__*/ new Vector3();\nconst _temp = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\n// safely copies array contents to a potentially smaller array\nfunction copyArrayContents( src, target ) {\n\n\tif ( src.constructor !== target.constructor ) {\n\n\t\t// if arrays are of a different type (eg due to index size increasing) then data must be per-element copied\n\t\tconst len = Math.min( src.length, target.length );\n\t\tfor ( let i = 0; i < len; i ++ ) {\n\n\t\t\ttarget[ i ] = src[ i ];\n\n\t\t}\n\n\t} else {\n\n\t\t// if the arrays use the same data layout we can use a fast block copy\n\t\tconst len = Math.min( src.length, target.length );\n\t\ttarget.set( new src.constructor( src.buffer, 0, len ) );\n\n\t}\n\n}\n\nclass BatchedMesh extends Mesh {\n\n\tget maxInstanceCount() {\n\n\t\treturn this._maxInstanceCount;\n\n\t}\n\n\tget instanceCount() {\n\n\t\treturn this._instanceInfo.length - this._availableInstanceIds.length;\n\n\t}\n\n\tget unusedVertexCount() {\n\n\t\treturn this._maxVertexCount - this._nextVertexStart;\n\n\t}\n\n\tget unusedIndexCount() {\n\n\t\treturn this._maxIndexCount - this._nextIndexStart;\n\n\t}\n\n\tconstructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\tthis.isBatchedMesh = true;\n\t\tthis.perObjectFrustumCulled = true;\n\t\tthis.sortObjects = true;\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\t\tthis.customSort = null;\n\n\t\t// stores visible, active, and geometry id per instance and reserved buffer ranges for geometries\n\t\tthis._instanceInfo = [];\n\t\tthis._geometryInfo = [];\n\n\t\t// instance, geometry ids that have been set as inactive, and are available to be overwritten\n\t\tthis._availableInstanceIds = [];\n\t\tthis._availableGeometryIds = [];\n\n\t\t// used to track where the next point is that geometry should be inserted\n\t\tthis._nextIndexStart = 0;\n\t\tthis._nextVertexStart = 0;\n\t\tthis._geometryCount = 0;\n\n\t\t// flags\n\t\tthis._visibilityChanged = true;\n\t\tthis._geometryInitialized = false;\n\n\t\t// cached user options\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\t// buffers for multi draw\n\t\tthis._multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\t\tthis._indirectTexture = null;\n\t\tthis._colorsTexture = null;\n\n\t\tthis._initMatricesTexture();\n\t\tthis._initIndirectTexture();\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t// with 8x8 pixel texture max 16 matrices * 4 pixels = (8 * 8)\n\t\t// 16x16 pixel texture max 64 matrices * 4 pixels = (16 * 16)\n\t\t// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)\n\t\t// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initIndirectTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\tconst indirectArray = new Uint32Array( size * size );\n\t\tconst indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );\n\n\t\tthis._indirectTexture = indirectTexture;\n\n\t}\n\n\t_initColorsTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\t// 4 floats per RGBA pixel initialized to white\n\t\tconst colorsArray = new Float32Array( size * size * 4 ).fill( 1 );\n\t\tconst colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );\n\t\tcolorsTexture.colorSpace = ColorManagement.workingColorSpace;\n\n\t\tthis._colorsTexture = colorsTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\t// Reserve last u16 index for primitive restart.\n\t\t\t\tconst indexArray = maxVertexCount > 65535\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\taddInstance( geometryId ) {\n\n\t\tconst atCapacity = this._instanceInfo.length >= this.maxInstanceCount;\n\n\t\t// ensure we're not over geometry\n\t\tif ( atCapacity && this._availableInstanceIds.length === 0 ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\tconst instanceInfo = {\n\t\t\tvisible: true,\n\t\t\tactive: true,\n\t\t\tgeometryIndex: geometryId,\n\t\t};\n\n\t\tlet drawId = null;\n\n\t\t// Prioritize using previously freed instance ids\n\t\tif ( this._availableInstanceIds.length > 0 ) {\n\n\t\t\tthis._availableInstanceIds.sort( ascIdSort );\n\n\t\t\tdrawId = this._availableInstanceIds.shift();\n\t\t\tthis._instanceInfo[ drawId ] = instanceInfo;\n\n\t\t} else {\n\n\t\t\tdrawId = this._instanceInfo.length;\n\t\t\tthis._instanceInfo.push( instanceInfo );\n\n\t\t}\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\t_matrix$1.identity().toArray( matricesTexture.image.data, drawId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tif ( colorsTexture ) {\n\n\t\t\t_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );\n\t\t\tcolorsTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn drawId;\n\n\t}\n\n\taddGeometry( geometry, reservedVertexCount = - 1, reservedIndexCount = - 1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst geometryInfo = {\n\t\t\t// geometry information\n\t\t\tvertexStart: - 1,\n\t\t\tvertexCount: - 1,\n\t\t\treservedVertexCount: - 1,\n\n\t\t\tindexStart: - 1,\n\t\t\tindexCount: - 1,\n\t\t\treservedIndexCount: - 1,\n\n\t\t\t// draw range information\n\t\t\tstart: - 1,\n\t\t\tcount: - 1,\n\n\t\t\t// state\n\t\t\tboundingBox: null,\n\t\t\tboundingSphere: null,\n\t\t\tactive: true,\n\t\t};\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tgeometryInfo.vertexStart = this._nextVertexStart;\n\t\tgeometryInfo.reservedVertexCount = reservedVertexCount === - 1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount;\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tgeometryInfo.indexStart = this._nextIndexStart;\n\t\t\tgeometryInfo.reservedIndexCount = reservedIndexCount === - 1 ? index.count : reservedIndexCount;\n\n\t\t}\n\n\t\tif (\n\t\t\tgeometryInfo.indexStart !== - 1 &&\n\t\t\tgeometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount ||\n\t\t\tgeometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\t// update id\n\t\tlet geometryId;\n\t\tif ( this._availableGeometryIds.length > 0 ) {\n\n\t\t\tthis._availableGeometryIds.sort( ascIdSort );\n\n\t\t\tgeometryId = this._availableGeometryIds.shift();\n\t\t\tgeometryInfoList[ geometryId ] = geometryInfo;\n\n\n\t\t} else {\n\n\t\t\tgeometryId = this._geometryCount;\n\t\t\tthis._geometryCount ++;\n\t\t\tgeometryInfoList.push( geometryInfo );\n\n\t\t}\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\t// increment the next geometry position\n\t\tthis._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount;\n\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\treturn geometryId;\n\n\t}\n\n\tsetGeometryAt( geometryId, geometry ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > geometryInfo.reservedIndexCount ||\n\t\t\tgeometry.attributes.position.count > geometryInfo.reservedVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry buffer data over\n\t\tconst vertexStart = geometryInfo.vertexStart;\n\t\tconst reservedVertexCount = geometryInfo.reservedVertexCount;\n\t\tgeometryInfo.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = geometryInfo.indexStart;\n\t\t\tconst reservedIndexCount = geometryInfo.reservedIndexCount;\n\t\t\tgeometryInfo.indexCount = geometry.getIndex().count;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount );\n\n\t\t}\n\n\t\t// update the draw range\n\t\tgeometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\t\tgeometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount;\n\n\t\t// store the bounding boxes\n\t\tgeometryInfo.boundingBox = null;\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tgeometryInfo.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tgeometryInfo.boundingSphere = null;\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tgeometryInfo.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn geometryId;\n\n\t}\n\n\tdeleteGeometry( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// delete any instances associated with this geometry\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].geometryIndex === geometryId ) {\n\n\t\t\t\tthis.deleteInstance( i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometryInfoList[ geometryId ].active = false;\n\t\tthis._availableGeometryIds.push( geometryId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteInstance( instanceId ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tinstanceInfo[ instanceId ].active = false;\n\t\tthis._availableInstanceIds.push( instanceId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\toptimize() {\n\n\t\t// track the next indices to copy data to\n\t\tlet nextVertexStart = 0;\n\t\tlet nextIndexStart = 0;\n\n\t\t// Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest\n\t\t// in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order.\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst indices = geometryInfoList\n\t\t\t.map( ( e, i ) => i )\n\t\t\t.sort( ( a, b ) => {\n\n\t\t\t\treturn geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart;\n\n\t\t\t} );\n\n\t\tconst geometry = this.geometry;\n\t\tfor ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) {\n\n\t\t\t// if a geometry range is inactive then don't copy anything\n\t\t\tconst index = indices[ i ];\n\t\t\tconst geometryInfo = geometryInfoList[ index ];\n\t\t\tif ( geometryInfo.active === false ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// if a geometry contains an index buffer then shift it, as well\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\tif ( geometryInfo.indexStart !== nextIndexStart ) {\n\n\t\t\t\t\tconst { indexStart, vertexStart, reservedIndexCount } = geometryInfo;\n\t\t\t\t\tconst index = geometry.index;\n\t\t\t\t\tconst array = index.array;\n\n\t\t\t\t\t// shift the index pointers based on how the vertex data will shift\n\t\t\t\t\t// adjusting the index must happen first so the original vertex start value is available\n\t\t\t\t\tconst elementDelta = nextVertexStart - vertexStart;\n\t\t\t\t\tfor ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) {\n\n\t\t\t\t\t\tarray[ j ] = array[ j ] + elementDelta;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount );\n\t\t\t\t\tindex.addUpdateRange( nextIndexStart, reservedIndexCount );\n\n\t\t\t\t\tgeometryInfo.indexStart = nextIndexStart;\n\n\t\t\t\t}\n\n\t\t\t\tnextIndexStart += geometryInfo.reservedIndexCount;\n\n\t\t\t}\n\n\t\t\t// if a geometry needs to be moved then copy attribute data to overwrite unused space\n\t\t\tif ( geometryInfo.vertexStart !== nextVertexStart ) {\n\n\t\t\t\tconst { vertexStart, reservedVertexCount } = geometryInfo;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tfor ( const key in attributes ) {\n\n\t\t\t\t\tconst attribute = attributes[ key ];\n\t\t\t\t\tconst { array, itemSize } = attribute;\n\t\t\t\t\tarray.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize );\n\t\t\t\t\tattribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tgeometryInfo.vertexStart = nextVertexStart;\n\n\t\t\t}\n\n\t\t\tnextVertexStart += geometryInfo.reservedVertexCount;\n\t\t\tgeometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\n\t\t\t// step the next geometry points to the shifted position\n\t\t\tthis._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0;\n\t\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get bounding box and compute it if it doesn't exist\n\tgetBoundingBoxAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingBox === null ) {\n\n\t\t\tconst box = new Box3();\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tgeometryInfo.boundingBox = box;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingBox );\n\t\treturn target;\n\n\t}\n\n\t// get bounding sphere and compute it if it doesn't exist\n\tgetBoundingSphereAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingSphere === null ) {\n\n\t\t\tconst sphere = new Sphere();\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tgeometryInfo.boundingSphere = sphere;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingSphere );\n\t\treturn target;\n\n\t}\n\n\tsetMatrixAt( instanceId, matrix ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tmatrix.toArray( matricesArray, instanceId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetMatrixAt( instanceId, matrix ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn matrix.fromArray( matricesArray, instanceId * 16 );\n\n\t}\n\n\tsetColorAt( instanceId, color ) {\n\n\t\tif ( this._colorsTexture === null ) {\n\n\t\t\tthis._initColorsTexture();\n\n\t\t}\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tconst colorsArray = this._colorsTexture.image.data;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tcolor.toArray( colorsArray, instanceId * 4 );\n\t\tcolorsTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( instanceId, color ) {\n\n\t\tconst colorsArray = this._colorsTexture.image.data;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn color.fromArray( colorsArray, instanceId * 4 );\n\n\t}\n\n\tsetVisibleAt( instanceId, value ) {\n\n\t\t// if the geometry is out of range, not active, or visibility state\n\t\t// does not change then return early\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif (\n\t\t\tinstanceId >= instanceInfo.length ||\n\t\t\tinstanceInfo[ instanceId ].active === false ||\n\t\t\tinstanceInfo[ instanceId ].visible === value\n\t\t) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tinstanceInfo[ instanceId ].visible = value;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\tgetVisibleAt( instanceId ) {\n\n\t\t// return early if the geometry is out of range or not active\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn instanceInfo[ instanceId ].visible;\n\n\t}\n\n\tsetGeometryIdAt( instanceId, geometryId ) {\n\n\t\t// return early if the geometry is out of range or not active\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// check if the provided geometryId is within the valid range\n\t\tif ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tinstanceInfo[ instanceId ].geometryIndex = geometryId;\n\n\t\treturn this;\n\n\t}\n\n\tgetGeometryIdAt( instanceId ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\treturn - 1;\n\n\t\t}\n\n\t\treturn instanceInfo[ instanceId ].geometryIndex;\n\n\t}\n\n\tgetGeometryRangeAt( geometryId, target = {} ) {\n\n\t\tif ( geometryId < 0 || geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\ttarget.vertexStart = geometryInfo.vertexStart;\n\t\ttarget.vertexCount = geometryInfo.vertexCount;\n\t\ttarget.reservedVertexCount = geometryInfo.reservedVertexCount;\n\n\t\ttarget.indexStart = geometryInfo.indexStart;\n\t\ttarget.indexCount = geometryInfo.indexCount;\n\t\ttarget.reservedIndexCount = geometryInfo.reservedIndexCount;\n\n\t\ttarget.start = geometryInfo.start;\n\t\ttarget.count = geometryInfo.count;\n\n\t\treturn target;\n\n\t}\n\n\tsetInstanceCount( maxInstanceCount ) {\n\n\t\t// shrink the available instances as much as possible\n\t\tconst availableInstanceIds = this._availableInstanceIds;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tavailableInstanceIds.sort( ascIdSort );\n\t\twhile ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) {\n\n\t\t\tinstanceInfo.pop();\n\t\t\tavailableInstanceIds.pop();\n\n\t\t}\n\n\t\t// throw an error if it can't be shrunk to the desired size\n\t\tif ( maxInstanceCount < instanceInfo.length ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` );\n\n\t\t}\n\n\t\t// copy the multi draw counts\n\t\tconst multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tconst multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tcopyArrayContents( this._multiDrawCounts, multiDrawCounts );\n\t\tcopyArrayContents( this._multiDrawStarts, multiDrawStarts );\n\n\t\tthis._multiDrawCounts = multiDrawCounts;\n\t\tthis._multiDrawStarts = multiDrawStarts;\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\n\t\t// update texture data for instance sampling\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst colorsTexture = this._colorsTexture;\n\n\t\tindirectTexture.dispose();\n\t\tthis._initIndirectTexture();\n\t\tcopyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data );\n\n\t\tmatricesTexture.dispose();\n\t\tthis._initMatricesTexture();\n\t\tcopyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data );\n\n\t\tif ( colorsTexture ) {\n\n\t\t\tcolorsTexture.dispose();\n\t\t\tthis._initColorsTexture();\n\t\t\tcopyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data );\n\n\t\t}\n\n\t}\n\n\tsetGeometrySize( maxVertexCount, maxIndexCount ) {\n\n\t\t// Check if we can shrink to the requested vertex attribute size\n\t\tconst validRanges = [ ...this._geometryInfo ].filter( info => info.active );\n\t\tconst requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) );\n\t\tif ( requiredVertexLength > maxVertexCount ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t}\n\n\t\t// Check if we can shrink to the requested index attribute size\n\t\tif ( this.geometry.index ) {\n\n\t\t\tconst requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) );\n\t\t\tif ( requiredIndexLength > maxIndexCount ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\t// dispose of the previous geometry\n\t\tconst oldGeometry = this.geometry;\n\t\toldGeometry.dispose();\n\n\t\t// recreate the geometry needed based on the previous variant\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tif ( this._geometryInitialized ) {\n\n\t\t\tthis._geometryInitialized = false;\n\t\t\tthis.geometry = new BufferGeometry();\n\t\t\tthis._initializeGeometry( oldGeometry );\n\n\t\t}\n\n\t\t// copy data from the previous geometry\n\t\tconst geometry = this.geometry;\n\t\tif ( oldGeometry.index ) {\n\n\t\t\tcopyArrayContents( oldGeometry.index.array, geometry.index.array );\n\n\t\t}\n\n\t\tfor ( const key in oldGeometry.attributes ) {\n\n\t\t\tcopyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array );\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t_mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count );\n\n\t\t\t// get the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._geometryInfo = source._geometryInfo.map( info => ( {\n\t\t\t...info,\n\n\t\t\tboundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null,\n\t\t\tboundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null,\n\t\t} ) );\n\t\tthis._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) );\n\n\t\tthis._maxInstanceCount = source._maxInstanceCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture = source._colorsTexture.clone();\n\t\t\tthis._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\n\t\tthis._indirectTexture.dispose();\n\t\tthis._indirectTexture = null;\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture.dispose();\n\t\t\tthis._colorsTexture = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst indirectArray = indirectTexture.image.data;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_matrix$1\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_matrix$1,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet multiDrawCount = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_matrix$1.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix$1 );\n\t\t\t_forward.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix$1 );\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tconst z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward );\n\t\t\t\t\t\t_renderList.push( geometryInfo.start, geometryInfo.count, z, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ multiDrawCount ] = item.count;\n\t\t\t\tindirectArray[ multiDrawCount ] = item.index;\n\t\t\t\tmultiDrawCount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tmultiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ multiDrawCount ] = geometryInfo.count;\n\t\t\t\t\t\tindirectArray[ multiDrawCount ] = i;\n\t\t\t\t\t\tmultiDrawCount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tindirectTexture.needsUpdate = true;\n\t\tthis._multiDrawCount = multiDrawCount;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'LineBasicMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: a,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tbarycoord: null,\n\t\tobject: object\n\n\t};\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'PointsMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tfaceIndex: null,\n\t\t\tbarycoord: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t * p(0) = x0, p(1) = x1\n\t * and\n\t * p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n * curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tif ( radiusTop > 0 || y !== 0 ) {\n\n\t\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( radiusBottom > 0 || y !== heightSegments - 1 ) {\n\n\t\t\t\t\t\tindices.push( b, c, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.4)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\n ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n * curveSegments: , // number of points on the curves\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n * depth: , // Depth to extrude the shape\n *\n * bevelEnabled: , // turn on bevel\n * bevelThickness: , // how deep into the original shape bevel goes\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\n * bevelOffset: , // how far from shape outline does bevel start\n * bevelSegments: , // number of bevel layers\n *\n * extrudePath: // curve to extrude shape along\n *\n * UVGenerator: // object that provides UV generator functions\n *\n * }\n */\n\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t// but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t// (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t///// Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'ShadowMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tstatic get type() {\n\n\t\treturn 'RawShaderMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshStandardMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tstatic get type() {\n\n\t\treturn 'MeshPhysicalMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshPhongMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshToonMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshNormalMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshLambertMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tstatic get type() {\n\n\t\treturn 'MeshMatcapMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tstatic get type() {\n\n\t\treturn 'LineDashedMaterial';\n\n\t}\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {\n\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\n// DefaultInterpolation is inherited;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {\n\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name = '', duration = - 1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}, ( e ) => {\n\n\t\t\t\t\t\t\t\t\tcontroller.error( e );\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\t\tif ( this.target !== undefined ) data.object.target = this.target.uuid;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.intensity = 1;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay;\n\n\t\tthis.map = null;\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay;\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n * https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = this.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tcreateMaterialFromType( type ) {\n\n\t\treturn MaterialLoader.createMaterialFromType( type );\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) { // @deprecated, r165\n\n\t\tconsole.warn( 'THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.' );\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxInstanceCount = data.maxInstanceCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\t\t\t\tif ( data.colorsTexture !== undefined ) object._colorsTexture = getTexture( data.colorsTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tbindLightTargets( object ) {\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isDirectionalLight || child.isSpotLight ) {\n\n\t\t\t\tconst uuid = child.target;\n\n\t\t\t\tconst target = object.getObjectByProperty( 'uuid', uuid );\n\n\t\t\t\tif ( target !== undefined ) {\n\n\t\t\t\t\tchild.target = target;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.target = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nclass AudioContext {\n\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn performance.now();\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop( delay = 0 ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop( this.context.currentTime + delay );\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n * - Add objects you would otherwise pass as 'root' to the\n * constructor or the .clipAction method of AnimationMixer.\n *\n * - Instead pass this object as 'root'.\n *\n * - You can also add and remove objects later when the mixer\n * is running.\n *\n * Note:\n *\n * Objects of this class appear as one object to the mixer,\n * so cache control of the individual objects must be done\n * on the group.\n *\n * Limitation:\n *\n * - The animated properties must be compatible among the\n * all objects in the group.\n *\n * - A single property can either be controlled through a\n * target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions >| inactive actions ]\n\t\t// s a\n\t\t// <-swap->\n\t\t// a s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [ active actions | inactive actions ]\n\t\t// [ active actions |< inactive actions ]\n\t\t// a s\n\t\t// <-swap->\n\t\t// s a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, - 1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tlet propagate = true;\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tconst result = object.raycast( raycaster, intersects );\n\n\t\tif ( result === false ) propagate = false;\n\n\t}\n\n\tif ( propagate === true && recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * phi (the polar angle) is measured from the positive y-axis. The positive y-axis is up.\n * theta (the azimuthal angle) is measured from the positive z-axis.\n */\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix2 {\n\n\tconstructor( n11, n12, n21, n22 ) {\n\n\t\tMatrix2.prototype.isMatrix2 = true;\n\n\t\tthis.elements = [\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n21, n22 );\n\n\t\t}\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( n11, n12, n21, n22 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 2 ] = n12;\n\t\tte[ 1 ] = n21; te[ 3 ] = n22;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t// with the horizontal line through inPt, left of inPt\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\nclass Controls extends EventDispatcher {\n\n\tconstructor( object, domElement = null ) {\n\n\t\tsuper();\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\n\t\tthis.enabled = true;\n\n\t\tthis.state = - 1;\n\n\t\tthis.keys = {};\n\t\tthis.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };\n\t\tthis.touches = { ONE: null, TWO: null };\n\n\t}\n\n\tconnect() {}\n\n\tdisconnect() {}\n\n\tdispose() {}\n\n\tupdate( /* delta */ ) {}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget { // @deprecated, r162\n\n\tconstructor( width = 1, height = 1, count = 1, options = {} ) {\n\n\t\tconsole.warn( 'THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the \"count\" parameter to enable MRT.' );\n\n\t\tsuper( width, height, { ...options, count } );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures;\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, createCanvasElement };\n","import { useEffect, useRef } from \"react\";\nimport * as THREE from \"three\";\n\nconst AnimatedBackground = () => {\n const mountRef = useRef(null);\n\n useEffect(() => {\n const mount = mountRef.current;\n if (!mount) return;\n\n const scene = new THREE.Scene();\n scene.background = null;\n\n const camera = new THREE.PerspectiveCamera(\n 60,\n window.innerWidth / window.innerHeight,\n 0.1,\n 1000\n );\n camera.position.z = 28;\n\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));\n mount.appendChild(renderer.domElement);\n\n const ambientLight = new THREE.AmbientLight(0x1c1f23, 0.6);\n scene.add(ambientLight);\n\n const orangeLight = new THREE.PointLight(0xf97316, 1.3, 120);\n orangeLight.position.set(14, 10, 30);\n scene.add(orangeLight);\n\n const greenLight = new THREE.PointLight(0x3f6212, 1.1, 110);\n greenLight.position.set(-16, -12, 25);\n scene.add(greenLight);\n\n const geometry = new THREE.IcosahedronGeometry(10, 1);\n const material = new THREE.MeshStandardMaterial({\n color: 0x101316,\n roughness: 0.42,\n metalness: 0.48,\n });\n\n const mesh = new THREE.Mesh(geometry, material);\n scene.add(mesh);\n\n const edges = new THREE.EdgesGeometry(geometry);\n const wireframe = new THREE.LineSegments(\n edges,\n new THREE.LineBasicMaterial({ color: 0x3f6212, linewidth: 1 })\n );\n mesh.add(wireframe);\n\n const orbitGroup = new THREE.Group();\n scene.add(orbitGroup);\n\n // Sprinkle subtle particles like Lagos night lights\n const particlesGeometry = new THREE.BufferGeometry();\n const particleCount = 180;\n const positions = new Float32Array(particleCount * 3);\n\n for (let i = 0; i < particleCount; i += 1) {\n positions[i * 3] = (Math.random() - 0.5) * 60;\n positions[i * 3 + 1] = (Math.random() - 0.5) * 60;\n positions[i * 3 + 2] = (Math.random() - 0.5) * 60;\n }\n\n particlesGeometry.setAttribute(\n \"position\",\n new THREE.BufferAttribute(positions, 3)\n );\n\n const particlesMaterial = new THREE.PointsMaterial({\n color: 0xf97316,\n size: 0.25,\n transparent: true,\n opacity: 0.6,\n });\n\n const particles = new THREE.Points(particlesGeometry, particlesMaterial);\n orbitGroup.add(particles);\n\n let animationFrame = 0;\n\n const onResize = () => {\n camera.aspect = window.innerWidth / window.innerHeight;\n camera.updateProjectionMatrix();\n renderer.setSize(window.innerWidth, window.innerHeight);\n };\n window.addEventListener(\"resize\", onResize);\n\n const animate = () => {\n mesh.rotation.x += 0.0025;\n mesh.rotation.y += 0.0018;\n wireframe.rotation.z += 0.0015;\n orbitGroup.rotation.y += 0.0009;\n renderer.render(scene, camera);\n animationFrame = requestAnimationFrame(animate);\n };\n\n animate();\n\n return () => {\n cancelAnimationFrame(animationFrame);\n window.removeEventListener(\"resize\", onResize);\n particlesGeometry.dispose();\n particlesMaterial.dispose();\n edges.dispose();\n (wireframe.material as THREE.Material).dispose();\n geometry.dispose();\n material.dispose();\n renderer.dispose();\n if (renderer.domElement.parentNode === mount) {\n mount.removeChild(renderer.domElement);\n }\n };\n }, []);\n\n return (\n
\n );\n};\n\nexport default AnimatedBackground;\n","import { StacksMainnet, StacksNetwork, StacksTestnet } from \"@stacks/network\";\n\nconst contractAddress = (import.meta.env.VITE_CONTRACT_ADDRESS ?? \"\").trim();\nconst contractName = (import.meta.env.VITE_CONTRACT_NAME ?? \"stream\").trim();\nconst networkName = (import.meta.env.VITE_NETWORK ?? \"testnet\").toLowerCase();\nconst apiUrl = (\n import.meta.env.VITE_STACKS_API_URL ?? \"https://api.testnet.hiro.so\"\n).trim();\n\nconst network: StacksNetwork =\n networkName === \"mainnet\"\n ? new StacksMainnet({ url: apiUrl })\n : new StacksTestnet({ url: apiUrl });\n\nconst networkKey = networkName === \"mainnet\" ? \"mainnet\" : \"testnet\";\n\nexport const STACKS_NETWORK: StacksNetwork = network;\nexport const CONTRACT_ADDRESS = contractAddress;\nexport const CONTRACT_NAME = contractName;\nexport const NETWORK_KEY = networkKey;\nexport const NETWORK_NAME = networkName;\nexport const STACKS_API_URL = apiUrl;\n\nexport const MICRO_STX = 1_000_000n;\n\nexport const formatStx = (value: bigint) => {\n const whole = value / MICRO_STX;\n const fraction = value % MICRO_STX;\n if (fraction === 0n) return whole.toString();\n const fractionStr = fraction.toString().padStart(6, \"0\").replace(/0+$/, \"\");\n return `${whole.toString()}.${fractionStr}`;\n};\n\nexport const toMicroStx = (raw: string) => {\n const cleaned = raw.trim();\n if (cleaned.length === 0) return 0n;\n const parts = cleaned.split(\".\");\n const whole = BigInt(parts[0] || \"0\");\n const fraction = (parts[1] || \"\").padEnd(6, \"0\").slice(0, 6);\n return whole * MICRO_STX + BigInt(fraction || \"0\");\n};\n","import { useEffect, useState } from \"react\";\nimport {\n AnchorMode,\n bufferCV,\n estimateTransaction,\n makeContractCall,\n principalCV,\n uintCV,\n} from \"@stacks/transactions\";\nimport {\n CONTRACT_ADDRESS,\n CONTRACT_NAME,\n formatStx,\n STACKS_NETWORK,\n toMicroStx,\n} from \"../lib/config\";\nimport { CreatePlanPayload } from \"./CreatePlanForm\";\n\nconst toFixedBuffer = (input: string, length: number) => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input.toLowerCase());\n if (data.length >= length) {\n return data.slice(0, length);\n }\n const padded = new Uint8Array(length);\n padded.set(data);\n return padded;\n};\n\ninterface FeeEstimatorProps {\n payload: CreatePlanPayload;\n senderAddress?: string;\n}\n\nconst FeeEstimator = ({ payload, senderAddress }: FeeEstimatorProps) => {\n const [fee, setFee] = useState(null);\n const [isEstimating, setIsEstimating] = useState(false);\n\n useEffect(() => {\n if (!senderAddress || !payload.customer) {\n setFee(null);\n return;\n }\n\n const estimate = async () => {\n try {\n setIsEstimating(true);\n\n const txOptions = {\n contractAddress: CONTRACT_ADDRESS,\n contractName: CONTRACT_NAME,\n functionName: \"create-airtime-plan\",\n functionArgs: [\n principalCV(payload.customer),\n bufferCV(toFixedBuffer(payload.phone, 16)),\n bufferCV(toFixedBuffer(payload.network, 16)),\n uintCV(toMicroStx(payload.payout)),\n uintCV(BigInt(payload.interval)),\n uintCV(BigInt(payload.maxClaims)),\n ],\n senderKey: \"0\".repeat(64), // Dummy key for estimation\n network: STACKS_NETWORK,\n anchorMode: AnchorMode.Any,\n };\n\n const transaction = await makeContractCall(txOptions);\n\n // For fee estimation, we'll use a default estimate\n // The actual Stacks API estimateTransaction has different signature\n // For now, use a reasonable default of 0.001 STX (1000 microSTX)\n const defaultFee = 1000n; // 0.001 STX in microSTX\n setFee(defaultFee);\n } catch (error) {\n console.error(\"Fee estimation failed:\", error);\n setFee(null);\n } finally {\n setIsEstimating(false);\n }\n };\n\n estimate();\n }, [payload, senderAddress]);\n\n if (!senderAddress) return null;\n\n const planCost =\n toMicroStx(payload.payout) * BigInt(payload.maxClaims || \"0\");\n const totalCost = fee ? planCost + fee : planCost;\n\n return (\n
\n

Cost Breakdown

\n
\n Plan funding\n {formatStx(planCost)} STX\n
\n
\n Network fee\n {isEstimating ? (\n Estimating...\n ) : fee ? (\n {formatStx(fee)} STX\n ) : (\n ~0.001 STX\n )}\n
\n
\n Total cost\n {formatStx(totalCost)} STX\n
\n

\n Make sure your wallet has enough STX to cover both the plan and gas.\n

\n
\n );\n};\n\nexport default FeeEstimator;\n","import { ChangeEvent, FormEvent, useState } from \"react\";\nimport { toMicroStx } from \"../lib/config\";\nimport FeeEstimator from \"./FeeEstimator\";\n\nexport interface CreatePlanPayload {\n customer: string;\n phone: string;\n network: string;\n payout: string;\n interval: string;\n maxClaims: string;\n}\n\ninterface CreatePlanFormProps {\n onSubmit: (payload: CreatePlanPayload) => Promise;\n disabled?: boolean;\n currentAddress?: string;\n}\n\nconst initialValues: CreatePlanPayload = {\n customer: \"\",\n phone: \"\",\n network: \"\",\n payout: \"1\",\n interval: \"6\",\n maxClaims: \"4\",\n};\n\nconst CreatePlanForm = ({\n onSubmit,\n disabled = false,\n currentAddress,\n}: CreatePlanFormProps) => {\n const [values, setValues] = useState(initialValues);\n const [error, setError] = useState(null);\n const [isSubmitting, setSubmitting] = useState(false);\n\n const handleSubmit = async (event: FormEvent) => {\n event.preventDefault();\n setError(null);\n\n try {\n if (!values.customer.startsWith(\"ST\")) {\n setError(\"Drop a valid Stacks address for your customer.\");\n return;\n }\n if (toMicroStx(values.payout) === 0n) {\n setError(\"Payout must be more than zero.\");\n return;\n }\n if (Number(values.interval) <= 0) {\n setError(\"Interval needs to be at least one block.\");\n return;\n }\n if (Number(values.maxClaims) <= 0) {\n setError(\"Max claims should be at least one.\");\n return;\n }\n\n setSubmitting(true);\n await onSubmit(values);\n setValues(initialValues);\n } catch (err) {\n console.error(\"create-plan\", err);\n setError((err as Error).message ?? \"Could not submit plan\");\n } finally {\n setSubmitting(false);\n }\n };\n\n const onChange =\n (key: keyof CreatePlanPayload) =>\n (event: ChangeEvent) => {\n setValues((prev) => ({ ...prev, [key]: event.target.value }));\n };\n\n return (\n
\n

Set up airtime drip

\n

\n Fund a plan once and your guy will receive steady STX they can spend on\n airtime or data.\n

\n
\n
\n \n \n Use the STX address they shared with you.\n
\n
\n \n \n \n Supports only Nigerian SIMs for now!\n \n
\n
\n \n \n Pick the provider they recharge on.\n
\n
\n \n \n
\n
\n \n \n ≈10 mins per block on Stacks.\n
\n
\n \n \n
\n
\n {error && (\n

\n {error}\n

\n )}\n {currentAddress && values.customer && values.payout && values.maxClaims && (\n \n )}\n
\n \n {isSubmitting ? \"Setting up...\" : \"Create plan\"}\n \n
\n \n );\n};\n\nexport default CreatePlanForm;\n","interface BlockCountdownProps {\n currentBlock: bigint | null;\n targetBlock: bigint;\n label?: string;\n}\n\nconst BlockCountdown = ({\n currentBlock,\n targetBlock,\n label = \"Next claim in\",\n}: BlockCountdownProps) => {\n if (!currentBlock) {\n return Loading block height...;\n }\n\n const blocksRemaining = targetBlock - currentBlock;\n\n if (blocksRemaining <= 0n) {\n return ✓ Ready to claim now!;\n }\n\n // Stacks blocks are approximately 10 minutes each\n const minutesRemaining = Number(blocksRemaining) * 10;\n const hoursRemaining = Math.floor(minutesRemaining / 60);\n const minsRemaining = minutesRemaining % 60;\n\n let timeStr = \"\";\n if (hoursRemaining > 0) {\n timeStr = `~${hoursRemaining}h ${minsRemaining}m`;\n } else {\n timeStr = `~${minsRemaining}m`;\n }\n\n return (\n \n {label}: {blocksRemaining.toString()} blocks ({timeStr})\n \n );\n};\n\nexport default BlockCountdown;\n","import { AirtimePlan } from \"../lib/clarity\";\nimport { formatStx } from \"../lib/config\";\n\ninterface PlanHistoryProps {\n plan: AirtimePlan;\n}\n\ninterface HistoryEvent {\n date: string;\n description: string;\n type: \"create\" | \"claim\" | \"topup\";\n}\n\nconst PlanHistory = ({ plan }: PlanHistoryProps) => {\n const events: HistoryEvent[] = [];\n\n // Plan creation\n events.push({\n date: \"Plan start\",\n description: `Created with ${formatStx(\n plan.totalFunded\n )} STX for ${plan.maxClaims.toString()} drops`,\n type: \"create\",\n });\n\n // Calculate claims made (we don't have exact timestamps, so we show counts)\n if (plan.totalClaims > 0n) {\n events.push({\n date: \"Claims\",\n description: `${plan.totalClaims.toString()} airtime drop${\n plan.totalClaims === 1n ? \"\" : \"s\"\n } claimed (${formatStx(plan.totalClaims * plan.payoutAmount)} STX)`,\n type: \"claim\",\n });\n }\n\n // Check if there was a top-up (total funded > initial calculation)\n const initialFunding = plan.payoutAmount * plan.maxClaims;\n if (plan.totalFunded > initialFunding) {\n const topupAmount = plan.totalFunded - initialFunding;\n events.push({\n date: \"Top-up\",\n description: `Merchant added ${formatStx(topupAmount)} STX`,\n type: \"topup\",\n });\n }\n\n // Check if plan is completed\n if (plan.totalClaims >= plan.maxClaims || plan.remainingBalance === 0n) {\n events.push({\n date: \"Status\",\n description:\n plan.remainingBalance === 0n ? \"Plan fully claimed\" : \"Plan completed\",\n type: \"claim\",\n });\n }\n\n return (\n
\n

Activity Log

\n
\n {events.map((event, index) => (\n
\n {event.date}\n {event.description}\n
\n ))}\n
\n
\n );\n};\n\nexport default PlanHistory;\n","import { useState } from \"react\";\n\ninterface QRCodeShareProps {\n planId: number;\n customerAddress: string;\n}\n\nconst QRCodeShare = ({ planId, customerAddress }: QRCodeShareProps) => {\n const [showQR, setShowQR] = useState(false);\n\n const shareUrl = `${window.location.origin}/?plan=${planId}&customer=${customerAddress}`;\n const qrApiUrl = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(\n shareUrl\n )}`;\n\n const handleCopyLink = () => {\n navigator.clipboard.writeText(shareUrl);\n };\n\n return (\n
\n setShowQR(!showQR)}\n type=\"button\"\n >\n {showQR ? \"Hide\" : \"Share\"} plan link\n \n\n {showQR && (\n
\n

\n Your customer can scan this QR or click the link to view and claim\n their airtime directly.\n

\n \"Plan\n
\n \n \n
\n
\n )}\n
\n );\n};\n\nexport default QRCodeShare;\n","import { useState } from \"react\";\nimport { AirtimePlan } from \"../lib/clarity\";\nimport { formatStx } from \"../lib/config\";\nimport BlockCountdown from \"./BlockCountdown\";\nimport PlanHistory from \"./PlanHistory\";\nimport QRCodeShare from \"./QRCodeShare\";\n\ninterface PlanCardProps {\n plan: AirtimePlan;\n currentAddress?: string;\n currentBlock?: bigint | null;\n onClaim: (planId: number) => Promise;\n onTopup: (planId: number, extraClaims: number) => Promise;\n onCancel: (planId: number) => Promise;\n busy?: boolean;\n}\n\nconst PlanCard = ({\n plan,\n currentAddress,\n currentBlock,\n onClaim,\n onTopup,\n onCancel,\n busy = false,\n}: PlanCardProps) => {\n const [extraClaims, setExtraClaims] = useState(\"1\");\n const [isRunning, setRunning] = useState(false);\n const [showHistory, setShowHistory] = useState(false);\n\n const isMerchant =\n currentAddress?.toLowerCase() === plan.merchant.toLowerCase();\n const isCustomer =\n currentAddress?.toLowerCase() === plan.customer.toLowerCase();\n\n const claimsLeft = plan.maxClaims - plan.totalClaims;\n const hasBalance = plan.remainingBalance > 0n;\n const canClaim = isCustomer && hasBalance && claimsLeft > 0n;\n\n const handleClaim = async () => {\n try {\n setRunning(true);\n await onClaim(plan.id);\n } finally {\n setRunning(false);\n }\n };\n\n const handleTopup = async () => {\n const value = Number(extraClaims);\n if (!Number.isFinite(value) || value <= 0) return;\n try {\n setRunning(true);\n await onTopup(plan.id, value);\n } finally {\n setRunning(false);\n }\n };\n\n const handleCancel = async () => {\n try {\n setRunning(true);\n await onCancel(plan.id);\n } finally {\n setRunning(false);\n }\n };\n\n return (\n
\n
\n ID\n #{plan.id}\n Merchant\n {plan.merchant}\n Customer\n {plan.customer}\n
\n
\n Telco\n {plan.network || \"-\"}\n Phone\n {plan.phone || \"-\"}\n Payout\n {formatStx(plan.payoutAmount)} STX\n
\n
\n Interval\n {plan.interval.toString()} blocks\n Claims served\n \n {plan.totalClaims.toString()} / {plan.maxClaims.toString()}\n \n Balance left\n {formatStx(plan.remainingBalance)} STX\n
\n
\n {isCustomer && (\n <>\n {currentBlock && (\n \n )}\n \n {isRunning ? \"Processing...\" : \"Claim next drop\"}\n \n \n )}\n\n {isMerchant && (\n <>\n
\n setExtraClaims(event.target.value)}\n style={{\n width: \"100%\",\n background: \"rgba(8, 10, 12, 0.8)\",\n border: \"1px solid rgba(249, 115, 22, 0.25)\",\n borderRadius: \"10px\",\n padding: \"10px 14px\",\n color: \"#f4f4f5\",\n fontFamily: \"Fira Code, monospace\",\n }}\n />\n \n Top up drops\n \n
\n \n Cash out leftover\n \n \n Once cancelled, plan locks to the amount already collected. No\n long talk.\n \n \n \n )}\n\n {!isMerchant && !isCustomer && (\n \n Connect with the right wallet to manage this plan.\n \n )}\n\n setShowHistory(!showHistory)}\n type=\"button\"\n >\n {showHistory ? \"Hide\" : \"View\"} activity log\n \n
\n\n {showHistory && }\n
\n );\n};\n\nexport default PlanCard;\n","import { AirtimePlan } from \"../lib/clarity\";\nimport { formatStx } from \"../lib/config\";\nimport PlanCard from \"./PlanCard\";\nimport BlockCountdown from \"./BlockCountdown\";\n\ninterface CustomerPortalProps {\n plans: AirtimePlan[];\n currentAddress?: string;\n currentBlock: bigint | null;\n onClaimAll: () => Promise;\n onClaim: (planId: number) => Promise;\n onTopup: (planId: number, extraClaims: number) => Promise;\n onCancel: (planId: number) => Promise;\n busy?: number | null;\n}\n\nconst CustomerPortal = ({\n plans,\n currentAddress,\n currentBlock,\n onClaimAll,\n onClaim,\n onTopup,\n onCancel,\n busy,\n}: CustomerPortalProps) => {\n const myPlans = plans.filter(\n (p) => p.customer.toLowerCase() === currentAddress?.toLowerCase()\n );\n\n const totalClaimable = myPlans.reduce((sum, p) => {\n const claimsLeft = p.maxClaims - p.totalClaims;\n if (\n p.remainingBalance > 0n &&\n claimsLeft > 0n &&\n currentBlock &&\n p.nextClaimBlock <= currentBlock\n ) {\n return sum + p.payoutAmount;\n }\n return sum;\n }, 0n);\n\n const totalLocked = myPlans.reduce((sum, p) => sum + p.remainingBalance, 0n);\n\n const claimablePlans = myPlans.filter((p) => {\n const claimsLeft = p.maxClaims - p.totalClaims;\n return (\n p.remainingBalance > 0n &&\n claimsLeft > 0n &&\n currentBlock &&\n p.nextClaimBlock <= currentBlock\n );\n });\n\n if (myPlans.length === 0) {\n return (\n
\n

Customer View

\n

\n No plans found where you are the customer. Ask your merchant to\n create one for you.\n

\n
\n );\n }\n\n return (\n
\n
\n

Your Airtime Plans

\n

\n {myPlans.length} plan{myPlans.length === 1 ? \"\" : \"s\"} active\n

\n
\n\n
\n
\n Total balance\n {formatStx(totalLocked)} STX\n
\n
\n Ready to claim\n {formatStx(totalClaimable)} STX\n
\n
\n Total plans\n {myPlans.length}\n
\n
\n\n {claimablePlans.length > 1 && (\n
\n \n

\n Save time by claiming from multiple plans at once.\n

\n
\n )}\n\n
\n {myPlans.map((plan) => (\n
\n {currentBlock && plan.remainingBalance > 0n && plan.nextClaimBlock > 0n && (\n \n )}\n \n
\n ))}\n
\n
\n );\n};\n\nexport default CustomerPortal;\n","import { AirtimePlan } from \"../lib/clarity\";\nimport { formatStx } from \"../lib/config\";\nimport PlanCard from \"./PlanCard\";\nimport BlockCountdown from \"./BlockCountdown\";\n\ninterface MerchantPortalProps {\n plans: AirtimePlan[];\n currentAddress?: string;\n currentBlock: bigint | null;\n onClaim: (planId: number) => Promise;\n onTopup: (planId: number, extraClaims: number) => Promise;\n onCancel: (planId: number) => Promise;\n busy?: number | null;\n}\n\nconst MerchantPortal = ({\n plans,\n currentAddress,\n currentBlock,\n onClaim,\n onTopup,\n onCancel,\n busy,\n}: MerchantPortalProps) => {\n const myPlans = plans.filter(\n (p) => p.merchant.toLowerCase() === currentAddress?.toLowerCase()\n );\n\n const totalLocked = myPlans.reduce((sum, p) => sum + p.remainingBalance, 0n);\n const totalFunded = myPlans.reduce((sum, p) => sum + p.totalFunded, 0n);\n const totalClaimed = myPlans.reduce(\n (sum, p) => sum + p.totalClaims * p.payoutAmount,\n 0n\n );\n\n const activePlans = myPlans.filter((p) => p.remainingBalance > 0n);\n const completedPlans = myPlans.filter((p) => p.remainingBalance === 0n);\n\n if (myPlans.length === 0) {\n return (\n
\n

Merchant Dashboard

\n

\n No plans found where you are the merchant. Create your first plan\n below to start dripping airtime.\n

\n
\n );\n }\n\n return (\n
\n
\n

Merchant Dashboard

\n

\n Managing {myPlans.length} airtime plan\n {myPlans.length === 1 ? \"\" : \"s\"}\n

\n
\n\n
\n
\n Total funded\n {formatStx(totalFunded)} STX\n Lifetime investment\n
\n
\n Currently locked\n {formatStx(totalLocked)} STX\n In active plans\n
\n
\n Already claimed\n {formatStx(totalClaimed)} STX\n By customers\n
\n
\n\n
\n
\n Active plans\n {activePlans.length}\n
\n
\n Completed plans\n {completedPlans.length}\n
\n
\n Total customers\n \n {new Set(myPlans.map((p) => p.customer)).size}\n \n
\n
\n\n {activePlans.length > 0 && (\n <>\n

Active Plans

\n
\n {activePlans.map((plan) => (\n
\n {currentBlock && plan.nextClaimBlock > 0n ? (\n \n ) : null}\n \n
\n ))}\n
\n \n )}\n\n {completedPlans.length > 0 && (\n <>\n

Completed Plans

\n
\n {completedPlans.map((plan) => (\n \n ))}\n
\n \n )}\n
\n );\n};\n\nexport default MerchantPortal;\n","import { useEffect, useState } from \"react\";\n\ninterface ReadOnlyViewProps {\n lookupAddress: string;\n onLookup: (address: string) => void;\n}\n\nconst ReadOnlyView = ({ lookupAddress, onLookup }: ReadOnlyViewProps) => {\n const [inputAddress, setInputAddress] = useState(lookupAddress);\n\n useEffect(() => {\n setInputAddress(lookupAddress);\n }, [lookupAddress]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onLookup(inputAddress);\n };\n\n return (\n
\n
\n

View Plans (No Wallet Required)

\n

\n Enter a Stacks address to view their airtime plans. Perfect for\n checking your balance before connecting a wallet.\n

\n
\n setInputAddress(e.target.value)}\n className=\"lookup-input\"\n />\n \n \n
\n
\n );\n};\n\nexport default ReadOnlyView;\n","import { NETWORK_NAME } from \"../lib/config\";\n\ninterface FaucetHelperProps {\n address?: string;\n}\n\nconst FaucetHelper = ({ address }: FaucetHelperProps) => {\n if (NETWORK_NAME === \"mainnet\") {\n return null; // Don't show faucet on mainnet\n }\n\n const faucetUrl = address\n ? `https://explorer.hiro.so/sandbox/faucet?address=${address}`\n : \"https://explorer.hiro.so/sandbox/faucet\";\n\n return (\n
\n
\n 🪙\n
\n

\n Need testnet STX?\n

\n

\n Get free tokens from the Hiro faucet to test this dApp.\n

\n
\n
\n \n Get testnet STX\n \n
\n );\n};\n\nexport default FaucetHelper;\n","import ReadOnlyView from \"./ReadOnlyView\";\nimport FaucetHelper from \"./FaucetHelper\";\n\ninterface LandingPageProps {\n onGetStarted: () => void;\n onLookup?: (address: string) => void;\n lookupAddress?: string;\n}\n\nconst LandingPage = ({\n onGetStarted,\n onLookup,\n lookupAddress = \"\",\n}: LandingPageProps) => {\n return (\n
\n {/* Hero Section */}\n
\n `\n
\n
\n \n Built on Stacks Blockchain\n
\n

\n Automate Airtime Top-ups with{\" \"}\n STX Streaming\n

\n

\n No more POS queues, no more last-minute runs to buy airtime. Set it\n once, let your people collect small-small as they need am. Like ajo\n for airtime — steady, automated, and transparent.\n

\n
\n \n \n Learn How It Works\n \n
\n
\n
\n 100%\n On-chain\n
\n
\n Zero\n Middleman\n
\n
\n ~10min\n Per Block\n
\n
\n
\n
\n\n {/* Testnet Faucet Helper */}\n
\n \n
\n\n {/* Read-Only Lookup */}\n
\n
\n

Check Plans Without Connecting

\n

\n No wallet? No wahala. Enter any Stacks address to view their airtime\n plans. Great for checking your balance before connecting.\n

\n {onLookup && (\n \n )}\n
\n
\n\n {/* How It Works */}\n
\n

How It Works

\n

\n Three simple steps to start streaming airtime to your people\n

\n
\n
\n
1
\n

Create a Plan

\n

\n Connect your Stacks wallet and create an airtime drip plan.\n Specify your customer's wallet address, phone number, network\n (MTN, Glo, Airtel, 9mobile), and how much STX they should get per\n interval.\n

\n
\n Example: Send 2 STX every 144 blocks (~24 hours)\n for 30 days\n
\n
\n\n
\n
2
\n

Funds Lock On-Chain

\n

\n Your STX gets locked in the smart contract — no one can touch it,\n not even you (until the plan ends). The contract releases funds\n automatically based on block height. Fully trustless and\n transparent.\n

\n
\n Example: Lock 60 STX for 30 daily payments of 2\n STX each\n
\n
\n\n
\n
3
\n

Customer Claims Anytime

\n

\n Your customer connects their wallet and claims their airtime\n whenever the next interval is ready. No permission needed from\n you. They see a countdown timer and claim with one click. Simple\n and clean.\n

\n
\n Example: After 24 hours, claim 2 STX. Repeat\n daily.\n
\n
\n
\n
\n\n {/* Use Cases */}\n
\n

Perfect For

\n
\n
\n
📱
\n

Airtime Merchants

\n

\n Automate recurring top-ups for loyal customers. Set it once,\n forget it. They collect when they need data or airtime, you don't\n have to remember.\n

\n
\n\n
\n
💼
\n

Small Business Owners

\n

\n Keep your staff connected without manually sending airtime every\n week. Lock the budget on-chain, let them draw small amounts as\n needed.\n

\n
\n\n
\n
👨‍👩‍👧‍👦
\n

Parents & Guardians

\n

\n Send pocket money to your children or dependents gradually. No\n bulk payments they'll finish in one week. Controlled, steady\n allowance system.\n

\n
\n\n
\n
🚗
\n

Transport & Logistics

\n

\n Keep your drivers topped up with airtime/data for route updates.\n No more \"I no get airtime\" excuses. Automated delivery every\n interval.\n

\n
\n\n
\n
🏘️
\n

Community Groups

\n

\n Like ajo/esusu but automated on blockchain. Pool funds, create\n plans for members, everyone collects their share on schedule.\n Transparent and fair.\n

\n
\n\n
\n
💰
\n

Subscription Services

\n

\n Vendors can offer \"pay-as-you-go\" services with streaming\n payments. Customers pay gradually instead of big upfront costs.\n Win-win.\n

\n
\n
\n
\n\n {/* Features */}\n
\n

Why Choose STX Airtime Drip?

\n
\n
\n
🔒
\n

Trustless & Secure

\n

\n Smart contract enforces rules. No middleman, no \"he said, she\n said.\" Code is law. Your funds are safe on-chain.\n

\n
\n\n
\n
📊
\n

Full Transparency

\n

\n See everything on the blockchain. Check balances without\n connecting wallet. Activity history shows every transaction.\n

\n
\n\n
\n
⏱️
\n

Real-time Countdown

\n

\n Live timer shows exactly when next claim is ready. No guessing, no\n waiting. See blocks remaining and estimated time.\n

\n
\n\n
\n
🔄
\n

Flexible Management

\n

\n Top up anytime to extend plans. Cancel and withdraw leftover\n funds. Update as your needs change. Full control.\n

\n
\n\n
\n
📱
\n

Mobile-Friendly

\n

\n Works on phone, tablet, laptop. QR codes for easy sharing.\n Responsive design that adapts to any screen size.\n

\n
\n\n
\n
💸
\n

Low Fees

\n

\n Pay only Stacks network fees (usually less than 0.001 STX). No\n platform fees, no hidden charges. What you see is what you pay.\n

\n
\n
\n
\n\n {/* How Blockchain Makes It Better */}\n
\n
\n
\n

Why Blockchain?

\n

\n Traditional airtime drip systems require trust in a central\n platform. They can freeze accounts, change rules, or disappear\n with your money. Not here.\n

\n
    \n
  • \n Immutable Rules: Once you create a plan, the\n smart contract enforces it. No one can change the terms.\n
  • \n
  • \n No Custody: You lock funds directly on-chain.\n No platform holds your money. Contract releases it\n automatically.\n
  • \n
  • \n Verifiable: Every transaction is public. Check\n the blockchain yourself. No need to trust us — verify it.\n
  • \n
  • \n Censorship-Resistant: No one can block you from\n creating plans or claiming your funds. Pure peer-to-peer.\n
  • \n
\n
\n
\n
\n
You → Lock STX
\n
\n
Smart Contract
\n
\n
Customer Claims
\n
\n
\n
\n
\n\n {/* FAQ */}\n
\n

Common Questions

\n
\n
\n

Do I need STX to use this?

\n

\n Yes. You need STX to create plans (to fund them) and a small\n amount for network fees. If you're on testnet, you can get free\n STX from the faucet.\n

\n
\n\n
\n

What wallets are supported?

\n

\n Currently Hiro Wallet and Xverse Wallet. Any wallet that supports\n Stacks Connect will work. Install the browser extension to get\n started.\n

\n
\n\n
\n

How long until funds are available?

\n

\n It depends on the interval you set. Stacks blocks are ~10 minutes\n each. If you set 144 blocks (1 day), customer can claim every 24\n hours.\n

\n
\n\n
\n

Can I cancel a plan?

\n

\n Yes, merchants can cancel anytime and withdraw the remaining\n balance. Customers keep what they've already claimed. Clean and\n fair.\n

\n
\n\n
\n

Is this for mainnet or testnet?

\n

\n You can deploy on either. For testing, use testnet (free STX). For\n real usage, deploy on mainnet. Configure via environment\n variables.\n

\n
\n\n
\n

What if the customer loses access to their wallet?

\n

\n Only the customer can claim with their wallet. If they lose\n access, funds stay locked until you cancel the plan. Recovery\n depends on their wallet backup.\n

\n
\n
\n
\n\n {/* CTA */}\n
\n

Ready to Start?

\n

\n Connect your Stacks wallet and create your first airtime drip plan in\n less than 2 minutes.\n

\n \n

\n No account needed. Just your wallet. Fully decentralized.\n

\n
\n
\n );\n};\n\nexport default LandingPage;\n","import { useEffect } from \"react\";\n\nexport type ToastType = \"success\" | \"error\" | \"info\" | \"pending\";\n\nexport interface ToastMessage {\n id: string;\n message: string;\n type: ToastType;\n duration?: number;\n}\n\ninterface ToastProps {\n toast: ToastMessage;\n onDismiss: (id: string) => void;\n}\n\nconst Toast = ({ toast, onDismiss }: ToastProps) => {\n useEffect(() => {\n if (toast.type !== \"pending\" && toast.duration !== 0) {\n const timeout = setTimeout(() => {\n onDismiss(toast.id);\n }, toast.duration || 5000);\n\n return () => clearTimeout(timeout);\n }\n }, [toast, onDismiss]);\n\n const getIcon = () => {\n switch (toast.type) {\n case \"success\":\n return \"✓\";\n case \"error\":\n return \"✗\";\n case \"pending\":\n return \"⏳\";\n default:\n return \"ℹ\";\n }\n };\n\n const getClassName = () => {\n switch (toast.type) {\n case \"success\":\n return \"toast toast-success\";\n case \"error\":\n return \"toast toast-error\";\n case \"pending\":\n return \"toast toast-pending\";\n default:\n return \"toast toast-info\";\n }\n };\n\n return (\n
\n {getIcon()}\n {toast.message}\n {toast.type !== \"pending\" && (\n onDismiss(toast.id)}\n aria-label=\"Dismiss\"\n >\n ×\n \n )}\n
\n );\n};\n\ninterface ToastContainerProps {\n toasts: ToastMessage[];\n onDismiss: (id: string) => void;\n}\n\nexport const ToastContainer = ({ toasts, onDismiss }: ToastContainerProps) => {\n return (\n
\n {toasts.map((toast) => (\n \n ))}\n
\n );\n};\n\nexport default Toast;\n","import { useCallback, useState } from \"react\";\nimport { ToastMessage, ToastType } from \"../components/Toast\";\n\nlet toastId = 0;\n\nexport const useToast = () => {\n const [toasts, setToasts] = useState([]);\n\n const showToast = useCallback(\n (message: string, type: ToastType = \"info\", duration?: number) => {\n const id = `toast-${toastId++}`;\n const toast: ToastMessage = { id, message, type, duration };\n setToasts((prev) => [...prev, toast]);\n return id;\n },\n []\n );\n\n const dismissToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const updateToast = useCallback(\n (id: string, message: string, type: ToastType, duration?: number) => {\n setToasts((prev) =>\n prev.map((t) => (t.id === id ? { ...t, message, type, duration } : t))\n );\n },\n []\n );\n\n return {\n toasts,\n showToast,\n dismissToast,\n updateToast,\n };\n};\n","import { useEffect, useState } from \"react\";\nimport { STACKS_API_URL } from \"../lib/config\";\n\nexport const useBlockHeight = () => {\n const [blockHeight, setBlockHeight] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchBlockHeight = async () => {\n try {\n const response = await fetch(`${STACKS_API_URL}/extended/v1/block`);\n const data = await response.json();\n if (data.results && data.results.length > 0) {\n setBlockHeight(BigInt(data.results[0].height));\n }\n } catch (error) {\n console.error(\"Failed to fetch block height:\", error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchBlockHeight();\n // Refresh every 30 seconds (Stacks blocks are ~10 minutes)\n const interval = setInterval(fetchBlockHeight, 30000);\n\n return () => clearInterval(interval);\n }, []);\n\n return { blockHeight, isLoading };\n};\n","import {\n ClarityType,\n ClarityValue,\n OptionalCV,\n UIntCV,\n cvToJSON,\n} from \"@stacks/transactions\";\n\nexport interface AirtimePlan {\n id: number;\n merchant: string;\n customer: string;\n phone: string;\n network: string;\n payoutAmount: bigint;\n interval: bigint;\n nextClaimBlock: bigint;\n totalFunded: bigint;\n remainingBalance: bigint;\n totalClaims: bigint;\n maxClaims: bigint;\n}\n\nconst decoder = new TextDecoder();\n\nconst hexToBytes = (hex: string | undefined) => {\n if (!hex || typeof hex !== \"string\") {\n return new Uint8Array(0);\n }\n const clean = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n const bytes = new Uint8Array(clean.length / 2);\n for (let i = 0; i < clean.length; i += 2) {\n bytes[i / 2] = parseInt(clean.slice(i, i + 2), 16);\n }\n return bytes;\n};\n\nconst decodeBuff = (hex: string | undefined) => {\n if (!hex) return \"\";\n const text = decoder.decode(hexToBytes(hex));\n return text.replace(/\\u0000+$/g, \"\").trim();\n};\n\nexport const unwrapOk = (value: ClarityValue): ClarityValue => {\n if (value.type !== ClarityType.ResponseOk) {\n throw new Error(\"expected (ok ...) from contract\");\n }\n return value.value;\n};\n\nexport const unwrapUInt = (value: ClarityValue): bigint => {\n if (value.type !== ClarityType.UInt) {\n throw new Error(\"expected uint clarity value\");\n }\n return (value as UIntCV).value;\n};\n\nexport const parsePlanOption = (\n optionCv: ClarityValue,\n id: number\n): AirtimePlan | null => {\n if (optionCv.type === ClarityType.OptionalNone) {\n return null;\n }\n\n if (optionCv.type !== ClarityType.OptionalSome) {\n throw new Error(\"expected optional clarity value for plan\");\n }\n\n const json: any = cvToJSON(optionCv as OptionalCV);\n console.log(\"parsePlanOption debug:\", { id, json, optionCv });\n\n // Check if json.value exists (the (some ...) wrapper)\n if (!json || !json.value) {\n throw new Error(`unexpected plan schema: json=${JSON.stringify(json)}`);\n }\n\n // The actual tuple data is in json.value.value (nested structure)\n const tupleData = json.value.value || json.value;\n\n if (!tupleData || typeof tupleData !== \"object\") {\n throw new Error(`unexpected plan tuple structure: ${JSON.stringify(json)}`);\n }\n\n const tuple = tupleData as Record;\n console.log(\"parsePlanOption tuple:\", tuple);\n\n // Helper to safely extract nested value\n const getValue = (key: string) => {\n const field = tuple[key];\n if (!field) return undefined;\n // Handle both {value: \"...\"} and direct values\n return field.value !== undefined ? field.value : field;\n };\n\n return {\n id,\n merchant: getValue(\"merchant\") as string,\n customer: getValue(\"customer\") as string,\n phone: decodeBuff(getValue(\"phone\")),\n network: decodeBuff(getValue(\"network\")),\n payoutAmount: BigInt(getValue(\"payout-amount\") || \"0\"),\n interval: BigInt(getValue(\"interval\") || \"0\"),\n nextClaimBlock: BigInt(getValue(\"next-claim-block\") || \"0\"),\n totalFunded: BigInt(getValue(\"total-funded\") || \"0\"),\n remainingBalance: BigInt(getValue(\"remaining-balance\") || \"0\"),\n totalClaims: BigInt(getValue(\"total-claims\") || \"0\"),\n maxClaims: BigInt(getValue(\"max-claims\") || \"0\"),\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n AnchorMode,\n bufferCV,\n callReadOnlyFunction,\n PostConditionMode,\n principalCV,\n uintCV,\n} from \"@stacks/transactions\";\nimport { useConnect } from \"@stacks/connect-react\";\nimport type { UserSession } from \"@stacks/connect\";\n\nimport AnimatedBackground from \"./components/AnimatedBackground\";\nimport CreatePlanForm, { CreatePlanPayload } from \"./components/CreatePlanForm\";\nimport PlanCard from \"./components/PlanCard\";\nimport CustomerPortal from \"./components/CustomerPortal\";\nimport MerchantPortal from \"./components/MerchantPortal\";\nimport ReadOnlyView from \"./components/ReadOnlyView\";\nimport FaucetHelper from \"./components/FaucetHelper\";\nimport LandingPage from \"./components/LandingPage\";\nimport { ToastContainer } from \"./components/Toast\";\nimport { useToast } from \"./hooks/useToast\";\nimport { useBlockHeight } from \"./hooks/useBlockHeight\";\nimport {\n AirtimePlan,\n parsePlanOption,\n unwrapOk,\n unwrapUInt,\n} from \"./lib/clarity\";\nimport {\n CONTRACT_ADDRESS,\n CONTRACT_NAME,\n NETWORK_KEY,\n NETWORK_NAME,\n STACKS_NETWORK,\n formatStx,\n toMicroStx,\n} from \"./lib/config\";\n\nconst toFixedBuffer = (input: string, length: number) => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input.toLowerCase());\n if (data.length >= length) {\n return data.slice(0, length);\n }\n const padded = new Uint8Array(length);\n padded.set(data);\n return padded;\n};\n\ninterface AppProps {\n userSession: UserSession;\n}\n\ntype ViewMode = \"landing\" | \"all\" | \"customer\" | \"merchant\";\n\nconst App = ({ userSession }: AppProps) => {\n const {\n doOpenAuth,\n doContractCall,\n userSession: connectSession,\n } = useConnect();\n const session = connectSession ?? userSession;\n const { toasts, showToast, dismissToast, updateToast } = useToast();\n const { blockHeight } = useBlockHeight();\n\n const [plans, setPlans] = useState([]);\n const [isFetching, setFetching] = useState(false);\n const [busyPlanId, setBusyPlanId] = useState(null);\n const [viewMode, setViewMode] = useState(\"landing\");\n const [lookupAddress, setLookupAddress] = useState(\"\");\n\n // Check URL params for direct plan viewing\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n const planParam = params.get(\"plan\");\n const customerParam = params.get(\"customer\");\n\n if (planParam && customerParam) {\n setLookupAddress(customerParam);\n showToast(\n `Viewing plan #${planParam} for ${customerParam.slice(0, 8)}...`,\n \"info\"\n );\n }\n }, [showToast]);\n\n const isSignedIn = session?.isUserSignedIn() ?? false;\n\n const currentAddress = useMemo(() => {\n if (!session || !isSignedIn) return undefined;\n const data = session.loadUserData();\n const addresses = (data?.profile as any)?.stxAddress ?? {};\n return addresses[NETWORK_KEY];\n }, [isSignedIn, session]);\n\n const shortAddress = useMemo(() => {\n if (!currentAddress) return null;\n return `${currentAddress.slice(0, 6)}…${currentAddress.slice(-4)}`;\n }, [currentAddress]);\n\n const contractReady = CONTRACT_ADDRESS.length > 0;\n\n const refreshPlans = useCallback(\n async (address?: string) => {\n if (!contractReady) {\n setPlans([]);\n showToast(\n \"Contract address not configured. Set VITE_CONTRACT_ADDRESS in .env\",\n \"error\"\n );\n return;\n }\n\n const loadingToastId = showToast(\n \"Loading plans from blockchain...\",\n \"pending\",\n 0\n );\n\n try {\n setFetching(true);\n const lookupAddr = address || currentAddress || CONTRACT_ADDRESS;\n\n const latestResponse = await callReadOnlyFunction({\n contractAddress: CONTRACT_ADDRESS,\n contractName: CONTRACT_NAME,\n functionName: \"get-latest-airtime-plan-id\",\n functionArgs: [],\n senderAddress: lookupAddr,\n network: STACKS_NETWORK,\n });\n\n const totalPlans = unwrapUInt(unwrapOk(latestResponse));\n const items: AirtimePlan[] = [];\n\n for (let i = 0n; i < totalPlans; i += 1n) {\n const planId = Number(i);\n const planCv = await callReadOnlyFunction({\n contractAddress: CONTRACT_ADDRESS,\n contractName: CONTRACT_NAME,\n functionName: \"get-airtime-plan\",\n functionArgs: [uintCV(i)],\n senderAddress: lookupAddr,\n network: STACKS_NETWORK,\n });\n const parsed = parsePlanOption(planCv, planId);\n if (parsed) {\n items.push(parsed);\n }\n }\n\n items.sort((a, b) => b.id - a.id);\n setPlans(items);\n updateToast(\n loadingToastId,\n `✓ Synced ${items.length} plan${items.length === 1 ? \"\" : \"s\"}`,\n \"success\",\n 3000\n );\n } catch (error) {\n console.error(\"refreshPlans\", error);\n updateToast(\n loadingToastId,\n \"Failed to load plans. Check your network connection.\",\n \"error\"\n );\n } finally {\n setFetching(false);\n }\n },\n [contractReady, currentAddress, showToast, updateToast]\n );\n\n useEffect(() => {\n refreshPlans();\n }, [refreshPlans]);\n\n const requireWallet = () => {\n if (!isSignedIn) {\n throw new Error(\"Connect your Stacks wallet first.\");\n }\n };\n\n const handleCreatePlan = async (payload: CreatePlanPayload) => {\n requireWallet();\n if (!contractReady) {\n throw new Error(\"Contract address is missing.\");\n }\n\n const toastId = showToast(\"Preparing transaction...\", \"pending\", 0);\n\n await new Promise((resolve, reject) => {\n doContractCall({\n contractAddress: CONTRACT_ADDRESS,\n contractName: CONTRACT_NAME,\n functionName: \"create-airtime-plan\",\n functionArgs: [\n principalCV(payload.customer),\n bufferCV(toFixedBuffer(payload.phone, 16)),\n bufferCV(toFixedBuffer(payload.network, 16)),\n uintCV(toMicroStx(payload.payout)),\n uintCV(BigInt(payload.interval)),\n uintCV(BigInt(payload.maxClaims)),\n ],\n network: STACKS_NETWORK,\n anchorMode: AnchorMode.Any,\n postConditionMode: PostConditionMode.Allow,\n onFinish: (result) => {\n updateToast(\n toastId,\n `Plan created! Transaction: ${result.txId.slice(0, 8)}...`,\n \"success\"\n );\n setTimeout(() => refreshPlans(), 8000);\n resolve();\n },\n onCancel: () => {\n updateToast(toastId, \"Transaction cancelled\", \"info\", 3000);\n reject(new Error(\"User cancelled\"));\n },\n });\n });\n };\n\n const runPlanAction = async (\n planId: number,\n functionName: \"claim-airtime\" | \"topup-airtime\" | \"cancel-airtime\",\n args: ReturnType[],\n actionName: string\n ) => {\n requireWallet();\n if (!contractReady) {\n throw new Error(\"Contract address is missing.\");\n }\n\n const toastId = showToast(`${actionName}...`, \"pending\", 0);\n\n await new Promise((resolve, reject) => {\n doContractCall({\n contractAddress: CONTRACT_ADDRESS,\n contractName: CONTRACT_NAME,\n functionName,\n functionArgs: args,\n network: STACKS_NETWORK,\n anchorMode: AnchorMode.Any,\n postConditionMode: PostConditionMode.Allow,\n onFinish: (result) => {\n updateToast(\n toastId,\n `✓ ${actionName} successful! Tx: ${result.txId.slice(0, 8)}...`,\n \"success\"\n );\n setTimeout(() => refreshPlans(), 8000);\n resolve();\n },\n onCancel: () => {\n updateToast(toastId, \"Transaction cancelled\", \"info\", 3000);\n reject(new Error(\"User cancelled\"));\n },\n });\n });\n };\n\n const handleClaim = async (planId: number) => {\n try {\n setBusyPlanId(planId);\n await runPlanAction(\n planId,\n \"claim-airtime\",\n [uintCV(BigInt(planId))],\n \"Claiming airtime\"\n );\n } catch (error) {\n showToast((error as Error).message || \"Claim failed\", \"error\");\n } finally {\n setBusyPlanId(null);\n }\n };\n\n const handleClaimAll = async () => {\n if (!currentAddress) return;\n\n const customerPlans = plans.filter(\n (p) =>\n p.customer.toLowerCase() === currentAddress.toLowerCase() &&\n p.remainingBalance > 0n &&\n p.totalClaims < p.maxClaims &&\n blockHeight &&\n p.nextClaimBlock <= blockHeight\n );\n\n if (customerPlans.length === 0) {\n showToast(\"No plans ready to claim\", \"info\");\n return;\n }\n\n showToast(`Claiming from ${customerPlans.length} plans...`, \"pending\", 0);\n\n for (const plan of customerPlans) {\n try {\n await handleClaim(plan.id);\n } catch (error) {\n console.error(`Failed to claim plan ${plan.id}:`, error);\n }\n }\n\n showToast(\"Bulk claim complete!\", \"success\");\n };\n\n const handleTopup = async (planId: number, extraClaims: number) => {\n try {\n setBusyPlanId(planId);\n await runPlanAction(\n planId,\n \"topup-airtime\",\n [uintCV(BigInt(planId)), uintCV(BigInt(extraClaims))],\n \"Topping up plan\"\n );\n } catch (error) {\n showToast((error as Error).message || \"Top-up failed\", \"error\");\n } finally {\n setBusyPlanId(null);\n }\n };\n\n const handleCancel = async (planId: number) => {\n try {\n setBusyPlanId(planId);\n await runPlanAction(\n planId,\n \"cancel-airtime\",\n [uintCV(BigInt(planId))],\n \"Cancelling plan\"\n );\n } catch (error) {\n showToast((error as Error).message || \"Cancellation failed\", \"error\");\n } finally {\n setBusyPlanId(null);\n }\n };\n\n const handleSignIn = () => {\n doOpenAuth(true);\n };\n\n const handleSignOut = () => {\n session?.signUserOut();\n window.location.reload();\n };\n\n const handleLookup = (address: string) => {\n setLookupAddress(address);\n refreshPlans(address);\n };\n\n const renderContent = () => {\n if (viewMode === \"landing\") {\n return (\n setViewMode(\"all\")}\n onLookup={handleLookup}\n lookupAddress={lookupAddress}\n />\n );\n }\n\n if (viewMode === \"customer\") {\n return (\n \n );\n }\n\n if (viewMode === \"merchant\") {\n return (\n \n );\n }\n\n return (\n <>\n
\n

All airtime plans

\n

\n {isFetching\n ? \"Syncing with blockchain...\"\n : plans.length === 0\n ? \"No plans yet. Create your first one below.\"\n : `Showing ${plans.length} plan${plans.length === 1 ? \"\" : \"s\"}.`}\n

\n
\n {plans.map((plan) => (\n \n ))}\n
\n
\n
\n
\n \n Total locked:{\" \"}\n \n {formatStx(\n plans.reduce((sum, plan) => sum + plan.remainingBalance, 0n)\n )}{\" \"}\n STX\n \n \n \n \n Block height:{\" \"}\n {blockHeight?.toString() || \"Loading...\"}\n \n
\n

\n Contract: {CONTRACT_ADDRESS || \"Not configured\"}\n

\n
\n \n );\n };\n\n return (\n
\n \n \n\n
\n
\n

💰 STX Airtime Drip

\n

Keep your people topped up — no POS queues, no wahala.

\n
\n
\n {isSignedIn && (\n setViewMode(\"landing\")}\n title=\"Back to home\"\n >\n 🏠 Home\n \n )}\n {shortAddress && (\n \n {shortAddress} ·{\" \"}\n {NETWORK_NAME === \"mainnet\" ? \"Mainnet\" : \"Testnet\"}\n \n )}\n {isSignedIn ? (\n \n ) : (\n \n )}\n
\n
\n\n {!isSignedIn ? (\n \n ) : (\n <>\n {viewMode !== \"landing\" && (\n \n )}\n\n
\n setViewMode(\"landing\")}\n >\n 🏠 Home\n \n setViewMode(\"all\")}\n >\n All Plans\n \n setViewMode(\"customer\")}\n >\n My Claims\n \n setViewMode(\"merchant\")}\n >\n My Business\n \n
\n\n {renderContent()}\n \n )}\n
\n );\n};\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { AppConfig, UserSession } from \"@stacks/connect\";\nimport { Connect } from \"@stacks/connect-react\";\n\nimport App from \"./App\";\nimport \"./index.css\";\nimport { STACKS_NETWORK } from \"./lib/config\";\n\nconst appConfig = new AppConfig([\"store_write\", \"publish_data\"]);\nconst userSession = new UserSession({ appConfig });\n\nconst authOptions = {\n appDetails: {\n name: \"STX Airtime Drip\",\n icon: `${window.location.origin}/app-icon.svg`,\n },\n onFinish: () => {\n window.location.reload();\n },\n onCancel: () => {\n console.info(\"Wallet connect popup closed\");\n },\n};\n\nReactDOM.createRoot(document.getElementById(\"root\") as HTMLElement).render(\n \n \n \n \n \n);\n"],"file":"assets/index-B95lHF7v.js"} \ No newline at end of file diff --git a/dist/assets/index-BRPyA7QR.js b/dist/assets/index-BRPyA7QR.js new file mode 100644 index 0000000..6528e4f --- /dev/null +++ b/dist/assets/index-BRPyA7QR.js @@ -0,0 +1,414 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/add-Ckzpqnjf.js","assets/index-B95lHF7v.js","assets/index-DeQQl86x.css","assets/all-wallets-CiVglLrG.js","assets/arrow-bottom-circle-BJi0EAtS.js","assets/app-store-CiIRArEA.js","assets/apple-2box8Tg1.js","assets/arrow-bottom-DieQy2op.js","assets/arrow-left-CVJ9QikP.js","assets/arrow-right-B8CpHWgq.js","assets/arrow-top-DAeqHcc6.js","assets/bank-KF44bPGn.js","assets/browser-HaGUaOW7.js","assets/bin-CM4MGgVN.js","assets/bitcoin-C6adn8HY.js","assets/card-CQm6T2bo.js","assets/checkmark-D4Rxyj7t.js","assets/checkmark-bold-DqbdrecY.js","assets/chevron-bottom-HRPdrf9c.js","assets/chevron-left-r4IVzOTZ.js","assets/chevron-right-D9cidlJO.js","assets/chevron-top-C2vKYOU3.js","assets/chrome-store-BpxGy4N9.js","assets/clock-B4qzF4OO.js","assets/close-D2ew3bPI.js","assets/compass-C7Pr5Y4F.js","assets/coinPlaceholder-Cr0uYO00.js","assets/copy-DZoqZLWu.js","assets/cursor-gjnXjnZ-.js","assets/cursor-transparent-Clbk7pnh.js","assets/circle-DAnWkiOu.js","assets/desktop-C3EuWlvb.js","assets/disconnect-DKfUEOkX.js","assets/discord-BHtA6JaL.js","assets/ethereum-CSuiO0TE.js","assets/etherscan-C1uGdqPh.js","assets/extension-XsSwuPvL.js","assets/external-link-NBTLuiLl.js","assets/facebook-CcI-Xf34.js","assets/farcaster-TIQScwGT.js","assets/filters-Dq3_H3EC.js","assets/github-DRotKhle.js","assets/google-CZjrVi7f.js","assets/help-circle-CqM4md3e.js","assets/image-B20kWEHy.js","assets/id-DVVCrLBa.js","assets/info-circle-CjYdabGx.js","assets/lightbulb-C1Mhwh6G.js","assets/mail-B8tJqHWT.js","assets/mobile-BVxQjUau.js","assets/more-DirowUTI.js","assets/network-placeholder-D8O-PwqW.js","assets/nftPlaceholder-DFnA2y31.js","assets/off-B4m7aBiQ.js","assets/play-store-C1NQXTif.js","assets/plus-hU2L2mIL.js","assets/qr-code-K0b18fY4.js","assets/recycle-horizontal-rLqrqUbz.js","assets/refresh-AdtYjUNS.js","assets/search-BiVLLbOl.js","assets/send-B0RFCel8.js","assets/swapHorizontal-CAehTkY-.js","assets/swapHorizontalMedium-CcGx0A28.js","assets/swapHorizontalBold-DvKTTfUc.js","assets/swapHorizontalRoundedBold-CRAVa6kf.js","assets/swapVertical-jPepe9MY.js","assets/solana-Hjh6TSZA.js","assets/telegram-D5qya3sQ.js","assets/three-dots-DOdh90Nu.js","assets/twitch-CJDTeNMX.js","assets/x-CeOvQMPn.js","assets/twitterIcon-vRf9ZPKi.js","assets/user-DovnTMxb.js","assets/verify-BOhu4jLv.js","assets/verify-filled-Csf3Zkz0.js","assets/wallet-CrlOgCjY.js","assets/walletconnect-Bjp2_CnW.js","assets/wallet-placeholder-BHY4DgGe.js","assets/warning-circle-C7JI6fo1.js","assets/info-C_X6HmcT.js","assets/exclamation-triangle-DWmdZdig.js","assets/reown-logo-0va3RhSP.js","assets/x-mark-C5EE7WXX.js"])))=>i.map(i=>d[i]); +import{I as N,J as q,i as b,a as E,b as $,x as f,s as Y,K as V,t as H,_ as o,e as K}from"./index-B95lHF7v.js";const w={getSpacingStyles(t,e){if(Array.isArray(t))return t[e]?`var(--wui-spacing-${t[e]})`:void 0;if(typeof t=="string")return`var(--wui-spacing-${t})`},getFormattedDate(t){return new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}).format(t)},getHostName(t){try{return new URL(t).hostname}catch{return""}},getTruncateString({string:t,charsStart:e,charsEnd:i,truncate:a}){return t.length<=e+i?t:a==="end"?`${t.substring(0,e)}...`:a==="start"?`...${t.substring(t.length-i)}`:`${t.substring(0,Math.floor(e))}...${t.substring(t.length-Math.floor(i))}`},generateAvatarColors(t){const i=t.toLowerCase().replace(/^0x/iu,"").replace(/[^a-f0-9]/gu,"").substring(0,6).padEnd(6,"0"),a=this.hexToRgb(i),n=getComputedStyle(document.documentElement).getPropertyValue("--w3m-border-radius-master"),s=100-3*Number(n==null?void 0:n.replace("px","")),c=`${s}% ${s}% at 65% 40%`,u=[];for(let h=0;h<5;h+=1){const v=this.tintColor(a,.15*h);u.push(`rgb(${v[0]}, ${v[1]}, ${v[2]})`)}return` + --local-color-1: ${u[0]}; + --local-color-2: ${u[1]}; + --local-color-3: ${u[2]}; + --local-color-4: ${u[3]}; + --local-color-5: ${u[4]}; + --local-radial-circle: ${c} + `},hexToRgb(t){const e=parseInt(t,16),i=e>>16&255,a=e>>8&255,n=e&255;return[i,a,n]},tintColor(t,e){const[i,a,n]=t,r=Math.round(i+(255-i)*e),s=Math.round(a+(255-a)*e),c=Math.round(n+(255-n)*e);return[r,s,c]},isNumber(t){return{number:/^[0-9]+$/u}.number.test(t)},getColorTheme(t){var e;return t||(typeof window<"u"&&window.matchMedia&&typeof window.matchMedia=="function"?(e=window.matchMedia("(prefers-color-scheme: dark)"))!=null&&e.matches?"dark":"light":"dark")},splitBalance(t){const e=t.split(".");return e.length===2?[e[0],e[1]]:["0","00"]},roundNumber(t,e,i){return t.toString().length>=e?Number(t).toFixed(i):t},formatNumberToLocalString(t,e=2){return t===void 0?"0.00":typeof t=="number"?t.toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e}):parseFloat(t).toLocaleString("en-US",{maximumFractionDigits:e,minimumFractionDigits:e})}};function X(t,e){const{kind:i,elements:a}=e;return{kind:i,elements:a,finisher(n){customElements.get(t)||customElements.define(t,n)}}}function Z(t,e){return customElements.get(t)||customElements.define(t,e),e}function x(t){return function(i){return typeof i=="function"?Z(t,i):X(t,i)}}/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const J={attribute:!0,type:String,converter:q,reflect:!1,hasChanged:N},Q=(t=J,e,i)=>{const{kind:a,metadata:n}=i;let r=globalThis.litPropertyMetadata.get(n);if(r===void 0&&globalThis.litPropertyMetadata.set(n,r=new Map),a==="setter"&&((t=Object.create(t)).wrapped=!0),r.set(i.name,t),a==="accessor"){const{name:s}=i;return{set(c){const u=e.get.call(this);e.set.call(this,c),this.requestUpdate(s,u,t)},init(c){return c!==void 0&&this.C(s,void 0,t,c),c}}}if(a==="setter"){const{name:s}=i;return function(c){const u=this[s];e.call(this,c),this.requestUpdate(s,u,t)}}throw Error("Unsupported decorator location: "+a)};function l(t){return(e,i)=>typeof i=="object"?Q(t,e,i):((a,n,r)=>{const s=n.hasOwnProperty(r);return n.constructor.createProperty(r,a),s?Object.getOwnPropertyDescriptor(n,r):void 0})(t,e,i)}/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */function St(t){return l({...t,state:!0,attribute:!1})}const tt=b` + :host { + display: flex; + width: inherit; + height: inherit; + } +`;var _=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let d=class extends ${render(){return this.style.cssText=` + flex-direction: ${this.flexDirection}; + flex-wrap: ${this.flexWrap}; + flex-basis: ${this.flexBasis}; + flex-grow: ${this.flexGrow}; + flex-shrink: ${this.flexShrink}; + align-items: ${this.alignItems}; + justify-content: ${this.justifyContent}; + column-gap: ${this.columnGap&&`var(--wui-spacing-${this.columnGap})`}; + row-gap: ${this.rowGap&&`var(--wui-spacing-${this.rowGap})`}; + gap: ${this.gap&&`var(--wui-spacing-${this.gap})`}; + padding-top: ${this.padding&&w.getSpacingStyles(this.padding,0)}; + padding-right: ${this.padding&&w.getSpacingStyles(this.padding,1)}; + padding-bottom: ${this.padding&&w.getSpacingStyles(this.padding,2)}; + padding-left: ${this.padding&&w.getSpacingStyles(this.padding,3)}; + margin-top: ${this.margin&&w.getSpacingStyles(this.margin,0)}; + margin-right: ${this.margin&&w.getSpacingStyles(this.margin,1)}; + margin-bottom: ${this.margin&&w.getSpacingStyles(this.margin,2)}; + margin-left: ${this.margin&&w.getSpacingStyles(this.margin,3)}; + `,f``}};d.styles=[E,tt];_([l()],d.prototype,"flexDirection",void 0);_([l()],d.prototype,"flexWrap",void 0);_([l()],d.prototype,"flexBasis",void 0);_([l()],d.prototype,"flexGrow",void 0);_([l()],d.prototype,"flexShrink",void 0);_([l()],d.prototype,"alignItems",void 0);_([l()],d.prototype,"justifyContent",void 0);_([l()],d.prototype,"columnGap",void 0);_([l()],d.prototype,"rowGap",void 0);_([l()],d.prototype,"gap",void 0);_([l()],d.prototype,"padding",void 0);_([l()],d.prototype,"margin",void 0);d=_([x("wui-flex")],d);/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const Et=t=>t??Y;/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const et=t=>t===null||typeof t!="object"&&typeof t!="function",it=t=>t.strings===void 0;/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const F={ATTRIBUTE:1,CHILD:2},W=t=>(...e)=>({_$litDirective$:t,values:e});let U=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,i,a){this._$Ct=e,this._$AM=i,this._$Ci=a}_$AS(e,i){return this.update(e,i)}update(e,i){return this.render(...i)}};/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const T=(t,e)=>{var a;const i=t._$AN;if(i===void 0)return!1;for(const n of i)(a=n._$AO)==null||a.call(n,e,!1),T(n,e);return!0},L=t=>{let e,i;do{if((e=t._$AM)===void 0)break;i=e._$AN,i.delete(t),t=e}while((i==null?void 0:i.size)===0)},G=t=>{for(let e;e=t._$AM;t=e){let i=e._$AN;if(i===void 0)e._$AN=i=new Set;else if(i.has(t))break;i.add(t),at(e)}};function rt(t){this._$AN!==void 0?(L(this),this._$AM=t,G(this)):this._$AM=t}function ot(t,e=!1,i=0){const a=this._$AH,n=this._$AN;if(n!==void 0&&n.size!==0)if(e)if(Array.isArray(a))for(let r=i;r{t.type==F.CHILD&&(t._$AP??(t._$AP=ot),t._$AQ??(t._$AQ=rt))};class nt extends U{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,i,a){super._$AT(e,i,a),G(this),this.isConnected=e._$AU}_$AO(e,i=!0){var a,n;e!==this.isConnected&&(this.isConnected=e,e?(a=this.reconnected)==null||a.call(this):(n=this.disconnected)==null||n.call(this)),i&&(T(this,e),L(this))}setValue(e){if(it(this._$Ct))this._$Ct._$AI(e,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=e,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}/** + * @license + * Copyright 2021 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */class st{constructor(e){this.G=e}disconnect(){this.G=void 0}reconnect(e){this.G=e}deref(){return this.G}}class ct{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??(this.Y=new Promise(e=>this.Z=e))}resume(){var e;(e=this.Z)==null||e.call(this),this.Y=this.Z=void 0}}/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const j=t=>!et(t)&&typeof t.then=="function",B=1073741823;class lt extends nt{constructor(){super(...arguments),this._$Cwt=B,this._$Cbt=[],this._$CK=new st(this),this._$CX=new ct}render(...e){return e.find(i=>!j(i))??V}update(e,i){const a=this._$Cbt;let n=a.length;this._$Cbt=i;const r=this._$CK,s=this._$CX;this.isConnected||this.disconnected();for(let c=0;cthis._$Cwt);c++){const u=i[c];if(!j(u))return this._$Cwt=c,u;c{for(;s.get();)await s.get();const v=r.deref();if(v!==void 0){const D=v._$Cbt.indexOf(u);D>-1&&D=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};const M={add:async()=>(await o(async()=>{const{addSvg:t}=await import("./add-Ckzpqnjf.js");return{addSvg:t}},__vite__mapDeps([0,1,2]))).addSvg,allWallets:async()=>(await o(async()=>{const{allWalletsSvg:t}=await import("./all-wallets-CiVglLrG.js");return{allWalletsSvg:t}},__vite__mapDeps([3,1,2]))).allWalletsSvg,arrowBottomCircle:async()=>(await o(async()=>{const{arrowBottomCircleSvg:t}=await import("./arrow-bottom-circle-BJi0EAtS.js");return{arrowBottomCircleSvg:t}},__vite__mapDeps([4,1,2]))).arrowBottomCircleSvg,appStore:async()=>(await o(async()=>{const{appStoreSvg:t}=await import("./app-store-CiIRArEA.js");return{appStoreSvg:t}},__vite__mapDeps([5,1,2]))).appStoreSvg,apple:async()=>(await o(async()=>{const{appleSvg:t}=await import("./apple-2box8Tg1.js");return{appleSvg:t}},__vite__mapDeps([6,1,2]))).appleSvg,arrowBottom:async()=>(await o(async()=>{const{arrowBottomSvg:t}=await import("./arrow-bottom-DieQy2op.js");return{arrowBottomSvg:t}},__vite__mapDeps([7,1,2]))).arrowBottomSvg,arrowLeft:async()=>(await o(async()=>{const{arrowLeftSvg:t}=await import("./arrow-left-CVJ9QikP.js");return{arrowLeftSvg:t}},__vite__mapDeps([8,1,2]))).arrowLeftSvg,arrowRight:async()=>(await o(async()=>{const{arrowRightSvg:t}=await import("./arrow-right-B8CpHWgq.js");return{arrowRightSvg:t}},__vite__mapDeps([9,1,2]))).arrowRightSvg,arrowTop:async()=>(await o(async()=>{const{arrowTopSvg:t}=await import("./arrow-top-DAeqHcc6.js");return{arrowTopSvg:t}},__vite__mapDeps([10,1,2]))).arrowTopSvg,bank:async()=>(await o(async()=>{const{bankSvg:t}=await import("./bank-KF44bPGn.js");return{bankSvg:t}},__vite__mapDeps([11,1,2]))).bankSvg,browser:async()=>(await o(async()=>{const{browserSvg:t}=await import("./browser-HaGUaOW7.js");return{browserSvg:t}},__vite__mapDeps([12,1,2]))).browserSvg,bin:async()=>(await o(async()=>{const{binSvg:t}=await import("./bin-CM4MGgVN.js");return{binSvg:t}},__vite__mapDeps([13,1,2]))).binSvg,bitcoin:async()=>(await o(async()=>{const{bitcoinSvg:t}=await import("./bitcoin-C6adn8HY.js");return{bitcoinSvg:t}},__vite__mapDeps([14,1,2]))).bitcoinSvg,card:async()=>(await o(async()=>{const{cardSvg:t}=await import("./card-CQm6T2bo.js");return{cardSvg:t}},__vite__mapDeps([15,1,2]))).cardSvg,checkmark:async()=>(await o(async()=>{const{checkmarkSvg:t}=await import("./checkmark-D4Rxyj7t.js");return{checkmarkSvg:t}},__vite__mapDeps([16,1,2]))).checkmarkSvg,checkmarkBold:async()=>(await o(async()=>{const{checkmarkBoldSvg:t}=await import("./checkmark-bold-DqbdrecY.js");return{checkmarkBoldSvg:t}},__vite__mapDeps([17,1,2]))).checkmarkBoldSvg,chevronBottom:async()=>(await o(async()=>{const{chevronBottomSvg:t}=await import("./chevron-bottom-HRPdrf9c.js");return{chevronBottomSvg:t}},__vite__mapDeps([18,1,2]))).chevronBottomSvg,chevronLeft:async()=>(await o(async()=>{const{chevronLeftSvg:t}=await import("./chevron-left-r4IVzOTZ.js");return{chevronLeftSvg:t}},__vite__mapDeps([19,1,2]))).chevronLeftSvg,chevronRight:async()=>(await o(async()=>{const{chevronRightSvg:t}=await import("./chevron-right-D9cidlJO.js");return{chevronRightSvg:t}},__vite__mapDeps([20,1,2]))).chevronRightSvg,chevronTop:async()=>(await o(async()=>{const{chevronTopSvg:t}=await import("./chevron-top-C2vKYOU3.js");return{chevronTopSvg:t}},__vite__mapDeps([21,1,2]))).chevronTopSvg,chromeStore:async()=>(await o(async()=>{const{chromeStoreSvg:t}=await import("./chrome-store-BpxGy4N9.js");return{chromeStoreSvg:t}},__vite__mapDeps([22,1,2]))).chromeStoreSvg,clock:async()=>(await o(async()=>{const{clockSvg:t}=await import("./clock-B4qzF4OO.js");return{clockSvg:t}},__vite__mapDeps([23,1,2]))).clockSvg,close:async()=>(await o(async()=>{const{closeSvg:t}=await import("./close-D2ew3bPI.js");return{closeSvg:t}},__vite__mapDeps([24,1,2]))).closeSvg,compass:async()=>(await o(async()=>{const{compassSvg:t}=await import("./compass-C7Pr5Y4F.js");return{compassSvg:t}},__vite__mapDeps([25,1,2]))).compassSvg,coinPlaceholder:async()=>(await o(async()=>{const{coinPlaceholderSvg:t}=await import("./coinPlaceholder-Cr0uYO00.js");return{coinPlaceholderSvg:t}},__vite__mapDeps([26,1,2]))).coinPlaceholderSvg,copy:async()=>(await o(async()=>{const{copySvg:t}=await import("./copy-DZoqZLWu.js");return{copySvg:t}},__vite__mapDeps([27,1,2]))).copySvg,cursor:async()=>(await o(async()=>{const{cursorSvg:t}=await import("./cursor-gjnXjnZ-.js");return{cursorSvg:t}},__vite__mapDeps([28,1,2]))).cursorSvg,cursorTransparent:async()=>(await o(async()=>{const{cursorTransparentSvg:t}=await import("./cursor-transparent-Clbk7pnh.js");return{cursorTransparentSvg:t}},__vite__mapDeps([29,1,2]))).cursorTransparentSvg,circle:async()=>(await o(async()=>{const{circleSvg:t}=await import("./circle-DAnWkiOu.js");return{circleSvg:t}},__vite__mapDeps([30,1,2]))).circleSvg,desktop:async()=>(await o(async()=>{const{desktopSvg:t}=await import("./desktop-C3EuWlvb.js");return{desktopSvg:t}},__vite__mapDeps([31,1,2]))).desktopSvg,disconnect:async()=>(await o(async()=>{const{disconnectSvg:t}=await import("./disconnect-DKfUEOkX.js");return{disconnectSvg:t}},__vite__mapDeps([32,1,2]))).disconnectSvg,discord:async()=>(await o(async()=>{const{discordSvg:t}=await import("./discord-BHtA6JaL.js");return{discordSvg:t}},__vite__mapDeps([33,1,2]))).discordSvg,ethereum:async()=>(await o(async()=>{const{ethereumSvg:t}=await import("./ethereum-CSuiO0TE.js");return{ethereumSvg:t}},__vite__mapDeps([34,1,2]))).ethereumSvg,etherscan:async()=>(await o(async()=>{const{etherscanSvg:t}=await import("./etherscan-C1uGdqPh.js");return{etherscanSvg:t}},__vite__mapDeps([35,1,2]))).etherscanSvg,extension:async()=>(await o(async()=>{const{extensionSvg:t}=await import("./extension-XsSwuPvL.js");return{extensionSvg:t}},__vite__mapDeps([36,1,2]))).extensionSvg,externalLink:async()=>(await o(async()=>{const{externalLinkSvg:t}=await import("./external-link-NBTLuiLl.js");return{externalLinkSvg:t}},__vite__mapDeps([37,1,2]))).externalLinkSvg,facebook:async()=>(await o(async()=>{const{facebookSvg:t}=await import("./facebook-CcI-Xf34.js");return{facebookSvg:t}},__vite__mapDeps([38,1,2]))).facebookSvg,farcaster:async()=>(await o(async()=>{const{farcasterSvg:t}=await import("./farcaster-TIQScwGT.js");return{farcasterSvg:t}},__vite__mapDeps([39,1,2]))).farcasterSvg,filters:async()=>(await o(async()=>{const{filtersSvg:t}=await import("./filters-Dq3_H3EC.js");return{filtersSvg:t}},__vite__mapDeps([40,1,2]))).filtersSvg,github:async()=>(await o(async()=>{const{githubSvg:t}=await import("./github-DRotKhle.js");return{githubSvg:t}},__vite__mapDeps([41,1,2]))).githubSvg,google:async()=>(await o(async()=>{const{googleSvg:t}=await import("./google-CZjrVi7f.js");return{googleSvg:t}},__vite__mapDeps([42,1,2]))).googleSvg,helpCircle:async()=>(await o(async()=>{const{helpCircleSvg:t}=await import("./help-circle-CqM4md3e.js");return{helpCircleSvg:t}},__vite__mapDeps([43,1,2]))).helpCircleSvg,image:async()=>(await o(async()=>{const{imageSvg:t}=await import("./image-B20kWEHy.js");return{imageSvg:t}},__vite__mapDeps([44,1,2]))).imageSvg,id:async()=>(await o(async()=>{const{idSvg:t}=await import("./id-DVVCrLBa.js");return{idSvg:t}},__vite__mapDeps([45,1,2]))).idSvg,infoCircle:async()=>(await o(async()=>{const{infoCircleSvg:t}=await import("./info-circle-CjYdabGx.js");return{infoCircleSvg:t}},__vite__mapDeps([46,1,2]))).infoCircleSvg,lightbulb:async()=>(await o(async()=>{const{lightbulbSvg:t}=await import("./lightbulb-C1Mhwh6G.js");return{lightbulbSvg:t}},__vite__mapDeps([47,1,2]))).lightbulbSvg,mail:async()=>(await o(async()=>{const{mailSvg:t}=await import("./mail-B8tJqHWT.js");return{mailSvg:t}},__vite__mapDeps([48,1,2]))).mailSvg,mobile:async()=>(await o(async()=>{const{mobileSvg:t}=await import("./mobile-BVxQjUau.js");return{mobileSvg:t}},__vite__mapDeps([49,1,2]))).mobileSvg,more:async()=>(await o(async()=>{const{moreSvg:t}=await import("./more-DirowUTI.js");return{moreSvg:t}},__vite__mapDeps([50,1,2]))).moreSvg,networkPlaceholder:async()=>(await o(async()=>{const{networkPlaceholderSvg:t}=await import("./network-placeholder-D8O-PwqW.js");return{networkPlaceholderSvg:t}},__vite__mapDeps([51,1,2]))).networkPlaceholderSvg,nftPlaceholder:async()=>(await o(async()=>{const{nftPlaceholderSvg:t}=await import("./nftPlaceholder-DFnA2y31.js");return{nftPlaceholderSvg:t}},__vite__mapDeps([52,1,2]))).nftPlaceholderSvg,off:async()=>(await o(async()=>{const{offSvg:t}=await import("./off-B4m7aBiQ.js");return{offSvg:t}},__vite__mapDeps([53,1,2]))).offSvg,playStore:async()=>(await o(async()=>{const{playStoreSvg:t}=await import("./play-store-C1NQXTif.js");return{playStoreSvg:t}},__vite__mapDeps([54,1,2]))).playStoreSvg,plus:async()=>(await o(async()=>{const{plusSvg:t}=await import("./plus-hU2L2mIL.js");return{plusSvg:t}},__vite__mapDeps([55,1,2]))).plusSvg,qrCode:async()=>(await o(async()=>{const{qrCodeIcon:t}=await import("./qr-code-K0b18fY4.js");return{qrCodeIcon:t}},__vite__mapDeps([56,1,2]))).qrCodeIcon,recycleHorizontal:async()=>(await o(async()=>{const{recycleHorizontalSvg:t}=await import("./recycle-horizontal-rLqrqUbz.js");return{recycleHorizontalSvg:t}},__vite__mapDeps([57,1,2]))).recycleHorizontalSvg,refresh:async()=>(await o(async()=>{const{refreshSvg:t}=await import("./refresh-AdtYjUNS.js");return{refreshSvg:t}},__vite__mapDeps([58,1,2]))).refreshSvg,search:async()=>(await o(async()=>{const{searchSvg:t}=await import("./search-BiVLLbOl.js");return{searchSvg:t}},__vite__mapDeps([59,1,2]))).searchSvg,send:async()=>(await o(async()=>{const{sendSvg:t}=await import("./send-B0RFCel8.js");return{sendSvg:t}},__vite__mapDeps([60,1,2]))).sendSvg,swapHorizontal:async()=>(await o(async()=>{const{swapHorizontalSvg:t}=await import("./swapHorizontal-CAehTkY-.js");return{swapHorizontalSvg:t}},__vite__mapDeps([61,1,2]))).swapHorizontalSvg,swapHorizontalMedium:async()=>(await o(async()=>{const{swapHorizontalMediumSvg:t}=await import("./swapHorizontalMedium-CcGx0A28.js");return{swapHorizontalMediumSvg:t}},__vite__mapDeps([62,1,2]))).swapHorizontalMediumSvg,swapHorizontalBold:async()=>(await o(async()=>{const{swapHorizontalBoldSvg:t}=await import("./swapHorizontalBold-DvKTTfUc.js");return{swapHorizontalBoldSvg:t}},__vite__mapDeps([63,1,2]))).swapHorizontalBoldSvg,swapHorizontalRoundedBold:async()=>(await o(async()=>{const{swapHorizontalRoundedBoldSvg:t}=await import("./swapHorizontalRoundedBold-CRAVa6kf.js");return{swapHorizontalRoundedBoldSvg:t}},__vite__mapDeps([64,1,2]))).swapHorizontalRoundedBoldSvg,swapVertical:async()=>(await o(async()=>{const{swapVerticalSvg:t}=await import("./swapVertical-jPepe9MY.js");return{swapVerticalSvg:t}},__vite__mapDeps([65,1,2]))).swapVerticalSvg,solana:async()=>(await o(async()=>{const{solanaSvg:t}=await import("./solana-Hjh6TSZA.js");return{solanaSvg:t}},__vite__mapDeps([66,1,2]))).solanaSvg,telegram:async()=>(await o(async()=>{const{telegramSvg:t}=await import("./telegram-D5qya3sQ.js");return{telegramSvg:t}},__vite__mapDeps([67,1,2]))).telegramSvg,threeDots:async()=>(await o(async()=>{const{threeDotsSvg:t}=await import("./three-dots-DOdh90Nu.js");return{threeDotsSvg:t}},__vite__mapDeps([68,1,2]))).threeDotsSvg,twitch:async()=>(await o(async()=>{const{twitchSvg:t}=await import("./twitch-CJDTeNMX.js");return{twitchSvg:t}},__vite__mapDeps([69,1,2]))).twitchSvg,twitter:async()=>(await o(async()=>{const{xSvg:t}=await import("./x-CeOvQMPn.js");return{xSvg:t}},__vite__mapDeps([70,1,2]))).xSvg,twitterIcon:async()=>(await o(async()=>{const{twitterIconSvg:t}=await import("./twitterIcon-vRf9ZPKi.js");return{twitterIconSvg:t}},__vite__mapDeps([71,1,2]))).twitterIconSvg,user:async()=>(await o(async()=>{const{userSvg:t}=await import("./user-DovnTMxb.js");return{userSvg:t}},__vite__mapDeps([72,1,2]))).userSvg,verify:async()=>(await o(async()=>{const{verifySvg:t}=await import("./verify-BOhu4jLv.js");return{verifySvg:t}},__vite__mapDeps([73,1,2]))).verifySvg,verifyFilled:async()=>(await o(async()=>{const{verifyFilledSvg:t}=await import("./verify-filled-Csf3Zkz0.js");return{verifyFilledSvg:t}},__vite__mapDeps([74,1,2]))).verifyFilledSvg,wallet:async()=>(await o(async()=>{const{walletSvg:t}=await import("./wallet-CrlOgCjY.js");return{walletSvg:t}},__vite__mapDeps([75,1,2]))).walletSvg,walletConnect:async()=>(await o(async()=>{const{walletConnectSvg:t}=await import("./walletconnect-Bjp2_CnW.js");return{walletConnectSvg:t}},__vite__mapDeps([76,1,2]))).walletConnectSvg,walletConnectLightBrown:async()=>(await o(async()=>{const{walletConnectLightBrownSvg:t}=await import("./walletconnect-Bjp2_CnW.js");return{walletConnectLightBrownSvg:t}},__vite__mapDeps([76,1,2]))).walletConnectLightBrownSvg,walletConnectBrown:async()=>(await o(async()=>{const{walletConnectBrownSvg:t}=await import("./walletconnect-Bjp2_CnW.js");return{walletConnectBrownSvg:t}},__vite__mapDeps([76,1,2]))).walletConnectBrownSvg,walletPlaceholder:async()=>(await o(async()=>{const{walletPlaceholderSvg:t}=await import("./wallet-placeholder-BHY4DgGe.js");return{walletPlaceholderSvg:t}},__vite__mapDeps([77,1,2]))).walletPlaceholderSvg,warningCircle:async()=>(await o(async()=>{const{warningCircleSvg:t}=await import("./warning-circle-C7JI6fo1.js");return{warningCircleSvg:t}},__vite__mapDeps([78,1,2]))).warningCircleSvg,x:async()=>(await o(async()=>{const{xSvg:t}=await import("./x-CeOvQMPn.js");return{xSvg:t}},__vite__mapDeps([70,1,2]))).xSvg,info:async()=>(await o(async()=>{const{infoSvg:t}=await import("./info-C_X6HmcT.js");return{infoSvg:t}},__vite__mapDeps([79,1,2]))).infoSvg,exclamationTriangle:async()=>(await o(async()=>{const{exclamationTriangleSvg:t}=await import("./exclamation-triangle-DWmdZdig.js");return{exclamationTriangleSvg:t}},__vite__mapDeps([80,1,2]))).exclamationTriangleSvg,reown:async()=>(await o(async()=>{const{reownSvg:t}=await import("./reown-logo-0va3RhSP.js");return{reownSvg:t}},__vite__mapDeps([81,1,2]))).reownSvg,"x-mark":async()=>(await o(async()=>{const{xMarkSvg:t}=await import("./x-mark-C5EE7WXX.js");return{xMarkSvg:t}},__vite__mapDeps([82,1,2]))).xMarkSvg};async function gt(t){if(C.has(t))return C.get(t);const i=(M[t]??M.copy)();return C.set(t,i),i}let m=class extends ${constructor(){super(...arguments),this.size="md",this.name="copy",this.color="fg-300",this.aspectRatio="1 / 1"}render(){return this.style.cssText=` + --local-color: ${`var(--wui-color-${this.color});`} + --local-width: ${`var(--wui-icon-size-${this.size});`} + --local-aspect-ratio: ${this.aspectRatio} + `,f`${ut(gt(this.name),f`
`)}`}};m.styles=[E,H,_t];A([l()],m.prototype,"size",void 0);A([l()],m.prototype,"name",void 0);A([l()],m.prototype,"color",void 0);A([l()],m.prototype,"aspectRatio",void 0);m=A([x("wui-icon")],m);/** + * @license + * Copyright 2018 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */const ht=W(class extends U{constructor(t){var e;if(super(t),t.type!==F.ATTRIBUTE||t.name!=="class"||((e=t.strings)==null?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter(e=>t[e]).join(" ")+" "}update(t,[e]){var a,n;if(this.st===void 0){this.st=new Set,t.strings!==void 0&&(this.nt=new Set(t.strings.join(" ").split(/\s/).filter(r=>r!=="")));for(const r in e)e[r]&&!((a=this.nt)!=null&&a.has(r))&&this.st.add(r);return this.render(e)}const i=t.element.classList;for(const r of this.st)r in e||(i.remove(r),this.st.delete(r));for(const r in e){const s=!!e[r];s===this.st.has(r)||(n=this.nt)!=null&&n.has(r)||(s?(i.add(r),this.st.add(r)):(i.remove(r),this.st.delete(r)))}return V}}),vt=b` + :host { + display: inline-flex !important; + } + + slot { + width: 100%; + display: inline-block; + font-style: normal; + font-family: var(--wui-font-family); + font-feature-settings: + 'tnum' on, + 'lnum' on, + 'case' on; + line-height: 130%; + font-weight: var(--wui-font-weight-regular); + overflow: inherit; + text-overflow: inherit; + text-align: var(--local-align); + color: var(--local-color); + } + + .wui-line-clamp-1 { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + } + + .wui-line-clamp-2 { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + } + + .wui-font-medium-400 { + font-size: var(--wui-font-size-medium); + font-weight: var(--wui-font-weight-light); + letter-spacing: var(--wui-letter-spacing-medium); + } + + .wui-font-medium-600 { + font-size: var(--wui-font-size-medium); + letter-spacing: var(--wui-letter-spacing-medium); + } + + .wui-font-title-600 { + font-size: var(--wui-font-size-title); + letter-spacing: var(--wui-letter-spacing-title); + } + + .wui-font-title-6-600 { + font-size: var(--wui-font-size-title-6); + letter-spacing: var(--wui-letter-spacing-title-6); + } + + .wui-font-mini-700 { + font-size: var(--wui-font-size-mini); + letter-spacing: var(--wui-letter-spacing-mini); + text-transform: uppercase; + } + + .wui-font-large-500, + .wui-font-large-600, + .wui-font-large-700 { + font-size: var(--wui-font-size-large); + letter-spacing: var(--wui-letter-spacing-large); + } + + .wui-font-2xl-500, + .wui-font-2xl-600, + .wui-font-2xl-700 { + font-size: var(--wui-font-size-2xl); + letter-spacing: var(--wui-letter-spacing-2xl); + } + + .wui-font-paragraph-400, + .wui-font-paragraph-500, + .wui-font-paragraph-600, + .wui-font-paragraph-700 { + font-size: var(--wui-font-size-paragraph); + letter-spacing: var(--wui-letter-spacing-paragraph); + } + + .wui-font-small-400, + .wui-font-small-500, + .wui-font-small-600 { + font-size: var(--wui-font-size-small); + letter-spacing: var(--wui-letter-spacing-small); + } + + .wui-font-tiny-400, + .wui-font-tiny-500, + .wui-font-tiny-600 { + font-size: var(--wui-font-size-tiny); + letter-spacing: var(--wui-letter-spacing-tiny); + } + + .wui-font-micro-700, + .wui-font-micro-600, + .wui-font-micro-500 { + font-size: var(--wui-font-size-micro); + letter-spacing: var(--wui-letter-spacing-micro); + text-transform: uppercase; + } + + .wui-font-tiny-400, + .wui-font-small-400, + .wui-font-medium-400, + .wui-font-paragraph-400 { + font-weight: var(--wui-font-weight-light); + } + + .wui-font-large-700, + .wui-font-paragraph-700, + .wui-font-micro-700, + .wui-font-mini-700 { + font-weight: var(--wui-font-weight-bold); + } + + .wui-font-medium-600, + .wui-font-medium-title-600, + .wui-font-title-6-600, + .wui-font-large-600, + .wui-font-paragraph-600, + .wui-font-small-600, + .wui-font-tiny-600, + .wui-font-micro-600 { + font-weight: var(--wui-font-weight-medium); + } + + :host([disabled]) { + opacity: 0.4; + } +`;var O=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let y=class extends ${constructor(){super(...arguments),this.variant="paragraph-500",this.color="fg-300",this.align="left",this.lineClamp=void 0}render(){const e={[`wui-font-${this.variant}`]:!0,[`wui-color-${this.color}`]:!0,[`wui-line-clamp-${this.lineClamp}`]:!!this.lineClamp};return this.style.cssText=` + --local-align: ${this.align}; + --local-color: var(--wui-color-${this.color}); + `,f``}};y.styles=[E,vt];O([l()],y.prototype,"variant",void 0);O([l()],y.prototype,"color",void 0);O([l()],y.prototype,"align",void 0);O([l()],y.prototype,"lineClamp",void 0);y=O([x("wui-text")],y);const pt=b` + :host { + display: inline-flex; + justify-content: center; + align-items: center; + position: relative; + overflow: hidden; + background-color: var(--wui-color-gray-glass-020); + border-radius: var(--local-border-radius); + border: var(--local-border); + box-sizing: content-box; + width: var(--local-size); + height: var(--local-size); + min-height: var(--local-size); + min-width: var(--local-size); + } + + @supports (background: color-mix(in srgb, white 50%, black)) { + :host { + background-color: color-mix(in srgb, var(--local-bg-value) var(--local-bg-mix), transparent); + } + } +`;var p=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let g=class extends ${constructor(){super(...arguments),this.size="md",this.backgroundColor="accent-100",this.iconColor="accent-100",this.background="transparent",this.border=!1,this.borderColor="wui-color-bg-125",this.icon="copy"}render(){const e=this.iconSize||this.size,i=this.size==="lg",a=this.size==="xl",n=i?"12%":"16%",r=i?"xxs":a?"s":"3xl",s=this.background==="gray",c=this.background==="opaque",u=this.backgroundColor==="accent-100"&&c||this.backgroundColor==="success-100"&&c||this.backgroundColor==="error-100"&&c||this.backgroundColor==="inverse-100"&&c;let h=`var(--wui-color-${this.backgroundColor})`;return u?h=`var(--wui-icon-box-bg-${this.backgroundColor})`:s&&(h=`var(--wui-color-gray-${this.backgroundColor})`),this.style.cssText=` + --local-bg-value: ${h}; + --local-bg-mix: ${u||s?"100%":n}; + --local-border-radius: var(--wui-border-radius-${r}); + --local-size: var(--wui-icon-box-size-${this.size}); + --local-border: ${this.borderColor==="wui-color-bg-125"?"2px":"1px"} solid ${this.border?`var(--${this.borderColor})`:"transparent"} + `,f` `}};g.styles=[E,K,pt];p([l()],g.prototype,"size",void 0);p([l()],g.prototype,"backgroundColor",void 0);p([l()],g.prototype,"iconColor",void 0);p([l()],g.prototype,"iconSize",void 0);p([l()],g.prototype,"background",void 0);p([l({type:Boolean})],g.prototype,"border",void 0);p([l()],g.prototype,"borderColor",void 0);p([l()],g.prototype,"icon",void 0);g=p([x("wui-icon-box")],g);const wt=b` + :host { + display: block; + width: var(--local-width); + height: var(--local-height); + } + + :host([data-object-fit='cover']) img { + object-fit: cover; + object-position: center center; + } + + :host([data-object-fit='contain']) img { + object-fit: contain; + object-position: center center; + } + + img { + display: block; + width: 100%; + height: 100%; + border-radius: inherit; + } +`;var I=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let S=class extends ${constructor(){super(...arguments),this.src="./path/to/image.jpg",this.alt="Image",this.size=void 0,this.objectFit="cover"}render(){return this.objectFit&&(this.dataset.objectFit=this.objectFit),this.style.cssText=` + --local-width: ${this.size?`var(--wui-icon-size-${this.size});`:"100%"}; + --local-height: ${this.size?`var(--wui-icon-size-${this.size});`:"100%"}; + `,f`${this.alt}`}handleImageError(){this.dispatchEvent(new CustomEvent("onLoadError",{bubbles:!0,composed:!0}))}};S.styles=[E,H,wt];I([l()],S.prototype,"src",void 0);I([l()],S.prototype,"alt",void 0);I([l()],S.prototype,"size",void 0);I([l()],S.prototype,"objectFit",void 0);S=I([x("wui-image")],S);const ft=b` + :host { + display: flex; + justify-content: center; + align-items: center; + height: var(--wui-spacing-m); + padding: 0 var(--wui-spacing-3xs) !important; + border-radius: var(--wui-border-radius-5xs); + transition: + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: border-radius, background-color; + } + + :host > wui-text { + transform: translateY(5%); + } + + :host([data-variant='main']) { + background-color: var(--wui-color-accent-glass-015); + color: var(--wui-color-accent-100); + } + + :host([data-variant='shade']) { + background-color: var(--wui-color-gray-glass-010); + color: var(--wui-color-fg-200); + } + + :host([data-variant='success']) { + background-color: var(--wui-icon-box-bg-success-100); + color: var(--wui-color-success-100); + } + + :host([data-variant='error']) { + background-color: var(--wui-icon-box-bg-error-100); + color: var(--wui-color-error-100); + } + + :host([data-size='lg']) { + padding: 11px 5px !important; + } + + :host([data-size='lg']) > wui-text { + transform: translateY(2%); + } + + :host([data-size='xs']) { + height: var(--wui-spacing-2l); + padding: 0 var(--wui-spacing-3xs) !important; + } + + :host([data-size='xs']) > wui-text { + transform: translateY(2%); + } +`;var z=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let R=class extends ${constructor(){super(...arguments),this.variant="main",this.size="lg"}render(){this.dataset.variant=this.variant,this.dataset.size=this.size;const e=this.size==="md"||this.size==="xs"?"mini-700":"micro-700";return f` + + + + `}};R.styles=[E,ft];z([l()],R.prototype,"variant",void 0);z([l()],R.prototype,"size",void 0);R=z([x("wui-tag")],R);const mt=b` + :host { + display: flex; + } + + :host([data-size='sm']) > svg { + width: 12px; + height: 12px; + } + + :host([data-size='md']) > svg { + width: 16px; + height: 16px; + } + + :host([data-size='lg']) > svg { + width: 24px; + height: 24px; + } + + :host([data-size='xl']) > svg { + width: 32px; + height: 32px; + } + + svg { + animation: rotate 2s linear infinite; + } + + circle { + fill: none; + stroke: var(--local-color); + stroke-width: 4px; + stroke-dasharray: 1, 124; + stroke-dashoffset: 0; + stroke-linecap: round; + animation: dash 1.5s ease-in-out infinite; + } + + :host([data-size='md']) > svg > circle { + stroke-width: 6px; + } + + :host([data-size='sm']) > svg > circle { + stroke-width: 8px; + } + + @keyframes rotate { + 100% { + transform: rotate(360deg); + } + } + + @keyframes dash { + 0% { + stroke-dasharray: 1, 124; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 90, 124; + stroke-dashoffset: -35; + } + + 100% { + stroke-dashoffset: -125; + } + } +`;var k=function(t,e,i,a){var n=arguments.length,r=n<3?e:a===null?a=Object.getOwnPropertyDescriptor(e,i):a,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(t,e,i,a);else for(var c=t.length-1;c>=0;c--)(s=t[c])&&(r=(n<3?s(r):n>3?s(e,i,r):s(e,i))||r);return n>3&&r&&Object.defineProperty(e,i,r),r};let P=class extends ${constructor(){super(...arguments),this.color="accent-100",this.size="lg"}render(){return this.style.cssText=`--local-color: ${this.color==="inherit"?"inherit":`var(--wui-color-${this.color})`}`,this.dataset.size=this.size,f` + + `}};P.styles=[E,mt];k([l()],P.prototype,"color",void 0);k([l()],P.prototype,"size",void 0);P=k([x("wui-loading-spinner")],P);export{w as U,ht as a,x as c,W as e,nt as f,l as n,Et as o,St as r}; +//# sourceMappingURL=index-BRPyA7QR.js.map diff --git a/dist/assets/index-BRPyA7QR.js.map b/dist/assets/index-BRPyA7QR.js.map new file mode 100644 index 0000000..1fa937d --- /dev/null +++ b/dist/assets/index-BRPyA7QR.js.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["UiHelperUtil","spacing","index","date","url","string","charsStart","charsEnd","truncate","address","baseColor","rgbColor","masterBorderRadius","edge","gradientCircle","colors","i","tintedColor","hex","bigint","r","g","b","rgb","tint","tintedR","tintedG","tintedB","character","theme","_a","input","parts","number","threshold","fixed","value","decimals","standardCustomElement","tagName","descriptor","kind","elements","clazz","legacyCustomElement","customElement","classOrDescriptor","o","t","e","n","s","styles$6","css","__decorate","decorators","target","key","desc","c","d","WuiFlex","LitElement","html","resetStyles","styles","property","f","i$1","h","_b","m","CacheUtil","globalSvgCache","styles$5","ICONS","__vitePreload","allWalletsSvg","arrowBottomCircleSvg","appStoreSvg","arrowBottomSvg","arrowLeftSvg","arrowRightSvg","arrowTopSvg","checkmarkBoldSvg","chevronBottomSvg","chevronLeftSvg","chevronRightSvg","chevronTopSvg","chromeStoreSvg","cursorTransparentSvg","externalLinkSvg","helpCircleSvg","infoCircleSvg","networkPlaceholderSvg","playStoreSvg","qrCodeIcon","recycleHorizontalSvg","threeDotsSvg","verifyFilledSvg","walletPlaceholderSvg","warningCircleSvg","exclamationTriangleSvg","reownSvg","xMarkSvg","getSvg","name","svgPromise","WuiIcon","until","colorStyles","styles$4","WuiText","classes","classMap","styles$3","WuiIconBox","iconSize","isLg","isXl","bgMix","borderRadius","isGray","isOpaque","isColorChange","bgValueVariable","elementStyles","styles$2","WuiImage","styles$1","WuiTag","textVariant","WuiLoadingSpinner"],"ignoreList":[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],"sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/UiHelperUtil.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/WebComponentsUtil.js","../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/property.js","../../node_modules/.pnpm/@lit+reactive-element@2.1.1/node_modules/@lit/reactive-element/decorators/state.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/layout/wui-flex/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/layout/wui-flex/index.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/if-defined.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directive-helpers.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directive.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/async-directive.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/private-async-helpers.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/until.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/utils/CacheUtil.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-icon/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-icon/index.js","../../node_modules/.pnpm/lit-html@3.3.1/node_modules/lit-html/directives/class-map.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-text/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-text/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-icon-box/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-icon-box/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-image/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-image/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-tag/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-tag/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-loading-spinner/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-loading-spinner/index.js"],"sourcesContent":["export const UiHelperUtil = {\n getSpacingStyles(spacing, index) {\n if (Array.isArray(spacing)) {\n return spacing[index] ? `var(--wui-spacing-${spacing[index]})` : undefined;\n }\n else if (typeof spacing === 'string') {\n return `var(--wui-spacing-${spacing})`;\n }\n return undefined;\n },\n getFormattedDate(date) {\n return new Intl.DateTimeFormat('en-US', { month: 'short', day: 'numeric' }).format(date);\n },\n getHostName(url) {\n try {\n const newUrl = new URL(url);\n return newUrl.hostname;\n }\n catch (error) {\n return '';\n }\n },\n getTruncateString({ string, charsStart, charsEnd, truncate }) {\n if (string.length <= charsStart + charsEnd) {\n return string;\n }\n if (truncate === 'end') {\n return `${string.substring(0, charsStart)}...`;\n }\n else if (truncate === 'start') {\n return `...${string.substring(string.length - charsEnd)}`;\n }\n return `${string.substring(0, Math.floor(charsStart))}...${string.substring(string.length - Math.floor(charsEnd))}`;\n },\n generateAvatarColors(address) {\n const hash = address\n .toLowerCase()\n .replace(/^0x/iu, '')\n .replace(/[^a-f0-9]/gu, '');\n const baseColor = hash.substring(0, 6).padEnd(6, '0');\n const rgbColor = this.hexToRgb(baseColor);\n const masterBorderRadius = getComputedStyle(document.documentElement).getPropertyValue('--w3m-border-radius-master');\n const radius = Number(masterBorderRadius?.replace('px', ''));\n const edge = 100 - 3 * radius;\n const gradientCircle = `${edge}% ${edge}% at 65% 40%`;\n const colors = [];\n for (let i = 0; i < 5; i += 1) {\n const tintedColor = this.tintColor(rgbColor, 0.15 * i);\n colors.push(`rgb(${tintedColor[0]}, ${tintedColor[1]}, ${tintedColor[2]})`);\n }\n return `\n --local-color-1: ${colors[0]};\n --local-color-2: ${colors[1]};\n --local-color-3: ${colors[2]};\n --local-color-4: ${colors[3]};\n --local-color-5: ${colors[4]};\n --local-radial-circle: ${gradientCircle}\n `;\n },\n hexToRgb(hex) {\n const bigint = parseInt(hex, 16);\n const r = (bigint >> 16) & 255;\n const g = (bigint >> 8) & 255;\n const b = bigint & 255;\n return [r, g, b];\n },\n tintColor(rgb, tint) {\n const [r, g, b] = rgb;\n const tintedR = Math.round(r + (255 - r) * tint);\n const tintedG = Math.round(g + (255 - g) * tint);\n const tintedB = Math.round(b + (255 - b) * tint);\n return [tintedR, tintedG, tintedB];\n },\n isNumber(character) {\n const regex = {\n number: /^[0-9]+$/u\n };\n return regex.number.test(character);\n },\n getColorTheme(theme) {\n if (theme) {\n return theme;\n }\n else if (typeof window !== 'undefined' &&\n window.matchMedia &&\n typeof window.matchMedia === 'function') {\n if (window.matchMedia('(prefers-color-scheme: dark)')?.matches) {\n return 'dark';\n }\n return 'light';\n }\n return 'dark';\n },\n splitBalance(input) {\n const parts = input.split('.');\n if (parts.length === 2) {\n return [parts[0], parts[1]];\n }\n return ['0', '00'];\n },\n roundNumber(number, threshold, fixed) {\n const roundedNumber = number.toString().length >= threshold ? Number(number).toFixed(fixed) : number;\n return roundedNumber;\n },\n formatNumberToLocalString(value, decimals = 2) {\n if (value === undefined) {\n return '0.00';\n }\n if (typeof value === 'number') {\n return value.toLocaleString('en-US', {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n });\n }\n return parseFloat(value).toLocaleString('en-US', {\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals\n });\n }\n};\n//# sourceMappingURL=UiHelperUtil.js.map","function standardCustomElement(tagName, descriptor) {\n const { kind, elements } = descriptor;\n return {\n kind,\n elements,\n finisher(clazz) {\n if (!customElements.get(tagName)) {\n customElements.define(tagName, clazz);\n }\n }\n };\n}\nfunction legacyCustomElement(tagName, clazz) {\n if (!customElements.get(tagName)) {\n customElements.define(tagName, clazz);\n }\n return clazz;\n}\nexport function customElement(tagName) {\n return function create(classOrDescriptor) {\n return typeof classOrDescriptor === 'function'\n ? legacyCustomElement(tagName, classOrDescriptor)\n : standardCustomElement(tagName, classOrDescriptor);\n };\n}\n//# sourceMappingURL=WebComponentsUtil.js.map","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n width: inherit;\n height: inherit;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { UiHelperUtil } from '../../utils/UiHelperUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiFlex = class WuiFlex extends LitElement {\n render() {\n this.style.cssText = `\n flex-direction: ${this.flexDirection};\n flex-wrap: ${this.flexWrap};\n flex-basis: ${this.flexBasis};\n flex-grow: ${this.flexGrow};\n flex-shrink: ${this.flexShrink};\n align-items: ${this.alignItems};\n justify-content: ${this.justifyContent};\n column-gap: ${this.columnGap && `var(--wui-spacing-${this.columnGap})`};\n row-gap: ${this.rowGap && `var(--wui-spacing-${this.rowGap})`};\n gap: ${this.gap && `var(--wui-spacing-${this.gap})`};\n padding-top: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 0)};\n padding-right: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 1)};\n padding-bottom: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 2)};\n padding-left: ${this.padding && UiHelperUtil.getSpacingStyles(this.padding, 3)};\n margin-top: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 0)};\n margin-right: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 1)};\n margin-bottom: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 2)};\n margin-left: ${this.margin && UiHelperUtil.getSpacingStyles(this.margin, 3)};\n `;\n return html ``;\n }\n};\nWuiFlex.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiFlex.prototype, \"flexDirection\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"flexWrap\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"flexBasis\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"flexGrow\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"flexShrink\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"alignItems\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"justifyContent\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"columnGap\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"rowGap\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"gap\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"padding\", void 0);\n__decorate([\n property()\n], WuiFlex.prototype, \"margin\", void 0);\nWuiFlex = __decorate([\n customElement('wui-flex')\n], WuiFlex);\nexport { WuiFlex };\n//# sourceMappingURL=index.js.map","import{nothing as t}from\"../lit-html.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o=o=>o??t;export{o as ifDefined};\n//# sourceMappingURL=if-defined.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,d=o=>void 0!==o?._$litDirective$,c=o=>o?._$litDirective$,f=o=>void 0===o.strings,r=()=>document.createComment(\"\"),s=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(r(),l),d=e.insertBefore(r(),l);n=new t(i,d,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,d=i!==o;if(d){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||d){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AR(),o._$AA.remove()},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,c as getDirectiveClass,s as insertPart,l as isCompiledTemplateResult,d as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=async(t,s)=>{for await(const i of t)if(!1===await s(i))return};class s{constructor(t){this.G=t}disconnect(){this.G=void 0}reconnect(t){this.G=t}deref(){return this.G}}class i{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise((t=>this.Z=t))}resume(){this.Z?.(),this.Y=this.Z=void 0}}export{i as Pauser,s as PseudoWeakRef,t as forAwaitOf};\n//# sourceMappingURL=private-async-helpers.js.map\n","import{noChange as t}from\"../lit-html.js\";import{isPrimitive as s}from\"../directive-helpers.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{PseudoWeakRef as e,Pauser as r}from\"./private-async-helpers.js\";import{directive as o}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=t=>!s(t)&&\"function\"==typeof t.then,h=1073741823;class c extends i{constructor(){super(...arguments),this._$Cwt=h,this._$Cbt=[],this._$CK=new e(this),this._$CX=new r}render(...s){return s.find((t=>!n(t)))??t}update(s,i){const e=this._$Cbt;let r=e.length;this._$Cbt=i;const o=this._$CK,c=this._$CX;this.isConnected||this.disconnected();for(let t=0;tthis._$Cwt);t++){const s=i[t];if(!n(s))return this._$Cwt=t,s;t{for(;c.get();)await c.get();const i=o.deref();if(void 0!==i){const e=i._$Cbt.indexOf(s);e>-1&&e= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\nimport { globalSvgCache } from '../../utils/CacheUtil.js';\nimport { colorStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nconst ICONS = {\n add: async () => (await import('../../assets/svg/add.js')).addSvg,\n allWallets: async () => (await import('../../assets/svg/all-wallets.js')).allWalletsSvg,\n arrowBottomCircle: async () => (await import('../../assets/svg/arrow-bottom-circle.js')).arrowBottomCircleSvg,\n appStore: async () => (await import('../../assets/svg/app-store.js')).appStoreSvg,\n apple: async () => (await import('../../assets/svg/apple.js')).appleSvg,\n arrowBottom: async () => (await import('../../assets/svg/arrow-bottom.js')).arrowBottomSvg,\n arrowLeft: async () => (await import('../../assets/svg/arrow-left.js')).arrowLeftSvg,\n arrowRight: async () => (await import('../../assets/svg/arrow-right.js')).arrowRightSvg,\n arrowTop: async () => (await import('../../assets/svg/arrow-top.js')).arrowTopSvg,\n bank: async () => (await import('../../assets/svg/bank.js')).bankSvg,\n browser: async () => (await import('../../assets/svg/browser.js')).browserSvg,\n bin: async () => (await import('../../assets/svg/bin.js')).binSvg,\n bitcoin: async () => (await import('../../assets/svg/bitcoin.js')).bitcoinSvg,\n card: async () => (await import('../../assets/svg/card.js')).cardSvg,\n checkmark: async () => (await import('../../assets/svg/checkmark.js')).checkmarkSvg,\n checkmarkBold: async () => (await import('../../assets/svg/checkmark-bold.js')).checkmarkBoldSvg,\n chevronBottom: async () => (await import('../../assets/svg/chevron-bottom.js')).chevronBottomSvg,\n chevronLeft: async () => (await import('../../assets/svg/chevron-left.js')).chevronLeftSvg,\n chevronRight: async () => (await import('../../assets/svg/chevron-right.js')).chevronRightSvg,\n chevronTop: async () => (await import('../../assets/svg/chevron-top.js')).chevronTopSvg,\n chromeStore: async () => (await import('../../assets/svg/chrome-store.js')).chromeStoreSvg,\n clock: async () => (await import('../../assets/svg/clock.js')).clockSvg,\n close: async () => (await import('../../assets/svg/close.js')).closeSvg,\n compass: async () => (await import('../../assets/svg/compass.js')).compassSvg,\n coinPlaceholder: async () => (await import('../../assets/svg/coinPlaceholder.js')).coinPlaceholderSvg,\n copy: async () => (await import('../../assets/svg/copy.js')).copySvg,\n cursor: async () => (await import('../../assets/svg/cursor.js')).cursorSvg,\n cursorTransparent: async () => (await import('../../assets/svg/cursor-transparent.js')).cursorTransparentSvg,\n circle: async () => (await import('../../assets/svg/circle.js')).circleSvg,\n desktop: async () => (await import('../../assets/svg/desktop.js')).desktopSvg,\n disconnect: async () => (await import('../../assets/svg/disconnect.js')).disconnectSvg,\n discord: async () => (await import('../../assets/svg/discord.js')).discordSvg,\n ethereum: async () => (await import('../../assets/svg/ethereum.js')).ethereumSvg,\n etherscan: async () => (await import('../../assets/svg/etherscan.js')).etherscanSvg,\n extension: async () => (await import('../../assets/svg/extension.js')).extensionSvg,\n externalLink: async () => (await import('../../assets/svg/external-link.js')).externalLinkSvg,\n facebook: async () => (await import('../../assets/svg/facebook.js')).facebookSvg,\n farcaster: async () => (await import('../../assets/svg/farcaster.js')).farcasterSvg,\n filters: async () => (await import('../../assets/svg/filters.js')).filtersSvg,\n github: async () => (await import('../../assets/svg/github.js')).githubSvg,\n google: async () => (await import('../../assets/svg/google.js')).googleSvg,\n helpCircle: async () => (await import('../../assets/svg/help-circle.js')).helpCircleSvg,\n image: async () => (await import('../../assets/svg/image.js')).imageSvg,\n id: async () => (await import('../../assets/svg/id.js')).idSvg,\n infoCircle: async () => (await import('../../assets/svg/info-circle.js')).infoCircleSvg,\n lightbulb: async () => (await import('../../assets/svg/lightbulb.js')).lightbulbSvg,\n mail: async () => (await import('../../assets/svg/mail.js')).mailSvg,\n mobile: async () => (await import('../../assets/svg/mobile.js')).mobileSvg,\n more: async () => (await import('../../assets/svg/more.js')).moreSvg,\n networkPlaceholder: async () => (await import('../../assets/svg/network-placeholder.js')).networkPlaceholderSvg,\n nftPlaceholder: async () => (await import('../../assets/svg/nftPlaceholder.js')).nftPlaceholderSvg,\n off: async () => (await import('../../assets/svg/off.js')).offSvg,\n playStore: async () => (await import('../../assets/svg/play-store.js')).playStoreSvg,\n plus: async () => (await import('../../assets/svg/plus.js')).plusSvg,\n qrCode: async () => (await import('../../assets/svg/qr-code.js')).qrCodeIcon,\n recycleHorizontal: async () => (await import('../../assets/svg/recycle-horizontal.js')).recycleHorizontalSvg,\n refresh: async () => (await import('../../assets/svg/refresh.js')).refreshSvg,\n search: async () => (await import('../../assets/svg/search.js')).searchSvg,\n send: async () => (await import('../../assets/svg/send.js')).sendSvg,\n swapHorizontal: async () => (await import('../../assets/svg/swapHorizontal.js')).swapHorizontalSvg,\n swapHorizontalMedium: async () => (await import('../../assets/svg/swapHorizontalMedium.js')).swapHorizontalMediumSvg,\n swapHorizontalBold: async () => (await import('../../assets/svg/swapHorizontalBold.js')).swapHorizontalBoldSvg,\n swapHorizontalRoundedBold: async () => (await import('../../assets/svg/swapHorizontalRoundedBold.js')).swapHorizontalRoundedBoldSvg,\n swapVertical: async () => (await import('../../assets/svg/swapVertical.js')).swapVerticalSvg,\n solana: async () => (await import('../../assets/svg/solana.js')).solanaSvg,\n telegram: async () => (await import('../../assets/svg/telegram.js')).telegramSvg,\n threeDots: async () => (await import('../../assets/svg/three-dots.js')).threeDotsSvg,\n twitch: async () => (await import('../../assets/svg/twitch.js')).twitchSvg,\n twitter: async () => (await import('../../assets/svg/x.js')).xSvg,\n twitterIcon: async () => (await import('../../assets/svg/twitterIcon.js')).twitterIconSvg,\n user: async () => (await import('../../assets/svg/user.js')).userSvg,\n verify: async () => (await import('../../assets/svg/verify.js')).verifySvg,\n verifyFilled: async () => (await import('../../assets/svg/verify-filled.js')).verifyFilledSvg,\n wallet: async () => (await import('../../assets/svg/wallet.js')).walletSvg,\n walletConnect: async () => (await import('../../assets/svg/walletconnect.js')).walletConnectSvg,\n walletConnectLightBrown: async () => (await import('../../assets/svg/walletconnect.js')).walletConnectLightBrownSvg,\n walletConnectBrown: async () => (await import('../../assets/svg/walletconnect.js')).walletConnectBrownSvg,\n walletPlaceholder: async () => (await import('../../assets/svg/wallet-placeholder.js')).walletPlaceholderSvg,\n warningCircle: async () => (await import('../../assets/svg/warning-circle.js')).warningCircleSvg,\n x: async () => (await import('../../assets/svg/x.js')).xSvg,\n info: async () => (await import('../../assets/svg/info.js')).infoSvg,\n exclamationTriangle: async () => (await import('../../assets/svg/exclamation-triangle.js')).exclamationTriangleSvg,\n reown: async () => (await import('../../assets/svg/reown-logo.js')).reownSvg,\n 'x-mark': async () => (await import('../../assets/svg/x-mark.js')).xMarkSvg\n};\nasync function getSvg(name) {\n if (globalSvgCache.has(name)) {\n return globalSvgCache.get(name);\n }\n const importFn = ICONS[name] ?? ICONS.copy;\n const svgPromise = importFn();\n globalSvgCache.set(name, svgPromise);\n return svgPromise;\n}\nlet WuiIcon = class WuiIcon extends LitElement {\n constructor() {\n super(...arguments);\n this.size = 'md';\n this.name = 'copy';\n this.color = 'fg-300';\n this.aspectRatio = '1 / 1';\n }\n render() {\n this.style.cssText = `\n --local-color: ${`var(--wui-color-${this.color});`}\n --local-width: ${`var(--wui-icon-size-${this.size});`}\n --local-aspect-ratio: ${this.aspectRatio}\n `;\n return html `${until(getSvg(this.name), html `
`)}`;\n }\n};\nWuiIcon.styles = [resetStyles, colorStyles, styles];\n__decorate([\n property()\n], WuiIcon.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiIcon.prototype, \"name\", void 0);\n__decorate([\n property()\n], WuiIcon.prototype, \"color\", void 0);\n__decorate([\n property()\n], WuiIcon.prototype, \"aspectRatio\", void 0);\nWuiIcon = __decorate([\n customElement('wui-icon')\n], WuiIcon);\nexport { WuiIcon };\n//# sourceMappingURL=index.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { css } from 'lit';\nexport default css `\n :host {\n display: inline-flex !important;\n }\n\n slot {\n width: 100%;\n display: inline-block;\n font-style: normal;\n font-family: var(--wui-font-family);\n font-feature-settings:\n 'tnum' on,\n 'lnum' on,\n 'case' on;\n line-height: 130%;\n font-weight: var(--wui-font-weight-regular);\n overflow: inherit;\n text-overflow: inherit;\n text-align: var(--local-align);\n color: var(--local-color);\n }\n\n .wui-line-clamp-1 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n }\n\n .wui-line-clamp-2 {\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n\n .wui-font-medium-400 {\n font-size: var(--wui-font-size-medium);\n font-weight: var(--wui-font-weight-light);\n letter-spacing: var(--wui-letter-spacing-medium);\n }\n\n .wui-font-medium-600 {\n font-size: var(--wui-font-size-medium);\n letter-spacing: var(--wui-letter-spacing-medium);\n }\n\n .wui-font-title-600 {\n font-size: var(--wui-font-size-title);\n letter-spacing: var(--wui-letter-spacing-title);\n }\n\n .wui-font-title-6-600 {\n font-size: var(--wui-font-size-title-6);\n letter-spacing: var(--wui-letter-spacing-title-6);\n }\n\n .wui-font-mini-700 {\n font-size: var(--wui-font-size-mini);\n letter-spacing: var(--wui-letter-spacing-mini);\n text-transform: uppercase;\n }\n\n .wui-font-large-500,\n .wui-font-large-600,\n .wui-font-large-700 {\n font-size: var(--wui-font-size-large);\n letter-spacing: var(--wui-letter-spacing-large);\n }\n\n .wui-font-2xl-500,\n .wui-font-2xl-600,\n .wui-font-2xl-700 {\n font-size: var(--wui-font-size-2xl);\n letter-spacing: var(--wui-letter-spacing-2xl);\n }\n\n .wui-font-paragraph-400,\n .wui-font-paragraph-500,\n .wui-font-paragraph-600,\n .wui-font-paragraph-700 {\n font-size: var(--wui-font-size-paragraph);\n letter-spacing: var(--wui-letter-spacing-paragraph);\n }\n\n .wui-font-small-400,\n .wui-font-small-500,\n .wui-font-small-600 {\n font-size: var(--wui-font-size-small);\n letter-spacing: var(--wui-letter-spacing-small);\n }\n\n .wui-font-tiny-400,\n .wui-font-tiny-500,\n .wui-font-tiny-600 {\n font-size: var(--wui-font-size-tiny);\n letter-spacing: var(--wui-letter-spacing-tiny);\n }\n\n .wui-font-micro-700,\n .wui-font-micro-600,\n .wui-font-micro-500 {\n font-size: var(--wui-font-size-micro);\n letter-spacing: var(--wui-letter-spacing-micro);\n text-transform: uppercase;\n }\n\n .wui-font-tiny-400,\n .wui-font-small-400,\n .wui-font-medium-400,\n .wui-font-paragraph-400 {\n font-weight: var(--wui-font-weight-light);\n }\n\n .wui-font-large-700,\n .wui-font-paragraph-700,\n .wui-font-micro-700,\n .wui-font-mini-700 {\n font-weight: var(--wui-font-weight-bold);\n }\n\n .wui-font-medium-600,\n .wui-font-medium-title-600,\n .wui-font-title-6-600,\n .wui-font-large-600,\n .wui-font-paragraph-600,\n .wui-font-small-600,\n .wui-font-tiny-600,\n .wui-font-micro-600 {\n font-weight: var(--wui-font-weight-medium);\n }\n\n :host([disabled]) {\n opacity: 0.4;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiText = class WuiText extends LitElement {\n constructor() {\n super(...arguments);\n this.variant = 'paragraph-500';\n this.color = 'fg-300';\n this.align = 'left';\n this.lineClamp = undefined;\n }\n render() {\n const classes = {\n [`wui-font-${this.variant}`]: true,\n [`wui-color-${this.color}`]: true,\n [`wui-line-clamp-${this.lineClamp}`]: this.lineClamp ? true : false\n };\n this.style.cssText = `\n --local-align: ${this.align};\n --local-color: var(--wui-color-${this.color});\n `;\n return html ``;\n }\n};\nWuiText.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiText.prototype, \"variant\", void 0);\n__decorate([\n property()\n], WuiText.prototype, \"color\", void 0);\n__decorate([\n property()\n], WuiText.prototype, \"align\", void 0);\n__decorate([\n property()\n], WuiText.prototype, \"lineClamp\", void 0);\nWuiText = __decorate([\n customElement('wui-text')\n], WuiText);\nexport { WuiText };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n background-color: var(--wui-color-gray-glass-020);\n border-radius: var(--local-border-radius);\n border: var(--local-border);\n box-sizing: content-box;\n width: var(--local-size);\n height: var(--local-size);\n min-height: var(--local-size);\n min-width: var(--local-size);\n }\n\n @supports (background: color-mix(in srgb, white 50%, black)) {\n :host {\n background-color: color-mix(in srgb, var(--local-bg-value) var(--local-bg-mix), transparent);\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport { elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiIconBox = class WuiIconBox extends LitElement {\n constructor() {\n super(...arguments);\n this.size = 'md';\n this.backgroundColor = 'accent-100';\n this.iconColor = 'accent-100';\n this.background = 'transparent';\n this.border = false;\n this.borderColor = 'wui-color-bg-125';\n this.icon = 'copy';\n }\n render() {\n const iconSize = this.iconSize || this.size;\n const isLg = this.size === 'lg';\n const isXl = this.size === 'xl';\n const bgMix = isLg ? '12%' : '16%';\n const borderRadius = isLg ? 'xxs' : isXl ? 's' : '3xl';\n const isGray = this.background === 'gray';\n const isOpaque = this.background === 'opaque';\n const isColorChange = (this.backgroundColor === 'accent-100' && isOpaque) ||\n (this.backgroundColor === 'success-100' && isOpaque) ||\n (this.backgroundColor === 'error-100' && isOpaque) ||\n (this.backgroundColor === 'inverse-100' && isOpaque);\n let bgValueVariable = `var(--wui-color-${this.backgroundColor})`;\n if (isColorChange) {\n bgValueVariable = `var(--wui-icon-box-bg-${this.backgroundColor})`;\n }\n else if (isGray) {\n bgValueVariable = `var(--wui-color-gray-${this.backgroundColor})`;\n }\n this.style.cssText = `\n --local-bg-value: ${bgValueVariable};\n --local-bg-mix: ${isColorChange || isGray ? `100%` : bgMix};\n --local-border-radius: var(--wui-border-radius-${borderRadius});\n --local-size: var(--wui-icon-box-size-${this.size});\n --local-border: ${this.borderColor === 'wui-color-bg-125' ? `2px` : `1px`} solid ${this.border ? `var(--${this.borderColor})` : `transparent`}\n `;\n return html ` `;\n }\n};\nWuiIconBox.styles = [resetStyles, elementStyles, styles];\n__decorate([\n property()\n], WuiIconBox.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"backgroundColor\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"iconColor\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"iconSize\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"background\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiIconBox.prototype, \"border\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"borderColor\", void 0);\n__decorate([\n property()\n], WuiIconBox.prototype, \"icon\", void 0);\nWuiIconBox = __decorate([\n customElement('wui-icon-box')\n], WuiIconBox);\nexport { WuiIconBox };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n width: var(--local-width);\n height: var(--local-height);\n }\n\n :host([data-object-fit='cover']) img {\n object-fit: cover;\n object-position: center center;\n }\n\n :host([data-object-fit='contain']) img {\n object-fit: contain;\n object-position: center center;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { colorStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiImage = class WuiImage extends LitElement {\n constructor() {\n super(...arguments);\n this.src = './path/to/image.jpg';\n this.alt = 'Image';\n this.size = undefined;\n this.objectFit = 'cover';\n }\n render() {\n if (this.objectFit) {\n this.dataset['objectFit'] = this.objectFit;\n }\n this.style.cssText = `\n --local-width: ${this.size ? `var(--wui-icon-size-${this.size});` : '100%'};\n --local-height: ${this.size ? `var(--wui-icon-size-${this.size});` : '100%'};\n `;\n return html `${this.alt}`;\n }\n handleImageError() {\n this.dispatchEvent(new CustomEvent('onLoadError', { bubbles: true, composed: true }));\n }\n};\nWuiImage.styles = [resetStyles, colorStyles, styles];\n__decorate([\n property()\n], WuiImage.prototype, \"src\", void 0);\n__decorate([\n property()\n], WuiImage.prototype, \"alt\", void 0);\n__decorate([\n property()\n], WuiImage.prototype, \"size\", void 0);\n__decorate([\n property()\n], WuiImage.prototype, \"objectFit\", void 0);\nWuiImage = __decorate([\n customElement('wui-image')\n], WuiImage);\nexport { WuiImage };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n justify-content: center;\n align-items: center;\n height: var(--wui-spacing-m);\n padding: 0 var(--wui-spacing-3xs) !important;\n border-radius: var(--wui-border-radius-5xs);\n transition:\n border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1),\n background-color var(--wui-duration-lg) var(--wui-ease-out-power-1);\n will-change: border-radius, background-color;\n }\n\n :host > wui-text {\n transform: translateY(5%);\n }\n\n :host([data-variant='main']) {\n background-color: var(--wui-color-accent-glass-015);\n color: var(--wui-color-accent-100);\n }\n\n :host([data-variant='shade']) {\n background-color: var(--wui-color-gray-glass-010);\n color: var(--wui-color-fg-200);\n }\n\n :host([data-variant='success']) {\n background-color: var(--wui-icon-box-bg-success-100);\n color: var(--wui-color-success-100);\n }\n\n :host([data-variant='error']) {\n background-color: var(--wui-icon-box-bg-error-100);\n color: var(--wui-color-error-100);\n }\n\n :host([data-size='lg']) {\n padding: 11px 5px !important;\n }\n\n :host([data-size='lg']) > wui-text {\n transform: translateY(2%);\n }\n\n :host([data-size='xs']) {\n height: var(--wui-spacing-2l);\n padding: 0 var(--wui-spacing-3xs) !important;\n }\n\n :host([data-size='xs']) > wui-text {\n transform: translateY(2%);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-text/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiTag = class WuiTag extends LitElement {\n constructor() {\n super(...arguments);\n this.variant = 'main';\n this.size = 'lg';\n }\n render() {\n this.dataset['variant'] = this.variant;\n this.dataset['size'] = this.size;\n const textVariant = this.size === 'md' || this.size === 'xs' ? 'mini-700' : 'micro-700';\n return html `\n \n \n \n `;\n }\n};\nWuiTag.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiTag.prototype, \"variant\", void 0);\n__decorate([\n property()\n], WuiTag.prototype, \"size\", void 0);\nWuiTag = __decorate([\n customElement('wui-tag')\n], WuiTag);\nexport { WuiTag };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n }\n\n :host([data-size='sm']) > svg {\n width: 12px;\n height: 12px;\n }\n\n :host([data-size='md']) > svg {\n width: 16px;\n height: 16px;\n }\n\n :host([data-size='lg']) > svg {\n width: 24px;\n height: 24px;\n }\n\n :host([data-size='xl']) > svg {\n width: 32px;\n height: 32px;\n }\n\n svg {\n animation: rotate 2s linear infinite;\n }\n\n circle {\n fill: none;\n stroke: var(--local-color);\n stroke-width: 4px;\n stroke-dasharray: 1, 124;\n stroke-dashoffset: 0;\n stroke-linecap: round;\n animation: dash 1.5s ease-in-out infinite;\n }\n\n :host([data-size='md']) > svg > circle {\n stroke-width: 6px;\n }\n\n :host([data-size='sm']) > svg > circle {\n stroke-width: 8px;\n }\n\n @keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n @keyframes dash {\n 0% {\n stroke-dasharray: 1, 124;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 90, 124;\n stroke-dashoffset: -35;\n }\n\n 100% {\n stroke-dashoffset: -125;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiLoadingSpinner = class WuiLoadingSpinner extends LitElement {\n constructor() {\n super(...arguments);\n this.color = 'accent-100';\n this.size = 'lg';\n }\n render() {\n this.style.cssText = `--local-color: ${this.color === 'inherit' ? 'inherit' : `var(--wui-color-${this.color})`}`;\n this.dataset['size'] = this.size;\n return html `\n \n `;\n }\n};\nWuiLoadingSpinner.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiLoadingSpinner.prototype, \"color\", void 0);\n__decorate([\n property()\n], WuiLoadingSpinner.prototype, \"size\", void 0);\nWuiLoadingSpinner = __decorate([\n customElement('wui-loading-spinner')\n], WuiLoadingSpinner);\nexport { WuiLoadingSpinner };\n//# sourceMappingURL=index.js.map"],"file":"assets/index-BRPyA7QR.js"} \ No newline at end of file diff --git a/dist/assets/index-DeQQl86x.css b/dist/assets/index-DeQQl86x.css new file mode 100644 index 0000000..20914a9 --- /dev/null +++ b/dist/assets/index-DeQQl86x.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&family=Fira+Code:wght@400;500&display=swap";:root{color-scheme:dark;--color-bg: #050607;--color-panel: #0f1114;--color-panel-alt: #14171b;--color-accent: #f97316;--color-secondary: #3f6212;--color-text: #f4f4f5;--color-muted: #9ca3af;font-family:Nunito,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg);color:var(--color-text)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background-color:var(--color-bg)}#root{min-height:100vh;position:relative;overflow:hidden}a{color:inherit}button{font-family:inherit}.animated-background{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:.42}.app-shell{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;gap:32px;padding:48px clamp(24px,4vw,64px) 80px;background:linear-gradient(180deg,#050607f5,#050607f0)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;flex-direction:column;gap:4px}.brand h1{margin:0;font-size:clamp(28px,3vw,40px);font-weight:700;letter-spacing:-.02em}.brand p{margin:0;font-size:15px;color:var(--color-muted)}.wallet-actions{display:flex;align-items:center;gap:12px}button.primary{background:var(--color-accent);color:#0b0d0f;border:none;padding:12px 20px;border-radius:10px;font-weight:600;transition:transform .2s ease,filter .2s ease;cursor:pointer}button.primary:hover{filter:brightness(1.1);transform:translateY(-1px)}button.neutral{background:transparent;border:1px solid rgba(249,115,22,.45);color:var(--color-accent);padding:10px 18px;border-radius:10px;font-weight:500;cursor:pointer}button.secondary{background:var(--color-secondary);color:#f8fafc;border:none;padding:10px 18px;border-radius:10px;font-weight:600;cursor:pointer;transition:transform .2s ease,filter .2s ease}button.secondary:hover{filter:brightness(1.1);transform:translateY(-1px)}button.ghost{background:transparent;border:1px solid rgba(63,98,18,.55);color:var(--color-secondary);padding:10px 18px;border-radius:10px;font-weight:500;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed;transform:none}.panel{background:linear-gradient(145deg,#14171bf5,#0d0f12eb);border:1px solid rgba(63,98,18,.18);border-radius:18px;padding:clamp(20px,4vw,28px);display:flex;flex-direction:column;gap:20px;position:relative;overflow:hidden}.panel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at top right,rgba(249,115,22,.15),transparent 55%),radial-gradient(circle at bottom left,rgba(63,98,18,.15),transparent 55%);pointer-events:none}.panel h2{margin:0;font-size:20px;font-weight:600}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:8px;position:relative;z-index:1}.field label{font-size:14px;font-weight:600;color:var(--color-muted)}.field input,.field select{background:#080a0ccc;border:1px solid rgba(63,98,18,.25);border-radius:10px;padding:12px 14px;color:var(--color-text);font-family:Nunito,sans-serif;font-size:15px}.field small{color:#f97316b8;font-family:Fira Code,monospace}.plan-list{display:grid;gap:20px}.plan-card{background:#0c0e11eb;border:1px solid rgba(63,98,18,.25);border-radius:16px;padding:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;position:relative}.plan-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at top left,rgba(249,115,22,.12),transparent 60%);pointer-events:none}.plan-meta{display:flex;flex-direction:column;gap:8px;font-family:Fira Code,monospace;font-size:14px}.plan-meta span{color:var(--color-muted)}.plan-actions{display:flex;flex-direction:column;gap:12px}.plan-actions .topup-row{display:flex;gap:12px;align-items:center}.badge{display:inline-flex;align-items:center;gap:6px;background:#3f62122e;border:1px solid rgba(63,98,18,.4);border-radius:999px;padding:6px 12px;font-size:13px;color:var(--color-secondary)}.message{font-size:14px;color:var(--color-muted)}.toast-container{position:fixed;top:80px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:12px;max-width:420px}.toast{display:flex;align-items:center;gap:12px;background:#0f1114fa;border:1px solid rgba(63,98,18,.4);border-radius:12px;padding:14px 16px;box-shadow:0 8px 24px #0006;animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-success{border-color:#22c55e80}.toast-error{border-color:#ef444480}.toast-pending{border-color:#f9731680}.toast-info{border-color:#3b82f680}.toast-icon{font-size:18px;flex-shrink:0}.toast-message{flex:1;font-size:14px;color:var(--color-text)}.toast-close{background:none;border:none;color:var(--color-muted);font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s}.toast-close:hover{background:#ffffff1a}.countdown{display:inline-block;padding:8px 14px;background:#3f621226;border:1px solid rgba(63,98,18,.35);border-radius:8px;font-size:13px;color:var(--color-text);font-family:Fira Code,monospace}.countdown.ready{background:#22c55e26;border-color:#22c55e66;color:#4ade80}.countdown strong{color:var(--color-accent)}.plan-history{grid-column:1 / -1;padding-top:16px;border-top:1px solid rgba(63,98,18,.2)}.plan-history h4{margin:0 0 12px;font-size:15px;font-weight:600;color:var(--color-text)}.history-timeline{display:flex;flex-direction:column;gap:10px}.history-event{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:10px 12px;background:#080a0c99;border-radius:8px;font-size:13px;font-family:Fira Code,monospace}.history-date{color:var(--color-muted);font-weight:500}.history-desc{color:var(--color-text)}.history-create{border-left:3px solid rgba(249,115,22,.6)}.history-claim{border-left:3px solid rgba(34,197,94,.6)}.history-topup{border-left:3px solid rgba(59,130,246,.6)}.qr-share{display:flex;flex-direction:column;gap:12px}.qr-content{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:#080a0c99;border-radius:10px}.qr-image{border-radius:8px;background:#fff;padding:12px}.qr-link{display:flex;gap:8px;width:100%}.share-input{flex:1;background:#080a0ccc;border:1px solid rgba(249,115,22,.25);border-radius:8px;padding:10px 12px;color:var(--color-text);font-family:Fira Code,monospace;font-size:12px}.fee-estimator{padding:16px;background:#3f62121a;border:1px solid rgba(63,98,18,.25);border-radius:12px;display:flex;flex-direction:column;gap:10px}.fee-estimator h4{margin:0 0 8px;font-size:15px;font-weight:600;color:var(--color-text)}.fee-row{display:flex;justify-content:space-between;align-items:center;font-size:14px;font-family:Fira Code,monospace}.fee-row span{color:var(--color-muted)}.fee-row strong,.fee-row em{color:var(--color-text)}.fee-total{padding-top:10px;border-top:1px solid rgba(63,98,18,.3);font-weight:600}.fee-total strong{color:var(--color-accent)}.faucet-helper{background:linear-gradient(145deg,#f9731626,#f9731614);border:1px solid rgba(249,115,22,.3);border-radius:16px;padding:20px;display:flex;align-items:center;justify-content:space-between;gap:16px}.faucet-content{display:flex;align-items:center;gap:16px}.faucet-content span{font-size:32px}.faucet-content p{margin:0}.faucet-link{background:var(--color-accent);color:#0b0d0f;padding:12px 20px;border-radius:10px;text-decoration:none;font-weight:600;transition:transform .2s,filter .2s}.faucet-link:hover{transform:translateY(-1px);filter:brightness(1.1)}.view-switcher{display:flex;gap:12px;background:#0c0e11cc;border:1px solid rgba(63,98,18,.2);border-radius:12px;padding:8px}.view-switcher button{flex:1;background:transparent;border:none;color:var(--color-muted);padding:10px 16px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s}.view-switcher button.active{background:var(--color-accent);color:#0b0d0f}.view-switcher button:hover:not(.active){background:#3f621226;color:var(--color-text)}.customer-portal,.merchant-portal{display:flex;flex-direction:column;gap:24px}.portal-header{display:flex;flex-direction:column;gap:6px}.portal-header h3{margin:0;font-size:24px;font-weight:700}.portal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.stat-card{background:#0c0e11cc;border:1px solid rgba(63,98,18,.25);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:8px}.stat-card.stat-highlight{border-color:#f9731666;background:#f9731614}.stat-label{font-size:13px;color:var(--color-muted);font-weight:500}.stat-value{font-size:28px;font-weight:700;color:var(--color-text);font-family:Fira Code,monospace}.stat-subtitle{font-size:12px;color:var(--color-muted)}.portal-empty{background:#0c0e11cc;border:1px solid rgba(63,98,18,.2);border-radius:16px;padding:40px;text-align:center}.portal-empty h3{margin:0 0 12px;font-size:20px}.claim-all-section{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:12px;padding:20px;display:flex;flex-direction:column;align-items:center;gap:10px}.portal-plan-wrapper{display:flex;flex-direction:column;gap:10px}.readonly-view{display:flex;flex-direction:column;gap:16px}.readonly-section{max-width:800px;margin:0 auto}.readonly-section .panel{background:#0c0e11cc}.lookup-form{display:flex;gap:12px}.lookup-input{flex:1;background:#080a0ccc;border:1px solid rgba(63,98,18,.25);border-radius:10px;padding:12px 14px;color:var(--color-text);font-family:Fira Code,monospace;font-size:14px}.app-footer{display:flex;flex-direction:column;gap:12px;padding:20px;background:#0c0e1199;border-radius:12px;margin-top:20px}.footer-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-family:Fira Code,monospace;font-size:14px}.footer-stats strong{color:var(--color-accent)}@media (max-width: 720px){.app-shell{padding:32px 20px 60px;gap:24px}.plan-card{grid-template-columns:1fr}.plan-actions .topup-row{flex-direction:column;align-items:stretch}.toast-container{right:12px;left:12px;max-width:none}.portal-stats,.history-event{grid-template-columns:1fr}.lookup-form{flex-direction:column}.faucet-helper{flex-direction:column;text-align:center}}.landing-page{display:flex;flex-direction:column;gap:0;max-width:1400px;margin:0 auto}.hero-section{padding:60px 0 80px;text-align:center}.hero-badge{display:inline-flex;align-items:center;gap:8px;background:#f9731626;border:1px solid rgba(249,115,22,.3);border-radius:999px;padding:8px 16px;margin-bottom:24px;font-size:13px;font-weight:600;color:var(--color-accent)}.pulse-dot{width:8px;height:8px;background:var(--color-accent);border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}.hero-title{font-size:clamp(36px,5vw,56px);font-weight:700;line-height:1.1;max-width:900px;margin:0 auto 20px}.hero-title .accent{color:var(--color-accent);position:relative}.hero-subtitle{font-size:clamp(16px,2vw,20px);line-height:1.6;color:var(--color-muted);max-width:700px;margin:0 auto 40px}.hero-actions{display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:wrap;margin-bottom:60px}button.large,a.large{padding:16px 32px;font-size:16px;border-radius:12px}a.secondary{background:#3f621233;border:1px solid rgba(63,98,18,.4);color:var(--color-text);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;font-weight:600;transition:all .2s}a.secondary:hover{background:#3f62124d;border-color:#3f621299;transform:translateY(-2px)}.hero-stats{display:flex;gap:48px;justify-content:center;flex-wrap:wrap}.stat-item{display:flex;flex-direction:column;gap:4px;align-items:center}.stat-item strong{font-size:32px;font-weight:700;color:var(--color-accent);font-family:Fira Code,monospace}.stat-item span{font-size:14px;color:var(--color-muted)}.section{padding:80px 0;border-top:1px solid rgba(63,98,18,.1)}.section.alt-bg{background:#0c0e1166}.section-title{font-size:clamp(32px,4vw,42px);font-weight:700;text-align:center;margin:0 0 16px}.section-subtitle{text-align:center;color:var(--color-muted);font-size:18px;max-width:600px;margin:0 auto 48px}.steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:32px;margin-top:48px}.step-card{background:#0c0e11cc;border:1px solid rgba(63,98,18,.25);border-radius:16px;padding:32px;position:relative;transition:transform .3s,border-color .3s}.step-card:hover{transform:translateY(-4px);border-color:#f9731666}.step-number{position:absolute;top:-16px;left:32px;width:48px;height:48px;background:var(--color-accent);color:#0b0d0f;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;box-shadow:0 4px 12px #f973164d}.step-card h3{margin:20px 0 12px;font-size:22px;font-weight:600}.step-card p{color:var(--color-muted);line-height:1.6;margin-bottom:16px}.step-example{background:#f973161a;border-left:3px solid var(--color-accent);padding:12px 16px;border-radius:6px;font-size:14px;font-family:Fira Code,monospace}.step-example strong{color:var(--color-accent)}.usecases-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-top:48px}.usecase-card{background:#0c0e1199;border:1px solid rgba(63,98,18,.2);border-radius:14px;padding:28px;text-align:center;transition:all .3s}.usecase-card:hover{transform:translateY(-4px);border-color:#3f621266;background:#0c0e11cc}.usecase-icon{font-size:48px;margin-bottom:16px}.usecase-card h3{margin:0 0 12px;font-size:18px;font-weight:600}.usecase-card p{color:var(--color-muted);line-height:1.5;margin:0;font-size:14px}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:28px;margin-top:48px}.feature-card{background:#0c0e1199;border:1px solid rgba(63,98,18,.2);border-radius:14px;padding:32px;transition:all .3s}.feature-card:hover{border-color:#f9731666;transform:translateY(-2px)}.feature-icon{font-size:40px;margin-bottom:16px}.feature-card h3{margin:0 0 12px;font-size:20px;font-weight:600}.feature-card p{color:var(--color-muted);line-height:1.6;margin:0}.blockchain-section{background:linear-gradient(135deg,#f9731614,#3f621214)}.blockchain-content{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.blockchain-text h2{font-size:36px;margin:0 0 20px}.blockchain-text p{color:var(--color-muted);line-height:1.7;margin-bottom:24px}.benefits-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:16px}.benefits-list li{padding-left:32px;position:relative;line-height:1.6}.benefits-list li:before{content:"✓";position:absolute;left:0;color:var(--color-accent);font-weight:700;font-size:18px}.benefits-list strong{color:var(--color-text)}.blockchain-visual{display:flex;justify-content:center;align-items:center}.chain-box{background:#0c0e11cc;border:2px solid rgba(249,115,22,.3);border-radius:16px;padding:32px;display:flex;flex-direction:column;gap:12px}.chain-item{background:#f9731626;border:1px solid rgba(249,115,22,.4);border-radius:10px;padding:16px 24px;text-align:center;font-weight:600;font-family:Fira Code,monospace}.chain-arrow{text-align:center;font-size:24px;color:var(--color-accent);font-weight:700}.faq-section{background:#0c0e114d}.faq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:28px;margin-top:48px}.faq-item{background:#0c0e11cc;border:1px solid rgba(63,98,18,.2);border-radius:12px;padding:28px}.faq-item h3{margin:0 0 12px;font-size:18px;font-weight:600;color:var(--color-accent)}.faq-item p{color:var(--color-muted);line-height:1.6;margin:0}.cta-section{text-align:center;padding:100px 0;background:linear-gradient(135deg,#f973161a,#3f62121a)}.cta-section h2{font-size:42px;margin:0 0 16px}.cta-section p{color:var(--color-muted);font-size:18px;max-width:600px;margin:0 auto 32px}.cta-note{font-size:14px;margin-top:16px!important;font-style:italic}@media (max-width: 900px){.blockchain-content{grid-template-columns:1fr}.blockchain-visual{order:-1}.steps-grid,.faq-grid{grid-template-columns:1fr}}@media (max-width: 720px){.hero-actions{flex-direction:column;width:100%}.hero-actions button,.hero-actions a{width:100%}.hero-stats{gap:32px}.section{padding:48px 0}} diff --git a/dist/assets/info-C_X6HmcT.js b/dist/assets/info-C_X6HmcT.js new file mode 100644 index 0000000..097191a --- /dev/null +++ b/dist/assets/info-C_X6HmcT.js @@ -0,0 +1,4 @@ +import{p as C}from"./index-B95lHF7v.js";const t=C` + +`;export{t as infoSvg}; +//# sourceMappingURL=info-C_X6HmcT.js.map diff --git a/dist/assets/info-C_X6HmcT.js.map b/dist/assets/info-C_X6HmcT.js.map new file mode 100644 index 0000000..cd354b3 --- /dev/null +++ b/dist/assets/info-C_X6HmcT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"info-C_X6HmcT.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/info.js"],"sourcesContent":["import { svg } from 'lit';\nexport const infoSvg = svg `\n\n`;\n//# sourceMappingURL=info.js.map"],"names":["infoSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/info-circle-CjYdabGx.js b/dist/assets/info-circle-CjYdabGx.js new file mode 100644 index 0000000..eb8967c --- /dev/null +++ b/dist/assets/info-circle-CjYdabGx.js @@ -0,0 +1,13 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + + +`;export{e as infoCircleSvg}; +//# sourceMappingURL=info-circle-CjYdabGx.js.map diff --git a/dist/assets/info-circle-CjYdabGx.js.map b/dist/assets/info-circle-CjYdabGx.js.map new file mode 100644 index 0000000..f06ac46 --- /dev/null +++ b/dist/assets/info-circle-CjYdabGx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"info-circle-CjYdabGx.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/info-circle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const infoCircleSvg = svg `\n \n \n`;\n//# sourceMappingURL=info-circle.js.map"],"names":["infoCircleSvg","svg"],"mappings":"wCACY,MAACA,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/lightbulb-C1Mhwh6G.js b/dist/assets/lightbulb-C1Mhwh6G.js new file mode 100644 index 0000000..e9052cb --- /dev/null +++ b/dist/assets/lightbulb-C1Mhwh6G.js @@ -0,0 +1,4 @@ +import{p as C}from"./index-B95lHF7v.js";const e=C` + +`;export{e as lightbulbSvg}; +//# sourceMappingURL=lightbulb-C1Mhwh6G.js.map diff --git a/dist/assets/lightbulb-C1Mhwh6G.js.map b/dist/assets/lightbulb-C1Mhwh6G.js.map new file mode 100644 index 0000000..d1f6de3 --- /dev/null +++ b/dist/assets/lightbulb-C1Mhwh6G.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lightbulb-C1Mhwh6G.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/lightbulb.js"],"sourcesContent":["import { svg } from 'lit';\nexport const lightbulbSvg = svg `\n\n`;\n//# sourceMappingURL=lightbulb.js.map"],"names":["lightbulbSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/mail-B8tJqHWT.js b/dist/assets/mail-B8tJqHWT.js new file mode 100644 index 0000000..af0c931 --- /dev/null +++ b/dist/assets/mail-B8tJqHWT.js @@ -0,0 +1,9 @@ +import{p as c}from"./index-B95lHF7v.js";const e=c` + +`;export{e as mailSvg}; +//# sourceMappingURL=mail-B8tJqHWT.js.map diff --git a/dist/assets/mail-B8tJqHWT.js.map b/dist/assets/mail-B8tJqHWT.js.map new file mode 100644 index 0000000..e5e79a9 --- /dev/null +++ b/dist/assets/mail-B8tJqHWT.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mail-B8tJqHWT.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/mail.js"],"sourcesContent":["import { svg } from 'lit';\nexport const mailSvg = svg `\n \n`;\n//# sourceMappingURL=mail.js.map"],"names":["mailSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/mobile-BVxQjUau.js b/dist/assets/mobile-BVxQjUau.js new file mode 100644 index 0000000..4b897f1 --- /dev/null +++ b/dist/assets/mobile-BVxQjUau.js @@ -0,0 +1,10 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + + +`;export{e as mobileSvg}; +//# sourceMappingURL=mobile-BVxQjUau.js.map diff --git a/dist/assets/mobile-BVxQjUau.js.map b/dist/assets/mobile-BVxQjUau.js.map new file mode 100644 index 0000000..de3d061 --- /dev/null +++ b/dist/assets/mobile-BVxQjUau.js.map @@ -0,0 +1 @@ +{"version":3,"file":"mobile-BVxQjUau.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/mobile.js"],"sourcesContent":["import { svg } from 'lit';\nexport const mobileSvg = svg `\n \n \n`;\n//# sourceMappingURL=mobile.js.map"],"names":["mobileSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/more-DirowUTI.js b/dist/assets/more-DirowUTI.js new file mode 100644 index 0000000..5b31b53 --- /dev/null +++ b/dist/assets/more-DirowUTI.js @@ -0,0 +1,12 @@ +import{p as l}from"./index-B95lHF7v.js";const a=l` + + +`;export{a as moreSvg}; +//# sourceMappingURL=more-DirowUTI.js.map diff --git a/dist/assets/more-DirowUTI.js.map b/dist/assets/more-DirowUTI.js.map new file mode 100644 index 0000000..eaf85ab --- /dev/null +++ b/dist/assets/more-DirowUTI.js.map @@ -0,0 +1 @@ +{"version":3,"file":"more-DirowUTI.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/more.js"],"sourcesContent":["import { svg } from 'lit';\nexport const moreSvg = svg `\n \n \n`;\n//# sourceMappingURL=more.js.map"],"names":["moreSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/network-placeholder-D8O-PwqW.js b/dist/assets/network-placeholder-D8O-PwqW.js new file mode 100644 index 0000000..057e570 --- /dev/null +++ b/dist/assets/network-placeholder-D8O-PwqW.js @@ -0,0 +1,15 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + + +`;export{e as networkPlaceholderSvg}; +//# sourceMappingURL=network-placeholder-D8O-PwqW.js.map diff --git a/dist/assets/network-placeholder-D8O-PwqW.js.map b/dist/assets/network-placeholder-D8O-PwqW.js.map new file mode 100644 index 0000000..485cde5 --- /dev/null +++ b/dist/assets/network-placeholder-D8O-PwqW.js.map @@ -0,0 +1 @@ +{"version":3,"file":"network-placeholder-D8O-PwqW.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/network-placeholder.js"],"sourcesContent":["import { svg } from 'lit';\nexport const networkPlaceholderSvg = svg `\n \n \n`;\n//# sourceMappingURL=network-placeholder.js.map"],"names":["networkPlaceholderSvg","svg"],"mappings":"wCACY,MAACA,EAAwBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/nftPlaceholder-DFnA2y31.js b/dist/assets/nftPlaceholder-DFnA2y31.js new file mode 100644 index 0000000..e5d51a2 --- /dev/null +++ b/dist/assets/nftPlaceholder-DFnA2y31.js @@ -0,0 +1,9 @@ +import{p as c}from"./index-B95lHF7v.js";const l=c` + +`;export{l as nftPlaceholderSvg}; +//# sourceMappingURL=nftPlaceholder-DFnA2y31.js.map diff --git a/dist/assets/nftPlaceholder-DFnA2y31.js.map b/dist/assets/nftPlaceholder-DFnA2y31.js.map new file mode 100644 index 0000000..7d69516 --- /dev/null +++ b/dist/assets/nftPlaceholder-DFnA2y31.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nftPlaceholder-DFnA2y31.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/nftPlaceholder.js"],"sourcesContent":["import { svg } from 'lit';\nexport const nftPlaceholderSvg = svg `\n \n`;\n//# sourceMappingURL=nftPlaceholder.js.map"],"names":["nftPlaceholderSvg","svg"],"mappings":"wCACY,MAACA,EAAoBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/off-B4m7aBiQ.js b/dist/assets/off-B4m7aBiQ.js new file mode 100644 index 0000000..b5e1542 --- /dev/null +++ b/dist/assets/off-B4m7aBiQ.js @@ -0,0 +1,5 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + + +`;export{l as offSvg}; +//# sourceMappingURL=off-B4m7aBiQ.js.map diff --git a/dist/assets/off-B4m7aBiQ.js.map b/dist/assets/off-B4m7aBiQ.js.map new file mode 100644 index 0000000..8d9b4a0 --- /dev/null +++ b/dist/assets/off-B4m7aBiQ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"off-B4m7aBiQ.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/off.js"],"sourcesContent":["import { svg } from 'lit';\nexport const offSvg = svg `\n\n\n`;\n//# sourceMappingURL=off.js.map"],"names":["offSvg","svg"],"mappings":"wCACY,MAACA,EAASC;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/play-store-C1NQXTif.js b/dist/assets/play-store-C1NQXTif.js new file mode 100644 index 0000000..2c70787 --- /dev/null +++ b/dist/assets/play-store-C1NQXTif.js @@ -0,0 +1,33 @@ +import{p as a}from"./index-B95lHF7v.js";const t=a` + + + + + + +`;export{t as playStoreSvg}; +//# sourceMappingURL=play-store-C1NQXTif.js.map diff --git a/dist/assets/play-store-C1NQXTif.js.map b/dist/assets/play-store-C1NQXTif.js.map new file mode 100644 index 0000000..ee5f671 --- /dev/null +++ b/dist/assets/play-store-C1NQXTif.js.map @@ -0,0 +1 @@ +{"version":3,"file":"play-store-C1NQXTif.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/play-store.js"],"sourcesContent":["import { svg } from 'lit';\nexport const playStoreSvg = svg ` \n \n \n \n \n \n \n`;\n//# sourceMappingURL=play-store.js.map"],"names":["playStoreSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/plus-hU2L2mIL.js b/dist/assets/plus-hU2L2mIL.js new file mode 100644 index 0000000..9e22aa1 --- /dev/null +++ b/dist/assets/plus-hU2L2mIL.js @@ -0,0 +1,14 @@ +import{p as e}from"./index-B95lHF7v.js";const o=e` + `;export{o as plusSvg}; +//# sourceMappingURL=plus-hU2L2mIL.js.map diff --git a/dist/assets/plus-hU2L2mIL.js.map b/dist/assets/plus-hU2L2mIL.js.map new file mode 100644 index 0000000..03a27bf --- /dev/null +++ b/dist/assets/plus-hU2L2mIL.js.map @@ -0,0 +1 @@ +{"version":3,"file":"plus-hU2L2mIL.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/plus.js"],"sourcesContent":["import { svg } from 'lit';\nexport const plusSvg = svg `\n `;\n//# sourceMappingURL=plus.js.map"],"names":["plusSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/qr-code-K0b18fY4.js b/dist/assets/qr-code-K0b18fY4.js new file mode 100644 index 0000000..207ce83 --- /dev/null +++ b/dist/assets/qr-code-K0b18fY4.js @@ -0,0 +1,7 @@ +import{p as a}from"./index-B95lHF7v.js";const s=a` + +`;export{s as qrCodeIcon}; +//# sourceMappingURL=qr-code-K0b18fY4.js.map diff --git a/dist/assets/qr-code-K0b18fY4.js.map b/dist/assets/qr-code-K0b18fY4.js.map new file mode 100644 index 0000000..2ca7524 --- /dev/null +++ b/dist/assets/qr-code-K0b18fY4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"qr-code-K0b18fY4.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/qr-code.js"],"sourcesContent":["import { svg } from 'lit';\nexport const qrCodeIcon = svg `\n \n`;\n//# sourceMappingURL=qr-code.js.map"],"names":["qrCodeIcon","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/recycle-horizontal-rLqrqUbz.js b/dist/assets/recycle-horizontal-rLqrqUbz.js new file mode 100644 index 0000000..6b5aa6c --- /dev/null +++ b/dist/assets/recycle-horizontal-rLqrqUbz.js @@ -0,0 +1,10 @@ +import{p as C}from"./index-B95lHF7v.js";const o=C` + `;export{o as recycleHorizontalSvg}; +//# sourceMappingURL=recycle-horizontal-rLqrqUbz.js.map diff --git a/dist/assets/recycle-horizontal-rLqrqUbz.js.map b/dist/assets/recycle-horizontal-rLqrqUbz.js.map new file mode 100644 index 0000000..968a74d --- /dev/null +++ b/dist/assets/recycle-horizontal-rLqrqUbz.js.map @@ -0,0 +1 @@ +{"version":3,"file":"recycle-horizontal-rLqrqUbz.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/recycle-horizontal.js"],"sourcesContent":["import { svg } from 'lit';\nexport const recycleHorizontalSvg = svg `\n `;\n//# sourceMappingURL=recycle-horizontal.js.map"],"names":["recycleHorizontalSvg","svg"],"mappings":"wCACY,MAACA,EAAuBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/refresh-AdtYjUNS.js b/dist/assets/refresh-AdtYjUNS.js new file mode 100644 index 0000000..9682e44 --- /dev/null +++ b/dist/assets/refresh-AdtYjUNS.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as refreshSvg}; +//# sourceMappingURL=refresh-AdtYjUNS.js.map diff --git a/dist/assets/refresh-AdtYjUNS.js.map b/dist/assets/refresh-AdtYjUNS.js.map new file mode 100644 index 0000000..66f538c --- /dev/null +++ b/dist/assets/refresh-AdtYjUNS.js.map @@ -0,0 +1 @@ +{"version":3,"file":"refresh-AdtYjUNS.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/refresh.js"],"sourcesContent":["import { svg } from 'lit';\nexport const refreshSvg = svg `\n \n`;\n//# sourceMappingURL=refresh.js.map"],"names":["refreshSvg","svg"],"mappings":"wCACY,MAACA,EAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/reown-logo-0va3RhSP.js b/dist/assets/reown-logo-0va3RhSP.js new file mode 100644 index 0000000..446bcb6 --- /dev/null +++ b/dist/assets/reown-logo-0va3RhSP.js @@ -0,0 +1,13 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + + + + + + + + + + +`;export{l as reownSvg}; +//# sourceMappingURL=reown-logo-0va3RhSP.js.map diff --git a/dist/assets/reown-logo-0va3RhSP.js.map b/dist/assets/reown-logo-0va3RhSP.js.map new file mode 100644 index 0000000..b750ab2 --- /dev/null +++ b/dist/assets/reown-logo-0va3RhSP.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reown-logo-0va3RhSP.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/reown-logo.js"],"sourcesContent":["import { svg } from 'lit';\nexport const reownSvg = svg `\n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=reown-logo.js.map"],"names":["reownSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/search-BiVLLbOl.js b/dist/assets/search-BiVLLbOl.js new file mode 100644 index 0000000..e008173 --- /dev/null +++ b/dist/assets/search-BiVLLbOl.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as searchSvg}; +//# sourceMappingURL=search-BiVLLbOl.js.map diff --git a/dist/assets/search-BiVLLbOl.js.map b/dist/assets/search-BiVLLbOl.js.map new file mode 100644 index 0000000..8a02991 --- /dev/null +++ b/dist/assets/search-BiVLLbOl.js.map @@ -0,0 +1 @@ +{"version":3,"file":"search-BiVLLbOl.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/search.js"],"sourcesContent":["import { svg } from 'lit';\nexport const searchSvg = svg `\n \n`;\n//# sourceMappingURL=search.js.map"],"names":["searchSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/secp256k1-BE_Tifw7.js b/dist/assets/secp256k1-BE_Tifw7.js new file mode 100644 index 0000000..b88df2b --- /dev/null +++ b/dist/assets/secp256k1-BE_Tifw7.js @@ -0,0 +1,2 @@ +import{L as Qt,N as At,Q as mt,U as Jt,V as te,X as ye,Y as bt,Z as xe,$ as G,a0 as Ee,a1 as Be,a2 as ve,a3 as Se}from"./index-B95lHF7v.js";function Ae(n,e,t,r){if(typeof n.setBigUint64=="function")return n.setBigUint64(e,t,r);const i=BigInt(32),s=BigInt(4294967295),c=Number(t>>i&s),f=Number(t&s),o=r?4:0,l=r?0:4;n.setUint32(e+o,c,r),n.setUint32(e+l,f,r)}function Ie(n,e,t){return n&e^~n&t}function Ne(n,e,t){return n&e^n&t^e&t}class Oe extends Qt{constructor(e,t,r,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=r,this.isLE=i,this.buffer=new Uint8Array(e),this.view=At(this.buffer)}update(e){mt(this),e=Jt(e),te(e);const{view:t,buffer:r,blockLen:i}=this,s=e.length;for(let c=0;ci-c&&(this.process(r,0),c=0);for(let h=c;hg.length)throw new Error("_sha2: outputLen bigger than state");for(let h=0;h>>3,p=G(q,17)^G(q,19)^q>>>10;tt[h]=p+tt[h-7]+_+tt[h-16]|0}let{A:r,B:i,C:s,D:c,E:f,F:o,G:l,H:g}=this;for(let h=0;h<64;h++){const B=G(f,6)^G(f,11)^G(f,25),q=g+B+Ie(f,o,l)+qe[h]+tt[h]|0,p=(G(r,2)^G(r,13)^G(r,22))+Ne(r,i,s)|0;g=l,l=o,o=f,f=c+q|0,c=s,s=i,i=r,r=q+p|0}r=r+this.A|0,i=i+this.B|0,s=s+this.C|0,c=c+this.D|0,f=f+this.E|0,o=o+this.F|0,l=l+this.G|0,g=g+this.H|0,this.set(r,i,s,c,f,o,l,g)}roundClean(){bt(tt)}destroy(){this.set(0,0,0,0,0,0,0,0),bt(this.buffer)}}const Le=xe(()=>new He);class ee extends Qt{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Ee(e);const r=Jt(t);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,s=new Uint8Array(i);s.set(r.length>i?e.create().update(r).digest():r);for(let c=0;cnew ee(n,e).update(t).digest();ne.create=(n,e)=>new ee(n,e);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Ct=BigInt(0),Rt=BigInt(1);function wt(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&n.constructor.name==="Uint8Array"}function Vt(n){if(!wt(n))throw new Error("Uint8Array expected")}function dt(n,e){if(typeof e!="boolean")throw new Error(n+" boolean expected, got "+e)}function pt(n){const e=n.toString(16);return e.length&1?"0"+e:e}function re(n){if(typeof n!="string")throw new Error("hex string expected, got "+typeof n);return n===""?Ct:BigInt("0x"+n)}const oe=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Ue=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function ht(n){if(Vt(n),oe)return n.toHex();let e="";for(let t=0;t=W._0&&n<=W._9)return n-W._0;if(n>=W.A&&n<=W.F)return n-(W.A-10);if(n>=W.a&&n<=W.f)return n-(W.a-10)}function yt(n){if(typeof n!="string")throw new Error("hex string expected, got "+typeof n);if(oe)return Uint8Array.fromHex(n);const e=n.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);const r=new Uint8Array(t);for(let i=0,s=0;itypeof n=="bigint"&&Ct<=n;function Mt(n,e,t){return It(n)&&It(e)&&It(t)&&e<=n&&nCt;n>>=Rt,e+=1);return e}const Et=n=>(Rt<new Uint8Array(n),Kt=n=>Uint8Array.from(n);function Re(n,e,t){if(typeof n!="number"||n<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let r=Nt(n),i=Nt(n),s=0;const c=()=>{r.fill(1),i.fill(0),s=0},f=(...h)=>t(i,r,...h),o=(h=Nt(0))=>{i=f(Kt([0]),h),r=f(),h.length!==0&&(i=f(Kt([1]),h),r=f())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let h=0;const B=[];for(;h{c(),o(h);let q;for(;!(q=B(l()));)o();return c(),q}}const Ze={bigint:n=>typeof n=="bigint",function:n=>typeof n=="function",boolean:n=>typeof n=="boolean",string:n=>typeof n=="string",stringOrUint8Array:n=>typeof n=="string"||wt(n),isSafeInteger:n=>Number.isSafeInteger(n),array:n=>Array.isArray(n),field:(n,e)=>e.Fp.isValid(n),hash:n=>typeof n=="function"&&Number.isSafeInteger(n.outputLen)};function Bt(n,e,t={}){const r=(i,s,c)=>{const f=Ze[s];if(typeof f!="function")throw new Error("invalid validator function");const o=n[i];if(!(c&&o===void 0)&&!f(o,n))throw new Error("param "+String(i)+" is invalid. Expected "+s+", got "+o)};for(const[i,s]of Object.entries(e))r(i,s,!1);for(const[i,s]of Object.entries(t))r(i,s,!0);return n}function Pt(n){const e=new WeakMap;return(t,...r)=>{const i=e.get(t);if(i!==void 0)return i;const s=n(t,...r);return e.set(t,s),s}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Y=BigInt(0),C=BigInt(1),rt=BigInt(2),Te=BigInt(3),ce=BigInt(4),fe=BigInt(5),ae=BigInt(8);function M(n,e){const t=n%e;return t>=Y?t:e+t}function j(n,e,t){let r=n;for(;e-- >Y;)r*=r,r%=t;return r}function Zt(n,e){if(n===Y)throw new Error("invert: expected non-zero number");if(e<=Y)throw new Error("invert: expected positive modulus, got "+e);let t=M(n,e),r=e,i=Y,s=C;for(;t!==Y;){const f=r/t,o=r%t,l=i-s*f;r=t,t=o,i=s,s=l}if(r!==C)throw new Error("invert: does not exist");return M(i,e)}function ue(n,e){const t=(n.ORDER+C)/ce,r=n.pow(e,t);if(!n.eql(n.sqr(r),e))throw new Error("Cannot find square root");return r}function ke(n,e){const t=(n.ORDER-fe)/ae,r=n.mul(e,rt),i=n.pow(r,t),s=n.mul(e,i),c=n.mul(n.mul(s,rt),i),f=n.mul(s,n.sub(c,n.ONE));if(!n.eql(n.sqr(f),e))throw new Error("Cannot find square root");return f}function ze(n){if(n1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return ue;let s=i.pow(r,e);const c=(e+C)/rt;return function(o,l){if(o.is0(l))return l;if(Dt(o,l)!==1)throw new Error("Cannot find square root");let g=t,h=o.mul(o.ONE,s),B=o.pow(l,e),q=o.pow(l,c);for(;!o.eql(B,o.ONE);){if(o.is0(B))return o.ZERO;let _=1,p=o.sqr(B);for(;!o.eql(p,o.ONE);)if(_++,p=o.sqr(p),_===g)throw new Error("Cannot find square root");const k=C<(r[i]="function",r),e);return Bt(n,t)}function Ye(n,e,t){if(tY;)t&C&&(r=n.mul(r,i)),i=n.sqr(i),t>>=C;return r}function le(n,e,t=!1){const r=new Array(e.length).fill(t?n.ZERO:void 0),i=e.reduce((c,f,o)=>n.is0(f)?c:(r[o]=c,n.mul(c,f)),n.ONE),s=n.inv(i);return e.reduceRight((c,f,o)=>n.is0(f)?c:(r[o]=n.mul(c,r[o]),n.mul(c,f)),s),r}function Dt(n,e){const t=(n.ORDER-C)/rt,r=n.pow(e,t),i=n.eql(r,n.ONE),s=n.eql(r,n.ZERO),c=n.eql(r,n.neg(n.ONE));if(!i&&!s&&!c)throw new Error("invalid Legendre symbol result");return i?1:s?0:-1}function de(n,e){e!==void 0&&Be(e);const t=e!==void 0?e:n.toString(2).length,r=Math.ceil(t/8);return{nBitLength:t,nByteLength:r}}function Yt(n,e,t=!1,r={}){if(n<=Y)throw new Error("invalid field: expected ORDER > 0, got "+n);const{nBitLength:i,nByteLength:s}=de(n,e);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let c;const f=Object.freeze({ORDER:n,isLE:t,BITS:i,BYTES:s,MASK:Et(i),ZERO:Y,ONE:C,create:o=>M(o,n),isValid:o=>{if(typeof o!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof o);return Y<=o&&oo===Y,isOdd:o=>(o&C)===C,neg:o=>M(-o,n),eql:(o,l)=>o===l,sqr:o=>M(o*o,n),add:(o,l)=>M(o+l,n),sub:(o,l)=>M(o-l,n),mul:(o,l)=>M(o*l,n),pow:(o,l)=>Ye(f,o,l),div:(o,l)=>M(o*Zt(l,n),n),sqrN:o=>o*o,addN:(o,l)=>o+l,subN:(o,l)=>o-l,mulN:(o,l)=>o*l,inv:o=>Zt(o,n),sqrt:r.sqrt||(o=>(c||(c=Ce(n)),c(f,o))),toBytes:o=>t?se(o,s):gt(o,s),fromBytes:o=>{if(o.length!==s)throw new Error("Field.fromBytes: expected "+s+" bytes, got "+o.length);return t?ie(o):ot(o)},invertBatch:o=>le(f,o),cmov:(o,l,g)=>g?l:o});return Object.freeze(f)}function he(n){if(typeof n!="bigint")throw new Error("field order must be bigint");const e=n.toString(2).length;return Math.ceil(e/8)}function we(n){const e=he(n);return e+Math.ceil(e/2)}function je(n,e,t=!1){const r=n.length,i=he(e),s=we(e);if(r<16||r1024)throw new Error("expected "+s+"-1024 bytes of input, got "+r);const c=t?ie(n):ot(n),f=M(c,e-C)+C;return t?se(f,i):gt(f,i)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Gt=BigInt(0),Tt=BigInt(1);function Ot(n,e){const t=e.negate();return n?t:e}function ge(n,e){if(!Number.isSafeInteger(n)||n<=0||n>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+n)}function qt(n,e){ge(n,e);const t=Math.ceil(e/n)+1,r=2**(n-1),i=2**n,s=Et(n),c=BigInt(n);return{windows:t,windowSize:r,mask:s,maxNumber:i,shiftBy:c}}function $t(n,e,t){const{windowSize:r,mask:i,maxNumber:s,shiftBy:c}=t;let f=Number(n&i),o=n>>c;f>r&&(f-=s,o+=Tt);const l=e*r,g=l+Math.abs(f)-1,h=f===0,B=f<0,q=e%2!==0;return{nextN:o,offset:g,isZero:h,isNeg:B,isNegF:q,offsetF:l}}function Ke(n,e){if(!Array.isArray(n))throw new Error("array expected");n.forEach((t,r)=>{if(!(t instanceof e))throw new Error("invalid point at index "+r)})}function Pe(n,e){if(!Array.isArray(n))throw new Error("array of scalars expected");n.forEach((t,r)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+r)})}const Ht=new WeakMap,pe=new WeakMap;function Lt(n){return pe.get(n)||1}function De(n,e){return{constTimeNegate:Ot,hasPrecomputes(t){return Lt(t)!==1},unsafeLadder(t,r,i=n.ZERO){let s=t;for(;r>Gt;)r&Tt&&(i=i.add(s)),s=s.double(),r>>=Tt;return i},precomputeWindow(t,r){const{windows:i,windowSize:s}=qt(r,e),c=[];let f=t,o=f;for(let l=0;l12?o=f-3:f>4?o=f-2:f>0&&(o=2);const l=Et(o),g=new Array(Number(l)+1).fill(c),h=Math.floor((e.BITS-1)/o)*o;let B=c;for(let q=h;q>=0;q-=o){g.fill(c);for(let p=0;p>BigInt(q)&l);g[R]=g[R].add(t[p])}let _=c;for(let p=g.length-1,k=c;p>0;p--)k=k.add(g[p]),_=_.add(k);if(B=B.add(_),q!==0)for(let p=0;p{const{Err:t}=F;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");const r=e.length/2,i=pt(r);if(i.length/2&128)throw new t("tlv.encode: long form length too big");const s=r>127?pt(i.length/2|128):"";return pt(n)+s+i+e},decode(n,e){const{Err:t}=F;let r=0;if(n<0||n>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[r++]!==n)throw new t("tlv.decode: wrong tlv");const i=e[r++],s=!!(i&128);let c=0;if(!s)c=i;else{const o=i&127;if(!o)throw new t("tlv.decode(long): indefinite length not supported");if(o>4)throw new t("tlv.decode(long): byte length is too big");const l=e.subarray(r,r+o);if(l.length!==o)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(const g of l)c=c<<8|g;if(r+=o,c<128)throw new t("tlv.decode(long): not minimal encoding")}const f=e.subarray(r,r+c);if(f.length!==c)throw new t("tlv.decode: wrong value length");return{v:f,l:e.subarray(r+c)}}},_int:{encode(n){const{Err:e}=F;if(n{const b=a.toAffine();return xt(Uint8Array.from([4]),t.toBytes(b.x),t.toBytes(b.y))}),s=e.fromBytes||(A=>{const a=A.subarray(1),w=t.fromBytes(a.subarray(0,t.BYTES)),b=t.fromBytes(a.subarray(t.BYTES,2*t.BYTES));return{x:w,y:b}});function c(A){const{a,b:w}=e,b=t.sqr(A),v=t.mul(b,A);return t.add(t.add(v,t.mul(A,a)),w)}function f(A,a){const w=t.sqr(a),b=c(A);return t.eql(w,b)}if(!f(e.Gx,e.Gy))throw new Error("bad curve params: generator point");const o=t.mul(t.pow(e.a,_t),Fe),l=t.mul(t.sqr(e.b),BigInt(27));if(t.is0(t.add(o,l)))throw new Error("bad curve params: a or b");function g(A){return Mt(A,Z,e.n)}function h(A){const{allowedPrivateKeyLengths:a,nByteLength:w,wrapPrivateKey:b,n:v}=e;if(a&&typeof A!="bigint"){if(wt(A)&&(A=ht(A)),typeof A!="string"||!a.includes(A.length))throw new Error("invalid private key");A=A.padStart(w*2,"0")}let O;try{O=typeof A=="bigint"?A:ot(K("private key",A,w))}catch{throw new Error("invalid private key, expected hex or "+w+" bytes, got "+typeof A)}return b&&(O=M(O,v)),ft("private key",O,Z,v),O}function B(A){if(!(A instanceof p))throw new Error("ProjectivePoint expected")}const q=Pt((A,a)=>{const{px:w,py:b,pz:v}=A;if(t.eql(v,t.ONE))return{x:w,y:b};const O=A.is0();a==null&&(a=O?t.ONE:t.inv(v));const L=t.mul(w,a),H=t.mul(b,a),y=t.mul(v,a);if(O)return{x:t.ZERO,y:t.ZERO};if(!t.eql(y,t.ONE))throw new Error("invZ was invalid");return{x:L,y:H}}),_=Pt(A=>{if(A.is0()){if(e.allowInfinityPoint&&!t.is0(A.py))return;throw new Error("bad point: ZERO")}const{x:a,y:w}=A.toAffine();if(!t.isValid(a)||!t.isValid(w))throw new Error("bad point: x or y not FE");if(!f(a,w))throw new Error("bad point: equation left != right");if(!A.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class p{constructor(a,w,b){if(a==null||!t.isValid(a))throw new Error("x required");if(w==null||!t.isValid(w)||t.is0(w))throw new Error("y required");if(b==null||!t.isValid(b))throw new Error("z required");this.px=a,this.py=w,this.pz=b,Object.freeze(this)}static fromAffine(a){const{x:w,y:b}=a||{};if(!a||!t.isValid(w)||!t.isValid(b))throw new Error("invalid affine point");if(a instanceof p)throw new Error("projective point not allowed");const v=O=>t.eql(O,t.ZERO);return v(w)&&v(b)?p.ZERO:new p(w,b,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(a){const w=le(t,a.map(b=>b.pz));return a.map((b,v)=>b.toAffine(w[v])).map(p.fromAffine)}static fromHex(a){const w=p.fromAffine(s(K("pointHex",a)));return w.assertValidity(),w}static fromPrivateKey(a){return p.BASE.multiply(h(a))}static msm(a,w){return Ge(p,r,a,w)}_setWindowSize(a){D.setWindowSize(this,a)}assertValidity(){_(this)}hasEvenY(){const{y:a}=this.toAffine();if(t.isOdd)return!t.isOdd(a);throw new Error("Field doesn't support isOdd")}equals(a){B(a);const{px:w,py:b,pz:v}=this,{px:O,py:L,pz:H}=a,y=t.eql(t.mul(w,H),t.mul(O,v)),N=t.eql(t.mul(b,H),t.mul(L,v));return y&&N}negate(){return new p(this.px,t.neg(this.py),this.pz)}double(){const{a,b:w}=e,b=t.mul(w,_t),{px:v,py:O,pz:L}=this;let H=t.ZERO,y=t.ZERO,N=t.ZERO,x=t.mul(v,v),T=t.mul(O,O),d=t.mul(L,L),u=t.mul(v,O);return u=t.add(u,u),N=t.mul(v,L),N=t.add(N,N),H=t.mul(a,N),y=t.mul(b,d),y=t.add(H,y),H=t.sub(T,y),y=t.add(T,y),y=t.mul(H,y),H=t.mul(u,H),N=t.mul(b,N),d=t.mul(a,d),u=t.sub(x,d),u=t.mul(a,u),u=t.add(u,N),N=t.add(x,x),x=t.add(N,x),x=t.add(x,d),x=t.mul(x,u),y=t.add(y,x),d=t.mul(O,L),d=t.add(d,d),x=t.mul(d,u),H=t.sub(H,x),N=t.mul(d,T),N=t.add(N,N),N=t.add(N,N),new p(H,y,N)}add(a){B(a);const{px:w,py:b,pz:v}=this,{px:O,py:L,pz:H}=a;let y=t.ZERO,N=t.ZERO,x=t.ZERO;const T=e.a,d=t.mul(e.b,_t);let u=t.mul(w,O),m=t.mul(b,L),I=t.mul(v,H),E=t.add(w,b),S=t.add(O,L);E=t.mul(E,S),S=t.add(u,m),E=t.sub(E,S),S=t.add(w,v);let U=t.add(O,H);return S=t.mul(S,U),U=t.add(u,I),S=t.sub(S,U),U=t.add(b,v),y=t.add(L,H),U=t.mul(U,y),y=t.add(m,I),U=t.sub(U,y),x=t.mul(T,S),y=t.mul(d,I),x=t.add(y,x),y=t.sub(m,x),x=t.add(m,x),N=t.mul(y,x),m=t.add(u,u),m=t.add(m,u),I=t.mul(T,I),S=t.mul(d,S),m=t.add(m,I),I=t.sub(u,I),I=t.mul(T,I),S=t.add(S,I),u=t.mul(m,S),N=t.add(N,u),u=t.mul(U,S),y=t.mul(E,y),y=t.sub(y,u),u=t.mul(E,m),x=t.mul(U,x),x=t.add(x,u),new p(y,N,x)}subtract(a){return this.add(a.negate())}is0(){return this.equals(p.ZERO)}wNAF(a){return D.wNAFCached(this,a,p.normalizeZ)}multiplyUnsafe(a){const{endo:w,n:b}=e;ft("scalar",a,X,b);const v=p.ZERO;if(a===X)return v;if(this.is0()||a===Z)return this;if(!w||D.hasPrecomputes(this))return D.wNAFCachedUnsafe(this,a,p.normalizeZ);let{k1neg:O,k1:L,k2neg:H,k2:y}=w.splitScalar(a),N=v,x=v,T=this;for(;L>X||y>X;)L&Z&&(N=N.add(T)),y&Z&&(x=x.add(T)),T=T.double(),L>>=Z,y>>=Z;return O&&(N=N.negate()),H&&(x=x.negate()),x=new p(t.mul(x.px,w.beta),x.py,x.pz),N.add(x)}multiply(a){const{endo:w,n:b}=e;ft("scalar",a,Z,b);let v,O;if(w){const{k1neg:L,k1:H,k2neg:y,k2:N}=w.splitScalar(a);let{p:x,f:T}=this.wNAF(H),{p:d,f:u}=this.wNAF(N);x=D.constTimeNegate(L,x),d=D.constTimeNegate(y,d),d=new p(t.mul(d.px,w.beta),d.py,d.pz),v=x.add(d),O=T.add(u)}else{const{p:L,f:H}=this.wNAF(a);v=L,O=H}return p.normalizeZ([v,O])[0]}multiplyAndAddUnsafe(a,w,b){const v=p.BASE,O=(H,y)=>y===X||y===Z||!H.equals(v)?H.multiplyUnsafe(y):H.multiply(y),L=O(this,w).add(O(a,b));return L.is0()?void 0:L}toAffine(a){return q(this,a)}isTorsionFree(){const{h:a,isTorsionFree:w}=e;if(a===Z)return!0;if(w)return w(p,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){const{h:a,clearCofactor:w}=e;return a===Z?this:w?w(p,this):this.multiplyUnsafe(e.h)}toRawBytes(a=!0){return dt("isCompressed",a),this.assertValidity(),i(p,this,a)}toHex(a=!0){return dt("isCompressed",a),ht(this.toRawBytes(a))}}p.BASE=new p(e.Gx,e.Gy,t.ONE),p.ZERO=new p(t.ZERO,t.ONE,t.ZERO);const{endo:k,nBitLength:R}=e,D=De(p,k?Math.ceil(R/2):R);return{CURVE:e,ProjectivePoint:p,normPrivateKeyToScalar:h,weierstrassEquation:c,isWithinCurveOrder:g}}function Qe(n){const e=me(n);return Bt(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function Je(n){const e=Qe(n),{Fp:t,n:r,nByteLength:i,nBitLength:s}=e,c=t.BYTES+1,f=2*t.BYTES+1;function o(d){return M(d,r)}function l(d){return Zt(d,r)}const{ProjectivePoint:g,normPrivateKeyToScalar:h,weierstrassEquation:B,isWithinCurveOrder:q}=Xe({...e,toBytes(d,u,m){const I=u.toAffine(),E=t.toBytes(I.x),S=xt;return dt("isCompressed",m),m?S(Uint8Array.from([u.hasEvenY()?2:3]),E):S(Uint8Array.from([4]),E,t.toBytes(I.y))},fromBytes(d){const u=d.length,m=d[0],I=d.subarray(1);if(u===c&&(m===2||m===3)){const E=ot(I);if(!Mt(E,Z,t.ORDER))throw new Error("Point is not on curve");const S=B(E);let U;try{U=t.sqrt(S)}catch(P){const V=P instanceof Error?": "+P.message:"";throw new Error("Point is not on curve"+V)}const z=(U&Z)===Z;return(m&1)===1!==z&&(U=t.neg(U)),{x:E,y:U}}else if(u===f&&m===4){const E=t.fromBytes(I.subarray(0,t.BYTES)),S=t.fromBytes(I.subarray(t.BYTES,2*t.BYTES));return{x:E,y:S}}else{const E=c,S=f;throw new Error("invalid Point, expected length of "+E+", or uncompressed "+S+", got "+u)}}});function _(d){const u=r>>Z;return d>u}function p(d){return _(d)?o(-d):d}const k=(d,u,m)=>ot(d.slice(u,m));class R{constructor(u,m,I){ft("r",u,Z,r),ft("s",m,Z,r),this.r=u,this.s=m,I!=null&&(this.recovery=I),Object.freeze(this)}static fromCompact(u){const m=i;return u=K("compactSignature",u,m*2),new R(k(u,0,m),k(u,m,2*m))}static fromDER(u){const{r:m,s:I}=F.toSig(K("DER",u));return new R(m,I)}assertValidity(){}addRecoveryBit(u){return new R(this.r,this.s,u)}recoverPublicKey(u){const{r:m,s:I,recovery:E}=this,S=v(K("msgHash",u));if(E==null||![0,1,2,3].includes(E))throw new Error("recovery id invalid");const U=E===2||E===3?m+e.n:m;if(U>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");const z=E&1?"03":"02",$=g.fromHex(z+Ut(U,t.BYTES)),P=l(U),V=o(-S*P),it=o(I*P),Q=g.BASE.multiplyAndAddUnsafe($,V,it);if(!Q)throw new Error("point at infinify");return Q.assertValidity(),Q}hasHighS(){return _(this.s)}normalizeS(){return this.hasHighS()?new R(this.r,o(-this.s),this.recovery):this}toDERRawBytes(){return yt(this.toDERHex())}toDERHex(){return F.hexFromSig(this)}toCompactRawBytes(){return yt(this.toCompactHex())}toCompactHex(){const u=i;return Ut(this.r,u)+Ut(this.s,u)}}const D={isValidPrivateKey(d){try{return h(d),!0}catch{return!1}},normPrivateKeyToScalar:h,randomPrivateKey:()=>{const d=we(e.n);return je(e.randomBytes(d),e.n)},precompute(d=8,u=g.BASE){return u._setWindowSize(d),u.multiply(BigInt(3)),u}};function A(d,u=!0){return g.fromPrivateKey(d).toRawBytes(u)}function a(d){if(typeof d=="bigint")return!1;if(d instanceof g)return!0;const m=K("key",d).length,I=t.BYTES,E=I+1,S=2*I+1;if(!(e.allowedPrivateKeyLengths||i===E))return m===E||m===S}function w(d,u,m=!0){if(a(d)===!0)throw new Error("first arg must be private key");if(a(u)===!1)throw new Error("second arg must be public key");return g.fromHex(u).multiply(h(d)).toRawBytes(m)}const b=e.bits2int||function(d){if(d.length>8192)throw new Error("input is too large");const u=ot(d),m=d.length*8-s;return m>0?u>>BigInt(m):u},v=e.bits2int_modN||function(d){return o(b(d))},O=Et(s);function L(d){return ft("num < 2^"+s,d,X,O),gt(d,i)}function H(d,u,m=y){if(["recovered","canonical"].some(et=>et in m))throw new Error("sign() legacy options not supported");const{hash:I,randomBytes:E}=e;let{lowS:S,prehash:U,extraEntropy:z}=m;S==null&&(S=!0),d=K("msgHash",d),Wt(m),U&&(d=K("prehashed msgHash",I(d)));const $=v(d),P=h(u),V=[L(P),L($)];if(z!=null&&z!==!1){const et=z===!0?E(t.BYTES):z;V.push(K("extraEntropy",et))}const it=xt(...V),Q=$;function vt(et){const st=b(et);if(!q(st))return;const St=l(st),at=g.BASE.multiply(st).toAffine(),nt=o(at.x);if(nt===X)return;const ut=o(St*o(Q+nt*P));if(ut===X)return;let lt=(at.x===nt?0:2)|Number(at.y&Z),ct=ut;return S&&_(ut)&&(ct=p(ut),lt^=1),new R(nt,ct,lt)}return{seed:it,k2sig:vt}}const y={lowS:e.lowS,prehash:!1},N={lowS:e.lowS,prehash:!1};function x(d,u,m=y){const{seed:I,k2sig:E}=H(d,u,m),S=e;return Re(S.hash.outputLen,S.nByteLength,S.hmac)(I,E)}g.BASE._setWindowSize(8);function T(d,u,m,I=N){var lt;const E=d;u=K("msgHash",u),m=K("publicKey",m);const{lowS:S,prehash:U,format:z}=I;if(Wt(I),"strict"in I)throw new Error("options.strict was renamed to lowS");if(z!==void 0&&z!=="compact"&&z!=="der")throw new Error("format must be compact or der");const $=typeof E=="string"||wt(E),P=!$&&!z&&typeof E=="object"&&E!==null&&typeof E.r=="bigint"&&typeof E.s=="bigint";if(!$&&!P)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let V,it;try{if(P&&(V=new R(E.r,E.s)),$){try{z!=="compact"&&(V=R.fromDER(E))}catch(ct){if(!(ct instanceof F.Err))throw ct}!V&&z!=="der"&&(V=R.fromCompact(E))}it=g.fromHex(m)}catch{return!1}if(!V||S&&V.hasHighS())return!1;U&&(u=e.hash(u));const{r:Q,s:vt}=V,et=v(u),st=l(vt),St=o(et*st),at=o(Q*st),nt=(lt=g.BASE.multiplyAndAddUnsafe(it,St,at))==null?void 0:lt.toAffine();return nt?o(nt.x)===Q:!1}return{CURVE:e,getPublicKey:A,getSharedSecret:w,sign:x,verify:T,ProjectivePoint:g,Signature:R,utils:D}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function tn(n){return{hash:n,hmac:(e,...t)=>ne(n,e,Se(...t)),randomBytes:ve}}function en(n,e){const t=r=>Je({...n,...tn(r)});return{...t(e),create:t}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const be=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ft=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),nn=BigInt(0),rn=BigInt(1),kt=BigInt(2),Xt=(n,e)=>(n+e/kt)/e;function on(n){const e=be,t=BigInt(3),r=BigInt(6),i=BigInt(11),s=BigInt(22),c=BigInt(23),f=BigInt(44),o=BigInt(88),l=n*n*n%e,g=l*l*n%e,h=j(g,t,e)*g%e,B=j(h,t,e)*g%e,q=j(B,kt,e)*l%e,_=j(q,i,e)*q%e,p=j(_,s,e)*_%e,k=j(p,f,e)*p%e,R=j(k,o,e)*k%e,D=j(R,f,e)*p%e,A=j(D,t,e)*g%e,a=j(A,c,e)*_%e,w=j(a,r,e)*l%e,b=j(w,kt,e);if(!zt.eql(zt.sqr(b),n))throw new Error("Cannot find square root");return b}const zt=Yt(be,void 0,void 0,{sqrt:on}),cn=en({a:nn,b:BigInt(7),Fp:zt,n:Ft,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:n=>{const e=Ft,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),r=-rn*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,c=BigInt("0x100000000000000000000000000000000"),f=Xt(s*n,e),o=Xt(-r*n,e);let l=M(n-f*t-o*i,e),g=M(-f*r-o*s,e);const h=l>c,B=g>c;if(h&&(l=e-l),B&&(g=e-g),l>c||g>c)throw new Error("splitScalar: Endomorphism failed, k="+n);return{k1neg:h,k1:l,k2neg:B,k2:g}}}},Le);export{cn as secp256k1}; +//# sourceMappingURL=secp256k1-BE_Tifw7.js.map diff --git a/dist/assets/secp256k1-BE_Tifw7.js.map b/dist/assets/secp256k1-BE_Tifw7.js.map new file mode 100644 index 0000000..2a88217 --- /dev/null +++ b/dist/assets/secp256k1-BE_Tifw7.js.map @@ -0,0 +1 @@ +{"version":3,"file":"secp256k1-BE_Tifw7.js","sources":["../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js","../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/hmac.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/abstract/utils.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/abstract/modular.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/abstract/curve.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/abstract/weierstrass.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/_shortw_utils.js","../../node_modules/.pnpm/@noble+curves@1.9.1/node_modules/@noble/curves/esm/secp256k1.js"],"sourcesContent":["/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor(outputLen = 32) {\n super(64, outputLen, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\nexport class SHA224 extends SHA256 {\n constructor() {\n super(28);\n this.A = SHA224_IV[0] | 0;\n this.B = SHA224_IV[1] | 0;\n this.C = SHA224_IV[2] | 0;\n this.D = SHA224_IV[3] | 0;\n this.E = SHA224_IV[4] | 0;\n this.F = SHA224_IV[5] | 0;\n this.G = SHA224_IV[6] | 0;\n this.H = SHA224_IV[7] | 0;\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor(outputLen = 64) {\n super(128, outputLen, 16, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = SHA512_IV[0] | 0;\n this.Al = SHA512_IV[1] | 0;\n this.Bh = SHA512_IV[2] | 0;\n this.Bl = SHA512_IV[3] | 0;\n this.Ch = SHA512_IV[4] | 0;\n this.Cl = SHA512_IV[5] | 0;\n this.Dh = SHA512_IV[6] | 0;\n this.Dl = SHA512_IV[7] | 0;\n this.Eh = SHA512_IV[8] | 0;\n this.El = SHA512_IV[9] | 0;\n this.Fh = SHA512_IV[10] | 0;\n this.Fl = SHA512_IV[11] | 0;\n this.Gh = SHA512_IV[12] | 0;\n this.Gl = SHA512_IV[13] | 0;\n this.Hh = SHA512_IV[14] | 0;\n this.Hl = SHA512_IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super(48);\n this.Ah = SHA384_IV[0] | 0;\n this.Al = SHA384_IV[1] | 0;\n this.Bh = SHA384_IV[2] | 0;\n this.Bl = SHA384_IV[3] | 0;\n this.Ch = SHA384_IV[4] | 0;\n this.Cl = SHA384_IV[5] | 0;\n this.Dh = SHA384_IV[6] | 0;\n this.Dl = SHA384_IV[7] | 0;\n this.Eh = SHA384_IV[8] | 0;\n this.El = SHA384_IV[9] | 0;\n this.Fh = SHA384_IV[10] | 0;\n this.Fl = SHA384_IV[11] | 0;\n this.Gh = SHA384_IV[12] | 0;\n this.Gl = SHA384_IV[13] | 0;\n this.Hh = SHA384_IV[14] | 0;\n this.Hl = SHA384_IV[15] | 0;\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super(28);\n this.Ah = T224_IV[0] | 0;\n this.Al = T224_IV[1] | 0;\n this.Bh = T224_IV[2] | 0;\n this.Bl = T224_IV[3] | 0;\n this.Ch = T224_IV[4] | 0;\n this.Cl = T224_IV[5] | 0;\n this.Dh = T224_IV[6] | 0;\n this.Dl = T224_IV[7] | 0;\n this.Eh = T224_IV[8] | 0;\n this.El = T224_IV[9] | 0;\n this.Fh = T224_IV[10] | 0;\n this.Fl = T224_IV[11] | 0;\n this.Gh = T224_IV[12] | 0;\n this.Gl = T224_IV[13] | 0;\n this.Hh = T224_IV[14] | 0;\n this.Hl = T224_IV[15] | 0;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super(32);\n this.Ah = T256_IV[0] | 0;\n this.Al = T256_IV[1] | 0;\n this.Bh = T256_IV[2] | 0;\n this.Bl = T256_IV[3] | 0;\n this.Ch = T256_IV[4] | 0;\n this.Cl = T256_IV[5] | 0;\n this.Dh = T256_IV[6] | 0;\n this.Dl = T256_IV[7] | 0;\n this.Eh = T256_IV[8] | 0;\n this.El = T256_IV[9] | 0;\n this.Fh = T256_IV[10] | 0;\n this.Fl = T256_IV[11] | 0;\n this.Gh = T256_IV[12] | 0;\n this.Gl = T256_IV[13] | 0;\n this.Hh = T256_IV[14] | 0;\n this.Hl = T256_IV[15] | 0;\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// 100 lines of code in the file are duplicated from noble-hashes (utils).\n// This is OK: `abstract` directory does not use noble-hashes.\n// User may opt-in into using different hashing library. This way, noble-hashes\n// won't be included into their bundle.\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\nexport function abytes(item) {\n if (!isBytes(item))\n throw new Error('Uint8Array expected');\n}\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(title + ' boolean expected, got ' + value);\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function';\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes(bytes);\n return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'private key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes(hex);\n }\n catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n }\n else if (isBytes(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n/**\n * Copies several Uint8Arrays into one.\n */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n// DRBG\nconst u8n = (len) => new Uint8Array(len); // creates Uint8Array\nconst u8fr = (arr) => Uint8Array.from(arr); // another shortcut\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n(0)) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8fr([0x00]), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8fr([0x01]), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error('invalid validator function');\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and finite fields.\n * A finite field over 11 is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { anumber } from '@noble/hashes/utils';\nimport { bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, validateObject, } from \"./utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _8n = /* @__PURE__ */ BigInt(8);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * TODO: remove.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n // Throw if root^2 != n\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n}\nfunction sqrt5mod8(Fp, n) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n return root;\n}\n// TODO: Commented-out for now. Provide test vectors.\n// Tonelli is too slow for extension fields Fp2.\n// That means we can't use sqrt (c1, c2...) even for initialization constants.\n// if (P % _16n === _9n) return sqrt9mod16;\n// // prettier-ignore\n// function sqrt9mod16(Fp: IField, n: T, p7div16?: bigint) {\n// if (p7div16 === undefined) p7div16 = (Fp.ORDER + BigInt(7)) / _16n;\n// const c1 = Fp.sqrt(Fp.neg(Fp.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n// const c2 = Fp.sqrt(c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n// const c3 = Fp.sqrt(Fp.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n// const c4 = p7div16; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n// let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n// let tv2 = Fp.mul(c1, tv1); // 2. tv2 = c1 * tv1\n// const tv3 = Fp.mul(c2, tv1); // 3. tv3 = c2 * tv1\n// let tv4 = Fp.mul(c3, tv1); // 4. tv4 = c3 * tv1\n// const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n// const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n// tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n// tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n// const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n// return Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select the sqrt from tv1 and tv2\n// }\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Initialization (precomputation).\n if (P < BigInt(3))\n throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000)\n throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1)\n return sqrt3mod4;\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n if (Fp.is0(n))\n return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1)\n throw new Error('Cannot find square root');\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t))\n return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M)\n throw new Error('Cannot find square root');\n }\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n if (P % _4n === _3n)\n return sqrt3mod4;\n // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n)\n return sqrt5mod8;\n // P ≡ 9 (mod 16) not implemented, see above\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'isSafeInteger',\n BITS: 'isSafeInteger',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n return validateObject(field, opts);\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return Fp.ONE;\n if (power === _1n)\n return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no)\n throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined)\n anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Initializes a finite field over prime.\n * Major performance optimizations:\n * * a) denormalized operations like mulN instead of mul\n * * b) same object shape: never add or remove keys\n * * c) Object.freeze\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n * @param ORDER prime positive bigint\n * @param bitLen how many bits the field consumes\n * @param isLE (def: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLen, isLE = false, redef = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, bitLen);\n if (BYTES > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP; // cached sqrtP\n const f = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: redef.sqrt ||\n ((n) => {\n if (!sqrtP)\n sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes) => {\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n return isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n },\n // TODO: we don't need it here, move out to separate fn\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov: (a, b, c) => (c ? b : a),\n });\n return Object.freeze(f);\n}\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { nLength, validateField } from \"./modular.js\";\nimport { bitLen, bitMask, validateObject } from \"./utils.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nfunction constTimeNegate(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n return pointWindowSizes.get(P) || 1;\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport function wNAF(c, bits) {\n return {\n constTimeNegate,\n hasPrecomputes(elm) {\n return getW(elm) !== 1;\n },\n // non-const time multiplication ladder\n unsafeLadder(elm, n, p = c.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n },\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param elm Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(elm, W) {\n const { windows, windowSize } = calcWOpts(W, bits);\n const points = [];\n let p = elm;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n },\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // Smaller version:\n // https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n // TODO: check the scalar is less than group order?\n // wNAF behavior is undefined otherwise. But have to carefully remove\n // other checks before wNAF. ORDER == bits here.\n // Accumulators\n let p = c.ZERO;\n let f = c.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(constTimeNegate(isNegF, precomputes[offsetF]));\n }\n else {\n // bits are 1: add to result point\n p = p.add(constTimeNegate(isNeg, precomputes[offset]));\n }\n }\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n },\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param W window size\n * @param precomputes precomputed tables\n * @param n scalar (we don't check here, but should be less than curve order)\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = c.ZERO) {\n const wo = calcWOpts(W, bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n)\n break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n }\n else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n return acc;\n },\n getPrecomputes(W, P, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(P);\n if (!comp) {\n comp = this.precomputeWindow(P, W);\n if (W !== 1)\n pointPrecomputes.set(P, transform(comp));\n }\n return comp;\n },\n wNAFCached(P, n, transform) {\n const W = getW(P);\n return this.wNAF(W, this.getPrecomputes(W, P, transform), n);\n },\n wNAFCachedUnsafe(P, n, transform, prev) {\n const W = getW(P);\n if (W === 1)\n return this.unsafeLadder(P, n, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, P, transform), n, prev);\n },\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n setWindowSize(P, W) {\n validateW(W, bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n },\n };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka private keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength)\n throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12)\n windowSize = wbits - 3;\n else if (wbits > 4)\n windowSize = wbits - 2;\n else if (wbits > 0)\n windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Parameters\n *\n * To initialize a weierstrass curve, one needs to pass following params:\n *\n * * a: formula param\n * * b: formula param\n * * Fp: finite field of prime characteristic P; may be complex (Fp2). Arithmetics is done in field\n * * n: order of prime subgroup a.k.a total amount of valid curve points\n * * Gx: Base point (x, y) aka generator point. Gx = x coordinate\n * * Gy: ...y coordinate\n * * h: cofactor, usually 1. h*n = curve group order (n is only subgroup order)\n * * lowS: whether to enable (default) or disable \"low-s\" non-malleable signatures\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// prettier-ignore\nimport { pippenger, validateBasic, wNAF } from \"./curve.js\";\n// prettier-ignore\nimport { Field, FpInvertBatch, getMinHashLength, invert, mapHashToField, mod, validateField } from \"./modular.js\";\n// prettier-ignore\nimport { aInRange, abool, bitMask, bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes, inRange, isBytes, memoized, numberToBytesBE, numberToHexUnpadded, validateObject } from \"./utils.js\";\nfunction validateSigVerOpts(opts) {\n if (opts.lowS !== undefined)\n abool('lowS', opts.lowS);\n if (opts.prehash !== undefined)\n abool('prehash', opts.prehash);\n}\nfunction validatePointOpts(curve) {\n const opts = validateBasic(curve);\n validateObject(opts, {\n a: 'field',\n b: 'field',\n }, {\n allowInfinityPoint: 'boolean',\n allowedPrivateKeyLengths: 'array',\n clearCofactor: 'function',\n fromBytes: 'function',\n isTorsionFree: 'function',\n toBytes: 'function',\n wrapPrivateKey: 'boolean',\n });\n const { endo, Fp, a } = opts;\n if (endo) {\n if (!Fp.eql(a, Fp.ZERO)) {\n throw new Error('invalid endo: CURVE.a must be 0');\n }\n if (typeof endo !== 'object' ||\n typeof endo.beta !== 'bigint' ||\n typeof endo.splitScalar !== 'function') {\n throw new Error('invalid endo: expected \"beta\": bigint and \"splitScalar\": function');\n }\n }\n return Object.freeze({ ...opts });\n}\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';\n const t = numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('invalid signature integer: unnecessary leading zero');\n return bytesToNumberBE(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = ensureBytes('signature', hex);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\nfunction numToSizedHex(num, size) {\n return bytesToHex(numberToBytesBE(num, size));\n}\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function weierstrassPoints(opts) {\n const CURVE = validatePointOpts(opts);\n const { Fp } = CURVE; // All curves has same field / group length as for now, but they can differ\n const Fn = Field(CURVE.n, CURVE.nBitLength);\n const toBytes = CURVE.toBytes ||\n ((_c, point, _isCompressed) => {\n const a = point.toAffine();\n return concatBytes(Uint8Array.from([0x04]), Fp.toBytes(a.x), Fp.toBytes(a.y));\n });\n const fromBytes = CURVE.fromBytes ||\n ((bytes) => {\n // const head = bytes[0];\n const tail = bytes.subarray(1);\n // if (head !== 0x04) throw new Error('Only non-compressed encoding is supported');\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n });\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n * @returns y²\n */\n function weierstrassEquation(x) {\n const { a, b } = CURVE;\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n }\n function isValidXY(x, y) {\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n return Fp.eql(left, right);\n }\n // Validate whether the passed curve params are valid.\n // Test 1: equation y² = x³ + ax + b should work for generator point.\n if (!isValidXY(CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n // Guarantees curve is genus-1, smooth (non-singular).\n const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n if (Fp.is0(Fp.add(_4a3, _27b2)))\n throw new Error('bad curve params: a or b');\n // Valid group elements reside in range 1..n-1\n function isWithinCurveOrder(num) {\n return inRange(num, _1n, CURVE.n);\n }\n // Validates if priv key is valid and converts it to bigint.\n // Supports options allowedPrivateKeyLengths and wrapPrivateKey.\n function normPrivateKeyToScalar(key) {\n const { allowedPrivateKeyLengths: lengths, nByteLength, wrapPrivateKey, n: N } = CURVE;\n if (lengths && typeof key !== 'bigint') {\n if (isBytes(key))\n key = bytesToHex(key);\n // Normalize to hex string, pad. E.g. P521 would norm 130-132 char hex to 132-char bytes\n if (typeof key !== 'string' || !lengths.includes(key.length))\n throw new Error('invalid private key');\n key = key.padStart(nByteLength * 2, '0');\n }\n let num;\n try {\n num =\n typeof key === 'bigint'\n ? key\n : bytesToNumberBE(ensureBytes('private key', key, nByteLength));\n }\n catch (error) {\n throw new Error('invalid private key, expected hex or ' + nByteLength + ' bytes, got ' + typeof key);\n }\n if (wrapPrivateKey)\n num = mod(num, N); // disabled by default, enabled for BLS\n aInRange('private key', num, _1n, N); // num in range [1..N-1]\n return num;\n }\n function aprjpoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n const toAffineMemo = memoized((p, iz) => {\n const { px: x, py: y, pz: z } = p;\n // Fast-path for normalized points\n if (Fp.eql(z, Fp.ONE))\n return { x, y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(z);\n const ax = Fp.mul(x, iz);\n const ay = Fp.mul(y, iz);\n const zz = Fp.mul(z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x: ax, y: ay };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (CURVE.allowInfinityPoint && !Fp.is0(p.py))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n // Check if x, y are valid field elements\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not FE');\n if (!isValidXY(x, y))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates: (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n * Default Point works in 2d / affine coordinates: (x, y)\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n constructor(px, py, pz) {\n if (px == null || !Fp.isValid(px))\n throw new Error('x required');\n if (py == null || !Fp.isValid(py) || Fp.is0(py))\n throw new Error('y required');\n if (pz == null || !Fp.isValid(pz))\n throw new Error('z required');\n this.px = px;\n this.py = py;\n this.pz = pz;\n Object.freeze(this);\n }\n // Does not validate if the point is on-curve.\n // Use fromHex instead, or call assertValidity() later.\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n const is0 = (i) => Fp.eql(i, Fp.ZERO);\n // fromAffine(x:0, y:0) would produce (x:0, y:0, z:1), but we need (x:0, y:1, z:0)\n if (is0(x) && is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\n static normalizeZ(points) {\n const toInv = FpInvertBatch(Fp, points.map((p) => p.pz));\n return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);\n }\n /**\n * Converts hash string or Uint8Array to Point.\n * @param hex short/long ECDSA hex\n */\n static fromHex(hex) {\n const P = Point.fromAffine(fromBytes(ensureBytes('pointHex', hex)));\n P.assertValidity();\n return P;\n }\n // Multiplies generator point by privateKey.\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normPrivateKeyToScalar(privateKey));\n }\n // Multiscalar Multiplication\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n // \"Private method\", don't use it directly\n _setWindowSize(windowSize) {\n wnaf.setWindowSize(this, windowSize);\n }\n // A point on curve is valid if it conforms to equation.\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (Fp.isOdd)\n return !Fp.isOdd(y);\n throw new Error(\"Field doesn't support isOdd\");\n }\n /**\n * Compare one point to another.\n */\n equals(other) {\n aprjpoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /**\n * Flips point to one corresponding to (x, -y) in Affine coordinates.\n */\n negate() {\n return new Point(this.px, Fp.neg(this.py), this.pz);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { px: X1, py: Y1, pz: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n aprjpoint(other);\n const { px: X1, py: Y1, pz: Z1 } = this;\n const { px: X2, py: Y2, pz: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n wNAF(n) {\n return wnaf.wNAFCached(this, n, Point.normalizeZ);\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed private key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n const { endo, n: N } = CURVE;\n aInRange('scalar', sc, _0n, N);\n const I = Point.ZERO;\n if (sc === _0n)\n return I;\n if (this.is0() || sc === _1n)\n return this;\n // Case a: no endomorphism. Case b: has precomputes.\n if (!endo || wnaf.hasPrecomputes(this))\n return wnaf.wNAFCachedUnsafe(this, sc, Point.normalizeZ);\n // Case c: endomorphism\n /** See docs for {@link EndomorphismOpts} */\n let { k1neg, k1, k2neg, k2 } = endo.splitScalar(sc);\n let k1p = I;\n let k2p = I;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n return k1p.add(k2p);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo, n: N } = CURVE;\n aInRange('scalar', scalar, _1n, N);\n let point, fake; // Fake point is used to const-time mult\n /** See docs for {@link EndomorphismOpts} */\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = endo.splitScalar(scalar);\n let { p: k1p, f: f1p } = this.wNAF(k1);\n let { p: k2p, f: f2p } = this.wNAF(k2);\n k1p = wnaf.constTimeNegate(k1neg, k1p);\n k2p = wnaf.constTimeNegate(k2neg, k2p);\n k2p = new Point(Fp.mul(k2p.px, endo.beta), k2p.py, k2p.pz);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return Point.normalizeZ([point, fake])[0];\n }\n /**\n * Efficiently calculate `aP + bQ`. Unsafe, can expose private key, if used incorrectly.\n * Not using Strauss-Shamir trick: precomputation tables are faster.\n * The trick could be useful if both P and Q are not G (not in our case).\n * @returns non-zero affine point\n */\n multiplyAndAddUnsafe(Q, a, b) {\n const G = Point.BASE; // No Strauss-Shamir trick: we have 10% faster G precomputes\n const mul = (P, a // Select faster multiply() method\n ) => (a === _0n || a === _1n || !P.equals(G) ? P.multiplyUnsafe(a) : P.multiply(a));\n const sum = mul(this, a).add(mul(Q, b));\n return sum.is0() ? undefined : sum;\n }\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (x, y, z) ∋ (x=x/z, y=y/z)\n toAffine(iz) {\n return toAffineMemo(this, iz);\n }\n isTorsionFree() {\n const { h: cofactor, isTorsionFree } = CURVE;\n if (cofactor === _1n)\n return true; // No subgroups, always torsion-free\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n throw new Error('isTorsionFree() has not been declared for the elliptic curve');\n }\n clearCofactor() {\n const { h: cofactor, clearCofactor } = CURVE;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(CURVE.h);\n }\n toRawBytes(isCompressed = true) {\n abool('isCompressed', isCompressed);\n this.assertValidity();\n return toBytes(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n abool('isCompressed', isCompressed);\n return bytesToHex(this.toRawBytes(isCompressed));\n }\n }\n // base / generator point\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n // zero / infinity / identity point\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n const { endo, nBitLength } = CURVE;\n const wnaf = wNAF(Point, endo ? Math.ceil(nBitLength / 2) : nBitLength);\n return {\n CURVE,\n ProjectivePoint: Point,\n normPrivateKeyToScalar,\n weierstrassEquation,\n isWithinCurveOrder,\n };\n}\nfunction validateOpts(curve) {\n const opts = validateBasic(curve);\n validateObject(opts, {\n hash: 'hash',\n hmac: 'function',\n randomBytes: 'function',\n }, {\n bits2int: 'function',\n bits2int_modN: 'function',\n lowS: 'boolean',\n });\n return Object.freeze({ lowS: true, ...opts });\n}\n/**\n * Creates short weierstrass curve and ECDSA signature methods for it.\n * @example\n * import { Field } from '@noble/curves/abstract/modular';\n * // Before that, define BigInt-s: a, b, p, n, Gx, Gy\n * const curve = weierstrass({ a, b, Fp: Field(p), n, Gx, Gy, h: 1n })\n */\nexport function weierstrass(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { Fp, n: CURVE_ORDER, nByteLength, nBitLength } = CURVE;\n const compressedLen = Fp.BYTES + 1; // e.g. 33 for 32\n const uncompressedLen = 2 * Fp.BYTES + 1; // e.g. 65 for 32\n function modN(a) {\n return mod(a, CURVE_ORDER);\n }\n function invN(a) {\n return invert(a, CURVE_ORDER);\n }\n const { ProjectivePoint: Point, normPrivateKeyToScalar, weierstrassEquation, isWithinCurveOrder, } = weierstrassPoints({\n ...CURVE,\n toBytes(_c, point, isCompressed) {\n const a = point.toAffine();\n const x = Fp.toBytes(a.x);\n const cat = concatBytes;\n abool('isCompressed', isCompressed);\n if (isCompressed) {\n return cat(Uint8Array.from([point.hasEvenY() ? 0x02 : 0x03]), x);\n }\n else {\n return cat(Uint8Array.from([0x04]), x, Fp.toBytes(a.y));\n }\n },\n fromBytes(bytes) {\n const len = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // this.assertValidity() is done inside of fromHex\n if (len === compressedLen && (head === 0x02 || head === 0x03)) {\n const x = bytesToNumberBE(tail);\n if (!inRange(x, _1n, Fp.ORDER))\n throw new Error('Point is not on curve');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const suffix = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('Point is not on curve' + suffix);\n }\n const isYOdd = (y & _1n) === _1n;\n // ECDSA\n const isHeadOdd = (head & 1) === 1;\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (len === uncompressedLen && head === 0x04) {\n const x = Fp.fromBytes(tail.subarray(0, Fp.BYTES));\n const y = Fp.fromBytes(tail.subarray(Fp.BYTES, 2 * Fp.BYTES));\n return { x, y };\n }\n else {\n const cl = compressedLen;\n const ul = uncompressedLen;\n throw new Error('invalid Point, expected length of ' + cl + ', or uncompressed ' + ul + ', got ' + len);\n }\n },\n });\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function normalizeS(s) {\n return isBiggerThanHalfOrder(s) ? modN(-s) : s;\n }\n // slice bytes num\n const slcNum = (b, from, to) => bytesToNumberBE(b.slice(from, to));\n /**\n * ECDSA signature with its (r, s) properties. Supports DER & compact representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n aInRange('r', r, _1n, CURVE_ORDER); // r in [1..N]\n aInRange('s', s, _1n, CURVE_ORDER); // s in [1..N]\n this.r = r;\n this.s = s;\n if (recovery != null)\n this.recovery = recovery;\n Object.freeze(this);\n }\n // pair (bytes of r, bytes of s)\n static fromCompact(hex) {\n const l = nByteLength;\n hex = ensureBytes('compactSignature', hex, l * 2);\n return new Signature(slcNum(hex, 0, l), slcNum(hex, l, 2 * l));\n }\n // DER encoded ECDSA signature\n // https://bitcoin.stackexchange.com/questions/57644/what-are-the-parts-of-a-bitcoin-transaction-input-script\n static fromDER(hex) {\n const { r, s } = DER.toSig(ensureBytes('DER', hex));\n return new Signature(r, s);\n }\n /**\n * @todo remove\n * @deprecated\n */\n assertValidity() { }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(msgHash) {\n const { r, s, recovery: rec } = this;\n const h = bits2int_modN(ensureBytes('msgHash', msgHash)); // Truncate hash\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n const radj = rec === 2 || rec === 3 ? r + CURVE.n : r;\n if (radj >= Fp.ORDER)\n throw new Error('recovery id 2 or 3 invalid');\n const prefix = (rec & 1) === 0 ? '02' : '03';\n const R = Point.fromHex(prefix + numToSizedHex(radj, Fp.BYTES));\n const ir = invN(radj); // r^-1\n const u1 = modN(-h * ir); // -hr^-1\n const u2 = modN(s * ir); // sr^-1\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2); // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1)\n if (!Q)\n throw new Error('point at infinify'); // unsafe is fine: no priv data leaked\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, modN(-this.s), this.recovery) : this;\n }\n // DER-encoded\n toDERRawBytes() {\n return hexToBytes(this.toDERHex());\n }\n toDERHex() {\n return DER.hexFromSig(this);\n }\n // padded bytes of r, then padded bytes of s\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n const l = nByteLength;\n return numToSizedHex(this.r, l) + numToSizedHex(this.s, l);\n }\n }\n const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normPrivateKeyToScalar(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n normPrivateKeyToScalar: normPrivateKeyToScalar,\n /**\n * Produces cryptographically secure private key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n randomPrivateKey: () => {\n const length = getMinHashLength(CURVE.n);\n return mapHashToField(CURVE.randomBytes(length), CURVE.n);\n },\n /**\n * Creates precompute table for an arbitrary EC point. Makes point \"cached\".\n * Allows to massively speed-up `point.multiply(scalar)`.\n * @returns cached point\n * @example\n * const fast = utils.precompute(8, ProjectivePoint.fromHex(someonesPubKey));\n * fast.multiply(privKey); // much faster ECDH now\n */\n precompute(windowSize = 8, point = Point.BASE) {\n point._setWindowSize(windowSize);\n point.multiply(BigInt(3)); // 3 is arbitrary, just need any number here\n return point;\n },\n };\n /**\n * Computes public key for a private key. Checks for validity of the private key.\n * @param privateKey private key\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(privateKey, isCompressed = true) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n if (typeof item === 'bigint')\n return false;\n if (item instanceof Point)\n return true;\n const arr = ensureBytes('key', item);\n const len = arr.length;\n const fpl = Fp.BYTES;\n const compLen = fpl + 1; // e.g. 33 for 32\n const uncompLen = 2 * fpl + 1; // e.g. 65 for 32\n if (CURVE.allowedPrivateKeyLengths || nByteLength === compLen) {\n return undefined;\n }\n else {\n return len === compLen || len === uncompLen;\n }\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from private key and public key.\n * Checks: 1) private key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param privateA private key\n * @param publicB different public key\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(privateA, publicB, isCompressed = true) {\n if (isProbPub(privateA) === true)\n throw new Error('first arg must be private key');\n if (isProbPub(publicB) === false)\n throw new Error('second arg must be public key');\n const b = Point.fromHex(publicB); // check for being on-curve\n return b.multiply(normPrivateKeyToScalar(privateA)).toRawBytes(isCompressed);\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = CURVE.bits2int ||\n function (bytes) {\n // Our custom check \"just in case\", for protection against DoS\n if (bytes.length > 8192)\n throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - nBitLength; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = CURVE.bits2int_modN ||\n function (bytes) {\n return modN(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // NOTE: pads output with zero as per spec\n const ORDER_MASK = bitMask(nBitLength);\n /**\n * Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`.\n */\n function int2octets(num) {\n aInRange('num < 2^' + nBitLength, num, _0n, ORDER_MASK);\n // works with order, can have different size than numToField!\n return numberToBytesBE(num, nByteLength);\n }\n // Steps A, D of RFC6979 3.2\n // Creates RFC6979 seed; converts msg/privKey to numbers.\n // Used only in sign, not in verify.\n // NOTE: we cannot assume here that msgHash has same amount of bytes as curve order,\n // this will be invalid at least for P521. Also it can be bigger for P224 + SHA256\n function prepSig(msgHash, privateKey, opts = defaultSigOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { hash, randomBytes } = CURVE;\n let { lowS, prehash, extraEntropy: ent } = opts; // generates low-s sigs by default\n if (lowS == null)\n lowS = true; // RFC6979 3.2: we skip step A, because we already provide hash\n msgHash = ensureBytes('msgHash', msgHash);\n validateSigVerOpts(opts);\n if (prehash)\n msgHash = ensureBytes('prehashed msgHash', hash(msgHash));\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with nBitLength % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(msgHash);\n const d = normPrivateKeyToScalar(privateKey); // validate private key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (ent != null && ent !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n const e = ent === true ? randomBytes(Fp.BYTES) : ent; // generate random bytes OR pass as-is\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n const k = bits2int(kBytes); // Cannot use fields methods, since it is group element\n if (!isWithinCurveOrder(k))\n return; // Important: all mod() calls here must be done over N\n const ik = invN(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = Gk\n const r = modN(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n const s = modN(ik * modN(m + r * d)); // Not using blinding here\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = normalizeS(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n const defaultSigOpts = { lowS: CURVE.lowS, prehash: false };\n const defaultVerOpts = { lowS: CURVE.lowS, prehash: false };\n /**\n * Signs message hash with a private key.\n * ```\n * sign(m, d, k) where\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr)/k mod n\n * ```\n * @param msgHash NOT message. msg needs to be hashed to `msgHash`, or use `prehash`.\n * @param privKey private key\n * @param opts lowS for non-malleable sigs. extraEntropy for mixing randomness into k. prehash will hash first arg.\n * @returns signature with recovery param\n */\n function sign(msgHash, privKey, opts = defaultSigOpts) {\n const { seed, k2sig } = prepSig(msgHash, privKey, opts); // Steps A, D of RFC6979 3.2.\n const C = CURVE;\n const drbg = createHmacDrbg(C.hash.outputLen, C.nByteLength, C.hmac);\n return drbg(seed, k2sig); // Steps B, C, D, E, F, G\n }\n // Enable precomputes. Slows down first publicKey computation by 20ms.\n Point.BASE._setWindowSize(8);\n // utils.precompute(8, ProjectivePoint.BASE)\n /**\n * Verifies a signature against message hash and public key.\n * Rejects lowS signatures by default: to override,\n * specify option `{lowS: false}`. Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * U1 = hs^-1 mod n\n * U2 = rs^-1 mod n\n * R = U1⋅G - U2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, msgHash, publicKey, opts = defaultVerOpts) {\n const sg = signature;\n msgHash = ensureBytes('msgHash', msgHash);\n publicKey = ensureBytes('publicKey', publicKey);\n const { lowS, prehash, format } = opts;\n // Verify opts, deduce signature format\n validateSigVerOpts(opts);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n if (format !== undefined && format !== 'compact' && format !== 'der')\n throw new Error('format must be compact or der');\n const isHex = typeof sg === 'string' || isBytes(sg);\n const isObj = !isHex &&\n !format &&\n typeof sg === 'object' &&\n sg !== null &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n let _sig = undefined;\n let P;\n try {\n if (isObj)\n _sig = new Signature(sg.r, sg.s);\n if (isHex) {\n // Signature can be represented in 2 ways: compact (2*nByteLength) & DER (variable-length).\n // Since DER can also be 2*nByteLength bytes, we check for it first.\n try {\n if (format !== 'compact')\n _sig = Signature.fromDER(sg);\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n }\n if (!_sig && format !== 'der')\n _sig = Signature.fromCompact(sg);\n }\n P = Point.fromHex(publicKey);\n }\n catch (error) {\n return false;\n }\n if (!_sig)\n return false;\n if (lowS && _sig.hasHighS())\n return false;\n if (prehash)\n msgHash = CURVE.hash(msgHash);\n const { r, s } = _sig;\n const h = bits2int_modN(msgHash); // Cannot use fields methods, since it is group element\n const is = invN(s); // s^-1\n const u1 = modN(h * is); // u1 = hs^-1 mod n\n const u2 = modN(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2)?.toAffine(); // R = u1⋅G + u2⋅P\n if (!R)\n return false;\n const v = modN(R.x);\n return v === r;\n }\n return {\n CURVE,\n getPublicKey,\n getSharedSecret,\n sign,\n verify,\n ProjectivePoint: Point,\n Signature,\n utils,\n };\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n validateField(Fp);\n if (!Fp.isValid(opts.A) || !Fp.isValid(opts.B) || !Fp.isValid(opts.Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, opts.Z);\n if (!Fp.isOdd)\n throw new Error('Fp.isOdd is not implemented!');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, opts.Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, opts.B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(opts.Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, opts.A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, opts.A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, opts.B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n x = Fp.mul(x, tv4_inv); // 25. x = x / tv4\n return { x, y };\n };\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac } from '@noble/hashes/hmac';\nimport { concatBytes, randomBytes } from '@noble/hashes/utils';\nimport { weierstrass } from \"./abstract/weierstrass.js\";\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n return {\n hash,\n hmac: (key, ...msgs) => hmac(hash, key, concatBytes(...msgs)),\n randomBytes,\n };\n}\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, ...getHash(hash) });\n return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","/**\n * NIST secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Seems to be rigid (not backdoored)\n * [as per discussion](https://bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975).\n *\n * secp256k1 belongs to Koblitz curves: it has efficiently computable endomorphism.\n * Endomorphism uses 2x less RAM, speeds up precomputation by 2x and ECDH / key recovery by 20%.\n * For precomputed wNAF it trades off 1/2 init time & 1/3 ram for 20% perf hit.\n * [See explanation](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2';\nimport { randomBytes } from '@noble/hashes/utils';\nimport { createCurve } from \"./_shortw_utils.js\";\nimport { createHasher, isogenyMap } from \"./abstract/hash-to-curve.js\";\nimport { Field, mod, pow2 } from \"./abstract/modular.js\";\nimport { aInRange, bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, } from \"./abstract/utils.js\";\nimport { mapToCurveSimpleSWU } from \"./abstract/weierstrass.js\";\nconst secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');\nconst secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst divNearest = (a, b) => (a + b / _2n) / b;\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1P;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fpk1.eql(Fpk1.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fpk1 = Field(secp256k1P, undefined, undefined, { sqrt: sqrtMod });\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const priv = secp256k1.utils.randomPrivateKey();\n * const pub = secp256k1.getPublicKey(priv);\n * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa\n * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available\n * const isValid = secp256k1.verify(sig, msg, pub) === true;\n * ```\n */\nexport const secp256k1 = createCurve({\n a: _0n,\n b: BigInt(7),\n Fp: Fpk1,\n n: secp256k1N,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n h: BigInt(1),\n lowS: true, // Allow only low-S signatures by default in sign() and verify()\n endo: {\n // Endomorphism, see above\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n splitScalar: (k) => {\n const n = secp256k1N;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalar: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n },\n },\n}, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toRawBytes(true).slice(1);\nconst numTo32b = (n) => numberToBytesBE(n, 32);\nconst modP = (x) => mod(x, secp256k1P);\nconst modN = (x) => mod(x, secp256k1N);\nconst Point = /* @__PURE__ */ (() => secp256k1.ProjectivePoint)();\nconst GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n let d_ = secp256k1.utils.normPrivateKeyToScalar(priv); // same method executed in fromPrivateKey\n let p = Point.fromPrivateKey(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = p.hasEvenY() ? d_ : modN(-d_);\n return { scalar: scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n aInRange('x', x, _1n, secp256k1P); // Fail if x ≥ p.\n const xx = modP(x * x);\n const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.\n if (y % _2n !== _0n)\n y = modP(-y); // Return the unique point P such that x(P) = x and\n const p = new Point(x, y, _1n); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return modN(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(privateKey) {\n return schnorrGetExtPubKey(privateKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, privateKey, auxRand = randomBytes(32)) {\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n const k_ = modN(num(rand)); // Let k' = int(rand) mod n\n if (k_ === _0n)\n throw new Error('sign failed: k is zero'); // Fail if k' = 0.\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(numTo32b(modN(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1P))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1N))\n return false;\n const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n\n const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P\n if (!R || !R.hasEvenY() || R.toAffine().x !== r)\n return false; // -eP == (n-e)P\n return true; // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const priv = schnorr.utils.randomPrivateKey();\n * const pub = schnorr.getPublicKey(priv);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, priv);\n * const isValid = schnorr.verify(sig, msg, pub);\n * ```\n */\nexport const schnorr = /* @__PURE__ */ (() => ({\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n utils: {\n randomPrivateKey: secp256k1.utils.randomPrivateKey,\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n taggedHash,\n mod,\n },\n}))();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n}))();\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.ProjectivePoint, (scalars) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fpk1.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\nexport const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();\nexport const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map"],"names":["setBigUint64","view","byteOffset","value","isLE","_32n","_u32_max","wh","wl","h","Chi","a","b","c","Maj","HashMD","Hash","blockLen","outputLen","padOffset","createView","data","aexists","toBytes","abytes","buffer","len","pos","take","dataView","out","aoutput","clean","i","oview","outLen","state","res","to","length","finished","destroyed","SHA256_IV","SHA256_K","SHA256_W","SHA256","A","B","C","D","E","F","G","H","offset","W15","W2","s0","rotr","s1","sigma1","T1","T2","sha256","createHasher","HMAC","hash","_key","ahash","key","pad","buf","oHash","iHash","hmac","message","_0n","_1n","isBytes","item","abool","title","numberToHexUnpadded","num","hex","hexToNumber","hasHexBuiltin","hexes","_","bytesToHex","bytes","asciis","asciiToBase16","ch","hexToBytes","hl","al","array","ai","hi","n1","n2","char","bytesToNumberBE","bytesToNumberLE","numberToBytesBE","numberToBytesLE","ensureBytes","expectedLength","e","concatBytes","arrays","sum","isPosBig","inRange","min","max","aInRange","n","bitLen","bitMask","u8n","u8fr","arr","createHmacDrbg","hashLen","qByteLen","hmacFn","v","k","reset","reseed","seed","gen","sl","pred","validatorFns","val","object","validateObject","validators","optValidators","checkField","fieldName","type","isOptional","checkVal","memoized","fn","map","arg","args","computed","_2n","_3n","_4n","_5n","_8n","mod","result","pow2","x","power","modulo","invert","number","u","q","r","m","sqrt3mod4","Fp","p1div4","root","sqrt5mod8","p5div8","nv","tonelliShanks","P","Q","S","Z","_Fp","Field","FpLegendre","cc","Q1div2","M","t","R","t_tmp","exponent","FpSqrt","FIELD_FIELDS","validateField","field","initial","opts","FpPow","p","d","FpInvertBatch","nums","passZero","inverted","multipliedAcc","acc","invertedAcc","p1mod2","powered","yes","zero","no","nLength","nBitLength","anumber","_nBitLength","nByteLength","ORDER","redef","BITS","BYTES","sqrtP","lhs","rhs","lst","getFieldBytesLength","fieldOrder","bitLength","getMinHashLength","mapHashToField","fieldLen","minLen","reduced","constTimeNegate","condition","neg","validateW","W","bits","calcWOpts","scalarBits","windows","windowSize","maxNumber","mask","shiftBy","calcOffsets","window","wOpts","wbits","nextN","offsetStart","isZero","isNeg","isNegF","validateMSMPoints","points","validateMSMScalars","scalars","s","pointPrecomputes","pointWindowSizes","getW","wNAF","elm","base","precomputes","f","wo","offsetF","transform","comp","prev","pippenger","fieldN","plength","slength","MASK","buckets","lastBits","j","scalar","resI","sumI","validateBasic","curve","validateSigVerOpts","validatePointOpts","endo","DERErr","DER","tag","dataLen","lenLen","first","isLong","lengthBytes","int","tlv","seqBytes","seqLeftBytes","rBytes","rLeftBytes","sBytes","sLeftBytes","sig","rs","ss","seq","numToSizedHex","size","weierstrassPoints","CURVE","Fn","_c","point","_isCompressed","fromBytes","tail","y","weierstrassEquation","x2","x3","isValidXY","left","right","_4a3","_27b2","isWithinCurveOrder","normPrivateKeyToScalar","lengths","wrapPrivateKey","N","aprjpoint","other","Point","toAffineMemo","iz","z","is0","ax","ay","zz","assertValidMemo","px","py","pz","toInv","privateKey","wnaf","X1","Y1","Z1","X2","Y2","Z2","U1","U2","b3","X3","Y3","Z3","t0","t1","t2","t3","t4","t5","sc","I","k1neg","k1","k2neg","k2","k1p","k2p","fake","f1p","f2p","mul","cofactor","isTorsionFree","clearCofactor","isCompressed","validateOpts","weierstrass","curveDef","CURVE_ORDER","compressedLen","uncompressedLen","modN","invN","cat","head","y2","sqrtError","suffix","isYOdd","cl","ul","isBiggerThanHalfOrder","HALF","normalizeS","slcNum","from","Signature","recovery","l","msgHash","rec","bits2int_modN","radj","prefix","ir","u1","u2","utils","getPublicKey","isProbPub","fpl","compLen","uncompLen","getSharedSecret","privateA","publicB","bits2int","delta","ORDER_MASK","int2octets","prepSig","defaultSigOpts","randomBytes","lowS","prehash","ent","h1int","seedArgs","k2sig","kBytes","ik","normS","defaultVerOpts","sign","privKey","verify","signature","publicKey","sg","format","isHex","isObj","_sig","derError","is","_a","getHash","msgs","createCurve","defHash","create","secp256k1P","secp256k1N","divNearest","sqrtMod","_6n","_11n","_22n","_23n","_44n","_88n","b2","b6","b9","b11","b22","b44","b88","b176","b220","b223","Fpk1","secp256k1","a1","b1","a2","POW_2_128","c1","c2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]} \ No newline at end of file diff --git a/dist/assets/send-B0RFCel8.js b/dist/assets/send-B0RFCel8.js new file mode 100644 index 0000000..6758b0a --- /dev/null +++ b/dist/assets/send-B0RFCel8.js @@ -0,0 +1,16 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + + `;export{l as sendSvg}; +//# sourceMappingURL=send-B0RFCel8.js.map diff --git a/dist/assets/send-B0RFCel8.js.map b/dist/assets/send-B0RFCel8.js.map new file mode 100644 index 0000000..86f0780 --- /dev/null +++ b/dist/assets/send-B0RFCel8.js.map @@ -0,0 +1 @@ +{"version":3,"file":"send-B0RFCel8.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/send.js"],"sourcesContent":["import { svg } from 'lit';\nexport const sendSvg = svg `\n \n `;\n//# sourceMappingURL=send.js.map"],"names":["sendSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/solana-Hjh6TSZA.js b/dist/assets/solana-Hjh6TSZA.js new file mode 100644 index 0000000..7d60dbc --- /dev/null +++ b/dist/assets/solana-Hjh6TSZA.js @@ -0,0 +1,14 @@ +import{p as C}from"./index-B95lHF7v.js";const i=C` + + + + + + + + + + + +`;export{i as solanaSvg}; +//# sourceMappingURL=solana-Hjh6TSZA.js.map diff --git a/dist/assets/solana-Hjh6TSZA.js.map b/dist/assets/solana-Hjh6TSZA.js.map new file mode 100644 index 0000000..27a9b91 --- /dev/null +++ b/dist/assets/solana-Hjh6TSZA.js.map @@ -0,0 +1 @@ +{"version":3,"file":"solana-Hjh6TSZA.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/solana.js"],"sourcesContent":["import { svg } from 'lit';\nexport const solanaSvg = svg `\n\n\n\n\n\n\n\n\n\n\n\n`;\n//# sourceMappingURL=solana.js.map"],"names":["solanaSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/swapHorizontal-CAehTkY-.js b/dist/assets/swapHorizontal-CAehTkY-.js new file mode 100644 index 0000000..d2da715 --- /dev/null +++ b/dist/assets/swapHorizontal-CAehTkY-.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as swapHorizontalSvg}; +//# sourceMappingURL=swapHorizontal-CAehTkY-.js.map diff --git a/dist/assets/swapHorizontal-CAehTkY-.js.map b/dist/assets/swapHorizontal-CAehTkY-.js.map new file mode 100644 index 0000000..d263b79 --- /dev/null +++ b/dist/assets/swapHorizontal-CAehTkY-.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swapHorizontal-CAehTkY-.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/swapHorizontal.js"],"sourcesContent":["import { svg } from 'lit';\nexport const swapHorizontalSvg = svg `\n \n`;\n//# sourceMappingURL=swapHorizontal.js.map"],"names":["swapHorizontalSvg","svg"],"mappings":"wCACY,MAACA,EAAoBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/swapHorizontalBold-DvKTTfUc.js b/dist/assets/swapHorizontalBold-DvKTTfUc.js new file mode 100644 index 0000000..850f9a5 --- /dev/null +++ b/dist/assets/swapHorizontalBold-DvKTTfUc.js @@ -0,0 +1,9 @@ +import{p as C}from"./index-B95lHF7v.js";const e=C` + +`;export{e as swapHorizontalBoldSvg}; +//# sourceMappingURL=swapHorizontalBold-DvKTTfUc.js.map diff --git a/dist/assets/swapHorizontalBold-DvKTTfUc.js.map b/dist/assets/swapHorizontalBold-DvKTTfUc.js.map new file mode 100644 index 0000000..e3d62c3 --- /dev/null +++ b/dist/assets/swapHorizontalBold-DvKTTfUc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swapHorizontalBold-DvKTTfUc.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/swapHorizontalBold.js"],"sourcesContent":["import { svg } from 'lit';\nexport const swapHorizontalBoldSvg = svg `\n \n`;\n//# sourceMappingURL=swapHorizontalBold.js.map"],"names":["swapHorizontalBoldSvg","svg"],"mappings":"wCACY,MAACA,EAAwBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/swapHorizontalMedium-CcGx0A28.js b/dist/assets/swapHorizontalMedium-CcGx0A28.js new file mode 100644 index 0000000..7cab3a0 --- /dev/null +++ b/dist/assets/swapHorizontalMedium-CcGx0A28.js @@ -0,0 +1,17 @@ +import{p as C}from"./index-B95lHF7v.js";const e=C` + + + +`;export{e as swapHorizontalMediumSvg}; +//# sourceMappingURL=swapHorizontalMedium-CcGx0A28.js.map diff --git a/dist/assets/swapHorizontalMedium-CcGx0A28.js.map b/dist/assets/swapHorizontalMedium-CcGx0A28.js.map new file mode 100644 index 0000000..52dabb1 --- /dev/null +++ b/dist/assets/swapHorizontalMedium-CcGx0A28.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swapHorizontalMedium-CcGx0A28.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/swapHorizontalMedium.js"],"sourcesContent":["import { svg } from 'lit';\nexport const swapHorizontalMediumSvg = svg `\n \n\n\n`;\n//# sourceMappingURL=swapHorizontalMedium.js.map"],"names":["swapHorizontalMediumSvg","svg"],"mappings":"wCACY,MAACA,EAA0BC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js b/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js new file mode 100644 index 0000000..44bdad5 --- /dev/null +++ b/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js @@ -0,0 +1,9 @@ +import{p as C}from"./index-B95lHF7v.js";const L=C` + +`;export{L as swapHorizontalRoundedBoldSvg}; +//# sourceMappingURL=swapHorizontalRoundedBold-CRAVa6kf.js.map diff --git a/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js.map b/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js.map new file mode 100644 index 0000000..1aa4615 --- /dev/null +++ b/dist/assets/swapHorizontalRoundedBold-CRAVa6kf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swapHorizontalRoundedBold-CRAVa6kf.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/swapHorizontalRoundedBold.js"],"sourcesContent":["import { svg } from 'lit';\nexport const swapHorizontalRoundedBoldSvg = svg `\n \n`;\n//# sourceMappingURL=swapHorizontalRoundedBold.js.map"],"names":["swapHorizontalRoundedBoldSvg","svg"],"mappings":"wCACY,MAACA,EAA+BC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/swapVertical-jPepe9MY.js b/dist/assets/swapVertical-jPepe9MY.js new file mode 100644 index 0000000..448ecd8 --- /dev/null +++ b/dist/assets/swapVertical-jPepe9MY.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + +`;export{e as swapVerticalSvg}; +//# sourceMappingURL=swapVertical-jPepe9MY.js.map diff --git a/dist/assets/swapVertical-jPepe9MY.js.map b/dist/assets/swapVertical-jPepe9MY.js.map new file mode 100644 index 0000000..e126f49 --- /dev/null +++ b/dist/assets/swapVertical-jPepe9MY.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swapVertical-jPepe9MY.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/swapVertical.js"],"sourcesContent":["import { svg } from 'lit';\nexport const swapVerticalSvg = svg `\n \n`;\n//# sourceMappingURL=swapVertical.js.map"],"names":["swapVerticalSvg","svg"],"mappings":"wCACY,MAACA,EAAkBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/telegram-D5qya3sQ.js b/dist/assets/telegram-D5qya3sQ.js new file mode 100644 index 0000000..1866ec2 --- /dev/null +++ b/dist/assets/telegram-D5qya3sQ.js @@ -0,0 +1,17 @@ +import{p as t}from"./index-B95lHF7v.js";const l=t` + + + + + + + + + + + + + + +`;export{l as telegramSvg}; +//# sourceMappingURL=telegram-D5qya3sQ.js.map diff --git a/dist/assets/telegram-D5qya3sQ.js.map b/dist/assets/telegram-D5qya3sQ.js.map new file mode 100644 index 0000000..e989432 --- /dev/null +++ b/dist/assets/telegram-D5qya3sQ.js.map @@ -0,0 +1 @@ +{"version":3,"file":"telegram-D5qya3sQ.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/telegram.js"],"sourcesContent":["import { svg } from 'lit';\nexport const telegramSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=telegram.js.map"],"names":["telegramSvg","svg"],"mappings":"wCACY,MAACA,EAAcC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/three-dots-DOdh90Nu.js b/dist/assets/three-dots-DOdh90Nu.js new file mode 100644 index 0000000..547bc63 --- /dev/null +++ b/dist/assets/three-dots-DOdh90Nu.js @@ -0,0 +1,6 @@ +import{p as t}from"./index-B95lHF7v.js";const l=t` + + + +`;export{l as threeDotsSvg}; +//# sourceMappingURL=three-dots-DOdh90Nu.js.map diff --git a/dist/assets/three-dots-DOdh90Nu.js.map b/dist/assets/three-dots-DOdh90Nu.js.map new file mode 100644 index 0000000..ee1b943 --- /dev/null +++ b/dist/assets/three-dots-DOdh90Nu.js.map @@ -0,0 +1 @@ +{"version":3,"file":"three-dots-DOdh90Nu.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/three-dots.js"],"sourcesContent":["import { svg } from 'lit';\nexport const threeDotsSvg = svg `\n \n \n \n`;\n//# sourceMappingURL=three-dots.js.map"],"names":["threeDotsSvg","svg"],"mappings":"wCACY,MAACA,EAAeC;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/twitch-CJDTeNMX.js b/dist/assets/twitch-CJDTeNMX.js new file mode 100644 index 0000000..f55fb33 --- /dev/null +++ b/dist/assets/twitch-CJDTeNMX.js @@ -0,0 +1,19 @@ +import{p as l}from"./index-B95lHF7v.js";const i=l` + + + + + + + + + + + + + +`;export{i as twitchSvg}; +//# sourceMappingURL=twitch-CJDTeNMX.js.map diff --git a/dist/assets/twitch-CJDTeNMX.js.map b/dist/assets/twitch-CJDTeNMX.js.map new file mode 100644 index 0000000..f2f8fab --- /dev/null +++ b/dist/assets/twitch-CJDTeNMX.js.map @@ -0,0 +1 @@ +{"version":3,"file":"twitch-CJDTeNMX.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/twitch.js"],"sourcesContent":["import { svg } from 'lit';\nexport const twitchSvg = svg `\n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=twitch.js.map"],"names":["twitchSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/twitterIcon-vRf9ZPKi.js b/dist/assets/twitterIcon-vRf9ZPKi.js new file mode 100644 index 0000000..aa56f81 --- /dev/null +++ b/dist/assets/twitterIcon-vRf9ZPKi.js @@ -0,0 +1,7 @@ +import{p as o}from"./index-B95lHF7v.js";const c=o` + +`;export{c as twitterIconSvg}; +//# sourceMappingURL=twitterIcon-vRf9ZPKi.js.map diff --git a/dist/assets/twitterIcon-vRf9ZPKi.js.map b/dist/assets/twitterIcon-vRf9ZPKi.js.map new file mode 100644 index 0000000..d590a5f --- /dev/null +++ b/dist/assets/twitterIcon-vRf9ZPKi.js.map @@ -0,0 +1 @@ +{"version":3,"file":"twitterIcon-vRf9ZPKi.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/twitterIcon.js"],"sourcesContent":["import { svg } from 'lit';\nexport const twitterIconSvg = svg `\n \n`;\n//# sourceMappingURL=twitterIcon.js.map"],"names":["twitterIconSvg","svg"],"mappings":"wCACY,MAACA,EAAiBC;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/user-DovnTMxb.js b/dist/assets/user-DovnTMxb.js new file mode 100644 index 0000000..6b764f7 --- /dev/null +++ b/dist/assets/user-DovnTMxb.js @@ -0,0 +1,4 @@ +import{p as C}from"./index-B95lHF7v.js";const l=C` + +`;export{l as userSvg}; +//# sourceMappingURL=user-DovnTMxb.js.map diff --git a/dist/assets/user-DovnTMxb.js.map b/dist/assets/user-DovnTMxb.js.map new file mode 100644 index 0000000..f5c168f --- /dev/null +++ b/dist/assets/user-DovnTMxb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"user-DovnTMxb.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/user.js"],"sourcesContent":["import { svg } from 'lit';\nexport const userSvg = svg `\n\n`;\n//# sourceMappingURL=user.js.map"],"names":["userSvg","svg"],"mappings":"wCACY,MAACA,EAAUC;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/verify-BOhu4jLv.js b/dist/assets/verify-BOhu4jLv.js new file mode 100644 index 0000000..bae483e --- /dev/null +++ b/dist/assets/verify-BOhu4jLv.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const c=l` + +`;export{c as verifySvg}; +//# sourceMappingURL=verify-BOhu4jLv.js.map diff --git a/dist/assets/verify-BOhu4jLv.js.map b/dist/assets/verify-BOhu4jLv.js.map new file mode 100644 index 0000000..9709341 --- /dev/null +++ b/dist/assets/verify-BOhu4jLv.js.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-BOhu4jLv.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/verify.js"],"sourcesContent":["import { svg } from 'lit';\nexport const verifySvg = svg `\n \n`;\n//# sourceMappingURL=verify.js.map"],"names":["verifySvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/verify-filled-Csf3Zkz0.js b/dist/assets/verify-filled-Csf3Zkz0.js new file mode 100644 index 0000000..64f1627 --- /dev/null +++ b/dist/assets/verify-filled-Csf3Zkz0.js @@ -0,0 +1,9 @@ +import{p as l}from"./index-B95lHF7v.js";const o=l` + +`;export{o as verifyFilledSvg}; +//# sourceMappingURL=verify-filled-Csf3Zkz0.js.map diff --git a/dist/assets/verify-filled-Csf3Zkz0.js.map b/dist/assets/verify-filled-Csf3Zkz0.js.map new file mode 100644 index 0000000..8c50e2c --- /dev/null +++ b/dist/assets/verify-filled-Csf3Zkz0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"verify-filled-Csf3Zkz0.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/verify-filled.js"],"sourcesContent":["import { svg } from 'lit';\nexport const verifyFilledSvg = svg `\n \n`;\n//# sourceMappingURL=verify-filled.js.map"],"names":["verifyFilledSvg","svg"],"mappings":"wCACY,MAACA,EAAkBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/w3m-modal-DlnuRkWU.js b/dist/assets/w3m-modal-DlnuRkWU.js new file mode 100644 index 0000000..c768b0d --- /dev/null +++ b/dist/assets/w3m-modal-DlnuRkWU.js @@ -0,0 +1,643 @@ +import{w as ve,u as ge,v as be,y as ye,M as m,z as K,R as l,d as xe,i as v,a as B,b as g,x as a,B as M,e as ce,t as le,l as h,k as G,m as Ce,D as W,E as oe,O as _,C as F,F as ae,n as N,A as H,T as ke,G as Se,P as We,c as $e,f as Re}from"./index-B95lHF7v.js";import{c as u,n as w,r as d,o as J,U as Te}from"./index-BRPyA7QR.js";const p=ge({message:"",open:!1,triggerRect:{width:0,height:0,top:0,left:0},variant:"shade"}),Ae={state:p,subscribe(n){return ye(p,()=>n(p))},subscribeKey(n,e){return be(p,n,e)},showTooltip({message:n,triggerRect:e,variant:t}){p.open=!0,p.message=n,p.triggerRect=e,p.variant=t},hide(){p.open=!1,p.message="",p.triggerRect={width:0,height:0,top:0,left:0}}},I=ve(Ae),de={isUnsupportedChainView(){return l.state.view==="UnsupportedChain"||l.state.view==="SwitchNetwork"&&l.state.history.includes("UnsupportedChain")},async safeClose(){if(this.isUnsupportedChainView()){m.shake();return}if(await K.isSIWXCloseDisabled()){m.shake();return}(l.state.view==="DataCapture"||l.state.view==="DataCaptureOtpConfirm")&&xe.disconnect(),m.close()}},Ee=v` + :host { + display: block; + border-radius: clamp(0px, var(--wui-border-radius-l), 44px); + box-shadow: 0 0 0 1px var(--wui-color-gray-glass-005); + background-color: var(--wui-color-modal-bg); + overflow: hidden; + } + + :host([data-embedded='true']) { + box-shadow: + 0 0 0 1px var(--wui-color-gray-glass-005), + 0px 4px 12px 4px var(--w3m-card-embedded-shadow-color); + } +`;var Oe=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let Q=class extends g{render(){return a``}};Q.styles=[B,Ee];Q=Oe([u("wui-card")],Q);const Ne=v` + :host { + display: flex; + align-items: center; + justify-content: center; + padding: var(--wui-spacing-s); + border-radius: var(--wui-border-radius-s); + border: 1px solid var(--wui-color-dark-glass-100); + box-sizing: border-box; + background-color: var(--wui-color-bg-325); + box-shadow: 0px 0px 16px 0px rgba(0, 0, 0, 0.25); + } + + wui-flex { + width: 100%; + } + + wui-text { + word-break: break-word; + flex: 1; + } + + .close { + cursor: pointer; + } + + .icon-box { + height: 40px; + width: 40px; + border-radius: var(--wui-border-radius-3xs); + background-color: var(--local-icon-bg-value); + } +`;var j=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let $=class extends g{constructor(){super(...arguments),this.message="",this.backgroundColor="accent-100",this.iconColor="accent-100",this.icon="info"}render(){return this.style.cssText=` + --local-icon-bg-value: var(--wui-color-${this.backgroundColor}); + `,a` + + + + + + ${this.message} + + + + `}onClose(){M.close()}};$.styles=[B,Ne];j([w()],$.prototype,"message",void 0);j([w()],$.prototype,"backgroundColor",void 0);j([w()],$.prototype,"iconColor",void 0);j([w()],$.prototype,"icon",void 0);$=j([u("wui-alertbar")],$);const Ie=v` + :host { + display: block; + position: absolute; + top: var(--wui-spacing-s); + left: var(--wui-spacing-l); + right: var(--wui-spacing-l); + opacity: 0; + pointer-events: none; + } +`;var we=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};const Pe={info:{backgroundColor:"fg-350",iconColor:"fg-325",icon:"info"},success:{backgroundColor:"success-glass-reown-020",iconColor:"success-125",icon:"checkmark"},warning:{backgroundColor:"warning-glass-reown-020",iconColor:"warning-100",icon:"warningCircle"},error:{backgroundColor:"error-glass-reown-020",iconColor:"error-125",icon:"exclamationTriangle"}};let V=class extends g{constructor(){super(),this.unsubscribe=[],this.open=M.state.open,this.onOpen(!0),this.unsubscribe.push(M.subscribeKey("open",e=>{this.open=e,this.onOpen(!1)}))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){const{message:e,variant:t}=M.state,o=Pe[t];return a` + + `}onOpen(e){this.open?(this.animate([{opacity:0,transform:"scale(0.85)"},{opacity:1,transform:"scale(1)"}],{duration:150,fill:"forwards",easing:"ease"}),this.style.cssText="pointer-events: auto"):e||(this.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"scale(0.85)"}],{duration:150,fill:"forwards",easing:"ease"}),this.style.cssText="pointer-events: none")}};V.styles=Ie;we([d()],V.prototype,"open",void 0);V=we([u("w3m-alertbar")],V);const _e=v` + button { + border-radius: var(--local-border-radius); + color: var(--wui-color-fg-100); + padding: var(--local-padding); + } + + @media (max-width: 700px) { + :host(:not([size='sm'])) button { + padding: var(--wui-spacing-s); + } + } + + button > wui-icon { + pointer-events: none; + } + + button:disabled > wui-icon { + color: var(--wui-color-bg-300) !important; + } + + button:disabled { + background-color: transparent; + } +`;var U=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let R=class extends g{constructor(){super(...arguments),this.size="md",this.disabled=!1,this.icon="copy",this.iconColor="inherit"}render(){this.dataset.size=this.size;let e="",t="";switch(this.size){case"lg":e="--wui-border-radius-xs",t="--wui-spacing-1xs";break;case"sm":e="--wui-border-radius-3xs",t="--wui-spacing-xxs";break;default:e="--wui-border-radius-xxs",t="--wui-spacing-2xs";break}return this.style.cssText=` + --local-border-radius: var(${e}); + --local-padding: var(${t}); + `,a` + + `}};R.styles=[B,ce,le,_e];U([w()],R.prototype,"size",void 0);U([w({type:Boolean})],R.prototype,"disabled",void 0);U([w()],R.prototype,"icon",void 0);U([w()],R.prototype,"iconColor",void 0);R=U([u("wui-icon-link")],R);const De=v` + button { + display: block; + display: flex; + align-items: center; + padding: var(--wui-spacing-xxs); + gap: var(--wui-spacing-xxs); + transition: all var(--wui-ease-out-power-1) var(--wui-duration-md); + border-radius: var(--wui-border-radius-xxs); + } + + wui-image { + border-radius: 100%; + width: var(--wui-spacing-xl); + height: var(--wui-spacing-xl); + } + + wui-icon-box { + width: var(--wui-spacing-xl); + height: var(--wui-spacing-xl); + } + + button:hover { + background-color: var(--wui-color-gray-glass-002); + } + + button:active { + background-color: var(--wui-color-gray-glass-005); + } +`;var ue=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let X=class extends g{constructor(){super(...arguments),this.imageSrc=""}render(){return a``}imageTemplate(){return this.imageSrc?a``:a``}};X.styles=[B,ce,le,De];ue([w()],X.prototype,"imageSrc",void 0);X=ue([u("wui-select")],X);const Be=v` + :host { + height: 64px; + } + + wui-text { + text-transform: capitalize; + } + + wui-flex.w3m-header-title { + transform: translateY(0); + opacity: 1; + } + + wui-flex.w3m-header-title[view-direction='prev'] { + animation: + slide-down-out 120ms forwards var(--wui-ease-out-power-2), + slide-down-in 120ms forwards var(--wui-ease-out-power-2); + animation-delay: 0ms, 200ms; + } + + wui-flex.w3m-header-title[view-direction='next'] { + animation: + slide-up-out 120ms forwards var(--wui-ease-out-power-2), + slide-up-in 120ms forwards var(--wui-ease-out-power-2); + animation-delay: 0ms, 200ms; + } + + wui-icon-link[data-hidden='true'] { + opacity: 0 !important; + pointer-events: none; + } + + @keyframes slide-up-out { + from { + transform: translateY(0px); + opacity: 1; + } + to { + transform: translateY(3px); + opacity: 0; + } + } + + @keyframes slide-up-in { + from { + transform: translateY(-3px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } + } + + @keyframes slide-down-out { + from { + transform: translateY(0px); + opacity: 1; + } + to { + transform: translateY(-3px); + opacity: 0; + } + } + + @keyframes slide-down-in { + from { + transform: translateY(3px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } + } +`;var x=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};const je=["SmartSessionList"];function q(){var r,c,S,b,E,O,z;const n=(c=(r=l.state.data)==null?void 0:r.connector)==null?void 0:c.name,e=(b=(S=l.state.data)==null?void 0:S.wallet)==null?void 0:b.name,t=(O=(E=l.state.data)==null?void 0:E.network)==null?void 0:O.name,o=e??n,s=F.getConnectors();return{Connect:`Connect ${s.length===1&&((z=s[0])==null?void 0:z.id)==="w3m-email"?"Email":""} Wallet`,Create:"Create Wallet",ChooseAccountName:void 0,Account:void 0,AccountSettings:void 0,AllWallets:"All Wallets",ApproveTransaction:"Approve Transaction",BuyInProgress:"Buy",ConnectingExternal:o??"Connect Wallet",ConnectingWalletConnect:o??"WalletConnect",ConnectingWalletConnectBasic:"WalletConnect",ConnectingSiwe:"Sign In",Convert:"Convert",ConvertSelectToken:"Select token",ConvertPreview:"Preview convert",Downloads:o?`Get ${o}`:"Downloads",EmailLogin:"Email Login",EmailVerifyOtp:"Confirm Email",EmailVerifyDevice:"Register Device",GetWallet:"Get a wallet",Networks:"Choose Network",OnRampProviders:"Choose Provider",OnRampActivity:"Activity",OnRampTokenSelect:"Select Token",OnRampFiatSelect:"Select Currency",Pay:"How you pay",ProfileWallets:"Wallets",SwitchNetwork:t??"Switch Network",Transactions:"Activity",UnsupportedChain:"Switch Network",UpgradeEmailWallet:"Upgrade your Wallet",UpdateEmailWallet:"Edit Email",UpdateEmailPrimaryOtp:"Confirm Current Email",UpdateEmailSecondaryOtp:"Confirm New Email",WhatIsABuy:"What is Buy?",RegisterAccountName:"Choose name",RegisterAccountNameSuccess:"",WalletReceive:"Receive",WalletCompatibleNetworks:"Compatible Networks",Swap:"Swap",SwapSelectToken:"Select token",SwapPreview:"Preview swap",WalletSend:"Send",WalletSendPreview:"Review send",WalletSendSelectToken:"Select Token",WhatIsANetwork:"What is a network?",WhatIsAWallet:"What is a wallet?",ConnectWallets:"Connect wallet",ConnectSocials:"All socials",ConnectingSocial:ae.state.socialProvider?ae.state.socialProvider:"Connect Social",ConnectingMultiChain:"Select chain",ConnectingFarcaster:"Farcaster",SwitchActiveChain:"Switch chain",SmartSessionCreated:void 0,SmartSessionList:"Smart Sessions",SIWXSignMessage:"Sign In",PayLoading:"Payment in progress",DataCapture:"Profile",DataCaptureOtpConfirm:"Confirm Email"}}let f=class extends g{constructor(){super(),this.unsubscribe=[],this.heading=q()[l.state.view],this.network=h.state.activeCaipNetwork,this.networkImage=G.getNetworkImage(this.network),this.showBack=!1,this.prevHistoryLength=1,this.view=l.state.view,this.viewDirection="",this.headerText=q()[l.state.view],this.unsubscribe.push(Ce.subscribeNetworkImages(()=>{this.networkImage=G.getNetworkImage(this.network)}),l.subscribeKey("view",e=>{setTimeout(()=>{this.view=e,this.headerText=q()[e]},W.ANIMATION_DURATIONS.HeaderText),this.onViewChange(),this.onHistoryChange()}),h.subscribeKey("activeCaipNetwork",e=>{this.network=e,this.networkImage=G.getNetworkImage(this.network)}))}disconnectCallback(){this.unsubscribe.forEach(e=>e())}render(){return a` + + ${this.leftHeaderTemplate()} ${this.titleTemplate()} ${this.rightHeaderTemplate()} + + `}onWalletHelp(){oe.sendEvent({type:"track",event:"CLICK_WALLET_HELP"}),l.push("WhatIsAWallet")}async onClose(){await de.safeClose()}rightHeaderTemplate(){var t,o,s;const e=(s=(o=(t=_)==null?void 0:t.state)==null?void 0:o.features)==null?void 0:s.smartSessions;return l.state.view!=="Account"||!e?this.closeButtonTemplate():a` + l.push("SmartSessionList")} + data-testid="w3m-header-smart-sessions" + > + ${this.closeButtonTemplate()} + `}closeButtonTemplate(){return a` + + `}titleTemplate(){const e=je.includes(this.view);return a` + + ${this.headerText} + ${e?a`Beta`:null} + + `}leftHeaderTemplate(){var b;const{view:e}=l.state,t=e==="Connect",o=_.state.enableEmbedded,s=e==="ApproveTransaction",i=e==="ConnectingSiwe",r=e==="Account",c=_.state.enableNetworkSwitch,S=s||i||t&&o;return r&&c?a``:this.showBack&&!S?a``:a``}onNetworks(){this.isAllowedNetworkSwitch()&&(oe.sendEvent({type:"track",event:"CLICK_NETWORKS"}),l.push("Networks"))}isAllowedNetworkSwitch(){const e=h.getAllRequestedCaipNetworks(),t=e?e.length>1:!1,o=e==null?void 0:e.find(({id:s})=>{var i;return s===((i=this.network)==null?void 0:i.id)});return t||!o}getPadding(){return this.heading?["l","2l","l","2l"]:["0","2l","0","2l"]}onViewChange(){const{history:e}=l.state;let t=W.VIEW_DIRECTION.Next;e.length1&&!this.showBack&&t?(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!0,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"})):e.length<=1&&this.showBack&&t&&(await t.animate([{opacity:1},{opacity:0}],{duration:200,fill:"forwards",easing:"ease"}).finished,this.showBack=!1,t.animate([{opacity:0},{opacity:1}],{duration:200,fill:"forwards",easing:"ease"}))}onGoBack(){l.goBack()}};f.styles=Be;x([d()],f.prototype,"heading",void 0);x([d()],f.prototype,"network",void 0);x([d()],f.prototype,"networkImage",void 0);x([d()],f.prototype,"showBack",void 0);x([d()],f.prototype,"prevHistoryLength",void 0);x([d()],f.prototype,"view",void 0);x([d()],f.prototype,"viewDirection",void 0);x([d()],f.prototype,"headerText",void 0);f=x([u("w3m-header")],f);const Ue=v` + :host { + display: flex; + column-gap: var(--wui-spacing-s); + align-items: center; + padding: var(--wui-spacing-xs) var(--wui-spacing-m) var(--wui-spacing-xs) var(--wui-spacing-xs); + border-radius: var(--wui-border-radius-s); + border: 1px solid var(--wui-color-gray-glass-005); + box-sizing: border-box; + background-color: var(--wui-color-bg-175); + box-shadow: + 0px 14px 64px -4px rgba(0, 0, 0, 0.15), + 0px 8px 22px -6px rgba(0, 0, 0, 0.15); + + max-width: 300px; + } + + :host wui-loading-spinner { + margin-left: var(--wui-spacing-3xs); + } +`;var A=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let y=class extends g{constructor(){super(...arguments),this.backgroundColor="accent-100",this.iconColor="accent-100",this.icon="checkmark",this.message="",this.loading=!1,this.iconType="default"}render(){return a` + ${this.templateIcon()} + ${this.message} + `}templateIcon(){return this.loading?a``:this.iconType==="default"?a``:a``}};y.styles=[B,Ue];A([w()],y.prototype,"backgroundColor",void 0);A([w()],y.prototype,"iconColor",void 0);A([w()],y.prototype,"icon",void 0);A([w()],y.prototype,"message",void 0);A([w()],y.prototype,"loading",void 0);A([w()],y.prototype,"iconType",void 0);y=A([u("wui-snackbar")],y);const Le=v` + :host { + display: block; + position: absolute; + opacity: 0; + pointer-events: none; + top: 11px; + left: 50%; + width: max-content; + } +`;var pe=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};const ze={loading:void 0,success:{backgroundColor:"success-100",iconColor:"success-100",icon:"checkmark"},error:{backgroundColor:"error-100",iconColor:"error-100",icon:"close"}};let Y=class extends g{constructor(){super(),this.unsubscribe=[],this.timeout=void 0,this.open=N.state.open,this.unsubscribe.push(N.subscribeKey("open",e=>{this.open=e,this.onOpen()}))}disconnectedCallback(){clearTimeout(this.timeout),this.unsubscribe.forEach(e=>e())}render(){const{message:e,variant:t,svg:o}=N.state,s=ze[t],{icon:i,iconColor:r}=o??s??{};return a` + + `}onOpen(){clearTimeout(this.timeout),this.open?(this.animate([{opacity:0,transform:"translateX(-50%) scale(0.85)"},{opacity:1,transform:"translateX(-50%) scale(1)"}],{duration:150,fill:"forwards",easing:"ease"}),this.timeout&&clearTimeout(this.timeout),N.state.autoClose&&(this.timeout=setTimeout(()=>N.hide(),2500))):this.animate([{opacity:1,transform:"translateX(-50%) scale(1)"},{opacity:0,transform:"translateX(-50%) scale(0.85)"}],{duration:150,fill:"forwards",easing:"ease"})}};Y.styles=Le;pe([d()],Y.prototype,"open",void 0);Y=pe([u("w3m-snackbar")],Y);const He=v` + :host { + pointer-events: none; + } + + :host > wui-flex { + display: var(--w3m-tooltip-display); + opacity: var(--w3m-tooltip-opacity); + padding: 9px var(--wui-spacing-s) 10px var(--wui-spacing-s); + border-radius: var(--wui-border-radius-xxs); + color: var(--wui-color-bg-100); + position: fixed; + top: var(--w3m-tooltip-top); + left: var(--w3m-tooltip-left); + transform: translate(calc(-50% + var(--w3m-tooltip-parent-width)), calc(-100% - 8px)); + max-width: calc(var(--w3m-modal-width) - var(--wui-spacing-xl)); + transition: opacity 0.2s var(--wui-ease-out-power-2); + will-change: opacity; + } + + :host([data-variant='shade']) > wui-flex { + background-color: var(--wui-color-bg-150); + border: 1px solid var(--wui-color-gray-glass-005); + } + + :host([data-variant='shade']) > wui-flex > wui-text { + color: var(--wui-color-fg-150); + } + + :host([data-variant='fill']) > wui-flex { + background-color: var(--wui-color-fg-100); + border: none; + } + + wui-icon { + position: absolute; + width: 12px !important; + height: 4px !important; + color: var(--wui-color-bg-150); + } + + wui-icon[data-placement='top'] { + bottom: 0px; + left: 50%; + transform: translate(-50%, 95%); + } + + wui-icon[data-placement='bottom'] { + top: 0; + left: 50%; + transform: translate(-50%, -95%) rotate(180deg); + } + + wui-icon[data-placement='right'] { + top: 50%; + left: 0; + transform: translate(-65%, -50%) rotate(90deg); + } + + wui-icon[data-placement='left'] { + top: 50%; + right: 0%; + transform: translate(65%, -50%) rotate(270deg); + } +`;var L=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let T=class extends g{constructor(){super(),this.unsubscribe=[],this.open=I.state.open,this.message=I.state.message,this.triggerRect=I.state.triggerRect,this.variant=I.state.variant,this.unsubscribe.push(I.subscribe(e=>{this.open=e.open,this.message=e.message,this.triggerRect=e.triggerRect,this.variant=e.variant}))}disconnectedCallback(){this.unsubscribe.forEach(e=>e())}render(){this.dataset.variant=this.variant;const e=this.triggerRect.top,t=this.triggerRect.left;return this.style.cssText=` + --w3m-tooltip-top: ${e}px; + --w3m-tooltip-left: ${t}px; + --w3m-tooltip-parent-width: ${this.triggerRect.width/2}px; + --w3m-tooltip-display: ${this.open?"flex":"none"}; + --w3m-tooltip-opacity: ${this.open?1:0}; + `,a` + + ${this.message} + `}};T.styles=[He];L([d()],T.prototype,"open",void 0);L([d()],T.prototype,"message",void 0);L([d()],T.prototype,"triggerRect",void 0);L([d()],T.prototype,"variant",void 0);T=L([u("w3m-tooltip"),u("w3m-tooltip")],T);const Ke=v` + :host { + --prev-height: 0px; + --new-height: 0px; + display: block; + } + + div.w3m-router-container { + transform: translateY(0); + opacity: 1; + } + + div.w3m-router-container[view-direction='prev'] { + animation: + slide-left-out 150ms forwards ease, + slide-left-in 150ms forwards ease; + animation-delay: 0ms, 200ms; + } + + div.w3m-router-container[view-direction='next'] { + animation: + slide-right-out 150ms forwards ease, + slide-right-in 150ms forwards ease; + animation-delay: 0ms, 200ms; + } + + @keyframes slide-left-out { + from { + transform: translateX(0px); + opacity: 1; + } + to { + transform: translateX(10px); + opacity: 0; + } + } + + @keyframes slide-left-in { + from { + transform: translateX(-10px); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } + } + + @keyframes slide-right-out { + from { + transform: translateX(0px); + opacity: 1; + } + to { + transform: translateX(-10px); + opacity: 0; + } + } + + @keyframes slide-right-in { + from { + transform: translateX(10px); + opacity: 0; + } + to { + transform: translateX(0); + opacity: 1; + } + } +`;var Z=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};let D=class extends g{constructor(){super(),this.resizeObserver=void 0,this.prevHeight="0px",this.prevHistoryLength=1,this.unsubscribe=[],this.view=l.state.view,this.viewDirection="",this.unsubscribe.push(l.subscribeKey("view",e=>this.onViewChange(e)))}firstUpdated(){var e;this.resizeObserver=new ResizeObserver(([t])=>{const o=`${t==null?void 0:t.contentRect.height}px`;this.prevHeight!=="0px"&&(this.style.setProperty("--prev-height",this.prevHeight),this.style.setProperty("--new-height",o),this.style.animation="w3m-view-height 150ms forwards ease",this.style.height="auto"),setTimeout(()=>{this.prevHeight=o,this.style.animation="unset"},W.ANIMATION_DURATIONS.ModalHeight)}),(e=this.resizeObserver)==null||e.observe(this.getWrapper())}disconnectedCallback(){var e;(e=this.resizeObserver)==null||e.unobserve(this.getWrapper()),this.unsubscribe.forEach(t=>t())}render(){return a`
+ ${this.viewTemplate()} +
`}viewTemplate(){switch(this.view){case"AccountSettings":return a``;case"Account":return a``;case"AllWallets":return a``;case"ApproveTransaction":return a``;case"BuyInProgress":return a``;case"ChooseAccountName":return a``;case"Connect":return a``;case"Create":return a``;case"ConnectingWalletConnect":return a``;case"ConnectingWalletConnectBasic":return a``;case"ConnectingExternal":return a``;case"ConnectingSiwe":return a``;case"ConnectWallets":return a``;case"ConnectSocials":return a``;case"ConnectingSocial":return a``;case"DataCapture":return a``;case"DataCaptureOtpConfirm":return a``;case"Downloads":return a``;case"EmailLogin":return a``;case"EmailVerifyOtp":return a``;case"EmailVerifyDevice":return a``;case"GetWallet":return a``;case"Networks":return a``;case"SwitchNetwork":return a``;case"ProfileWallets":return a``;case"Transactions":return a``;case"OnRampProviders":return a``;case"OnRampTokenSelect":return a``;case"OnRampFiatSelect":return a``;case"UpgradeEmailWallet":return a``;case"UpdateEmailWallet":return a``;case"UpdateEmailPrimaryOtp":return a``;case"UpdateEmailSecondaryOtp":return a``;case"UnsupportedChain":return a``;case"Swap":return a``;case"SwapSelectToken":return a``;case"SwapPreview":return a``;case"WalletSend":return a``;case"WalletSendSelectToken":return a``;case"WalletSendPreview":return a``;case"WhatIsABuy":return a``;case"WalletReceive":return a``;case"WalletCompatibleNetworks":return a``;case"WhatIsAWallet":return a``;case"ConnectingMultiChain":return a``;case"WhatIsANetwork":return a``;case"ConnectingFarcaster":return a``;case"SwitchActiveChain":return a``;case"RegisterAccountName":return a``;case"RegisterAccountNameSuccess":return a``;case"SmartSessionCreated":return a``;case"SmartSessionList":return a``;case"SIWXSignMessage":return a``;case"Pay":return a``;case"PayLoading":return a``;default:return a``}}onViewChange(e){I.hide();let t=W.VIEW_DIRECTION.Next;const{history:o}=l.state;o.length{this.view=e},W.ANIMATION_DURATIONS.ViewTransition)}getWrapper(){var e;return(e=this.shadowRoot)==null?void 0:e.querySelector("div")}};D.styles=Ke;Z([d()],D.prototype,"view",void 0);Z([d()],D.prototype,"viewDirection",void 0);D=Z([u("w3m-router")],D);const Me=v` + :host { + z-index: var(--w3m-z-index); + display: block; + backface-visibility: hidden; + will-change: opacity; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + pointer-events: none; + opacity: 0; + background-color: var(--wui-cover); + transition: opacity 0.2s var(--wui-ease-out-power-2); + will-change: opacity; + } + + :host(.open) { + opacity: 1; + } + + :host(.appkit-modal) { + position: relative; + pointer-events: unset; + background: none; + width: 100%; + opacity: 1; + } + + wui-card { + max-width: var(--w3m-modal-width); + width: 100%; + position: relative; + animation: zoom-in 0.2s var(--wui-ease-out-power-2); + animation-fill-mode: backwards; + outline: none; + transition: + border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1), + background-color var(--wui-duration-lg) var(--wui-ease-out-power-1); + will-change: border-radius, background-color; + } + + :host(.appkit-modal) wui-card { + max-width: 400px; + } + + wui-card[shake='true'] { + animation: + zoom-in 0.2s var(--wui-ease-out-power-2), + w3m-shake 0.5s var(--wui-ease-out-power-2); + } + + wui-flex { + overflow-x: hidden; + overflow-y: auto; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + + @media (max-height: 700px) and (min-width: 431px) { + wui-flex { + align-items: flex-start; + } + + wui-card { + margin: var(--wui-spacing-xxl) 0px; + } + } + + @media (max-width: 430px) { + wui-flex { + align-items: flex-end; + } + + wui-card { + max-width: 100%; + border-bottom-left-radius: var(--local-border-bottom-mobile-radius); + border-bottom-right-radius: var(--local-border-bottom-mobile-radius); + border-bottom: none; + animation: slide-in 0.2s var(--wui-ease-out-power-2); + } + + wui-card[shake='true'] { + animation: + slide-in 0.2s var(--wui-ease-out-power-2), + w3m-shake 0.5s var(--wui-ease-out-power-2); + } + } + + @keyframes zoom-in { + 0% { + transform: scale(0.95) translateY(0); + } + 100% { + transform: scale(1) translateY(0); + } + } + + @keyframes slide-in { + 0% { + transform: scale(1) translateY(50px); + } + 100% { + transform: scale(1) translateY(0); + } + } + + @keyframes w3m-shake { + 0% { + transform: scale(1) rotate(0deg); + } + 20% { + transform: scale(1) rotate(-1deg); + } + 40% { + transform: scale(1) rotate(1.5deg); + } + 60% { + transform: scale(1) rotate(-1.5deg); + } + 80% { + transform: scale(1) rotate(1deg); + } + 100% { + transform: scale(1) rotate(0deg); + } + } + + @keyframes w3m-view-height { + from { + height: var(--prev-height); + } + to { + height: var(--new-height); + } + } +`;var k=function(n,e,t,o){var s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(n,e,t,o);else for(var c=n.length-1;c>=0;c--)(r=n[c])&&(i=(s<3?r(i):s>3?r(e,t,i):r(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};const se="scroll-lock";class C extends g{constructor(){super(),this.unsubscribe=[],this.abortController=void 0,this.hasPrefetched=!1,this.enableEmbedded=_.state.enableEmbedded,this.open=m.state.open,this.caipAddress=h.state.activeCaipAddress,this.caipNetwork=h.state.activeCaipNetwork,this.shake=m.state.shake,this.filterByNamespace=F.state.filterByNamespace,this.initializeTheming(),H.prefetchAnalyticsConfig(),this.unsubscribe.push(m.subscribeKey("open",e=>e?this.onOpen():this.onClose()),m.subscribeKey("shake",e=>this.shake=e),h.subscribeKey("activeCaipNetwork",e=>this.onNewNetwork(e)),h.subscribeKey("activeCaipAddress",e=>this.onNewAddress(e)),_.subscribeKey("enableEmbedded",e=>this.enableEmbedded=e),F.subscribeKey("filterByNamespace",e=>{var t;this.filterByNamespace!==e&&!((t=h.getAccountData(e))!=null&&t.caipAddress)&&(H.fetchRecommendedWallets(),this.filterByNamespace=e)}))}firstUpdated(){if(this.caipAddress){if(this.enableEmbedded){m.close(),this.prefetch();return}this.onNewAddress(this.caipAddress)}this.open&&this.onOpen(),this.enableEmbedded&&this.prefetch()}disconnectedCallback(){this.unsubscribe.forEach(e=>e()),this.onRemoveKeyboardListener()}render(){return this.style.cssText=` + --local-border-bottom-mobile-radius: ${this.enableEmbedded?"clamp(0px, var(--wui-border-radius-l), 44px)":"0px"}; + `,this.enableEmbedded?a`${this.contentTemplate()} + `:this.open?a` + + ${this.contentTemplate()} + + + `:null}contentTemplate(){return a` + + + + + `}async onOverlayClick(e){e.target===e.currentTarget&&await this.handleClose()}async handleClose(){await de.safeClose()}initializeTheming(){const{themeVariables:e,themeMode:t}=ke.state,o=Te.getColorTheme(t);Se(e,o)}onClose(){this.open=!1,this.classList.remove("open"),this.onScrollUnlock(),N.hide(),this.onRemoveKeyboardListener()}onOpen(){this.open=!0,this.classList.add("open"),this.onScrollLock(),this.onAddKeyboardListener()}onScrollLock(){const e=document.createElement("style");e.dataset.w3m=se,e.textContent=` + body { + touch-action: none; + overflow: hidden; + overscroll-behavior: contain; + } + w3m-modal { + pointer-events: auto; + } + `,document.head.appendChild(e)}onScrollUnlock(){const e=document.head.querySelector(`style[data-w3m="${se}"]`);e&&e.remove()}onAddKeyboardListener(){var t;this.abortController=new AbortController;const e=(t=this.shadowRoot)==null?void 0:t.querySelector("wui-card");e==null||e.focus(),window.addEventListener("keydown",o=>{if(o.key==="Escape")this.handleClose();else if(o.key==="Tab"){const{tagName:s}=o.target;s&&!s.includes("W3M-")&&!s.includes("WUI-")&&(e==null||e.focus())}},this.abortController)}onRemoveKeyboardListener(){var e;(e=this.abortController)==null||e.abort(),this.abortController=void 0}async onNewAddress(e){const t=h.state.isSwitchingNamespace,o=l.state.view==="ProfileWallets";e?await this.onConnected({caipAddress:e,isSwitchingNamespace:t,isInProfileView:o}):!t&&!this.enableEmbedded&&!o&&m.close(),await K.initializeIfEnabled(e),this.caipAddress=e,h.setIsSwitchingNamespace(!1)}async onConnected(e){if(e.isInProfileView)return;const{chainNamespace:t,chainId:o,address:s}=We.parseCaipAddress(e.caipAddress),i=`${t}:${o}`,r=!$e.getPlainAddress(this.caipAddress),c=await K.getSessions({address:s,caipNetworkId:i}),S=K.getSIWX()?c.some(O=>O.data.accountAddress===s):!0,b=e.isSwitchingNamespace&&S&&!this.enableEmbedded,E=this.enableEmbedded&&r;b?l.goBack():E&&m.close()}onNewNetwork(e){var ee,te,ie;const t=this.caipNetwork,o=(ee=t==null?void 0:t.caipNetworkId)==null?void 0:ee.toString(),s=t==null?void 0:t.chainNamespace,i=(te=e==null?void 0:e.caipNetworkId)==null?void 0:te.toString(),r=e==null?void 0:e.chainNamespace,c=o!==i,b=c&&!(s!==r),E=(t==null?void 0:t.name)===Re.UNSUPPORTED_NETWORK_NAME,O=l.state.view==="ConnectingExternal",z=l.state.view==="ProfileWallets",me=!((ie=h.getAccountData(e==null?void 0:e.chainNamespace))!=null&&ie.caipAddress),he=l.state.view==="UnsupportedChain",fe=m.state.open;let P=!1;this.enableEmbedded&&l.state.view==="SwitchNetwork"&&(P=!0),fe&&!O&&!z&&(me?c&&(P=!0):(he||b&&!E)&&(P=!0)),P&&l.state.view!=="SIWXSignMessage"&&l.goBack(),this.caipNetwork=e}prefetch(){this.hasPrefetched||(H.prefetch(),H.fetchWalletsByPage({page:1}),this.hasPrefetched=!0)}}C.styles=Me;k([w({type:Boolean})],C.prototype,"enableEmbedded",void 0);k([d()],C.prototype,"open",void 0);k([d()],C.prototype,"caipAddress",void 0);k([d()],C.prototype,"caipNetwork",void 0);k([d()],C.prototype,"shake",void 0);k([d()],C.prototype,"filterByNamespace",void 0);let ne=class extends C{};ne=k([u("w3m-modal")],ne);let re=class extends C{};re=k([u("appkit-modal")],re);export{re as AppKitModal,ne as W3mModal,C as W3mModalBase}; +//# sourceMappingURL=w3m-modal-DlnuRkWU.js.map diff --git a/dist/assets/w3m-modal-DlnuRkWU.js.map b/dist/assets/w3m-modal-DlnuRkWU.js.map new file mode 100644 index 0000000..a3cb140 --- /dev/null +++ b/dist/assets/w3m-modal-DlnuRkWU.js.map @@ -0,0 +1 @@ +{"version":3,"file":"w3m-modal-DlnuRkWU.js","sources":["../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/controllers/TooltipController.js","../../node_modules/.pnpm/@reown+appkit-controllers@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-controllers/dist/esm/src/utils/ModalUtil.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-card/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/components/wui-card/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-alertbar/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-alertbar/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-alertbar/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-alertbar/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-icon-link/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-icon-link/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-select/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-select/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-header/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-header/index.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-snackbar/styles.js","../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/composites/wui-snackbar/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-snackbar/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-snackbar/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-tooltip/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/partials/w3m-tooltip/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/modal/w3m-router/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/modal/w3m-router/index.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/modal/w3m-modal/styles.js","../../node_modules/.pnpm/@reown+appkit-scaffold-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_val_7c0957669782bf0b5e6cc88a7ccfcc09/node_modules/@reown/appkit-scaffold-ui/dist/esm/src/modal/w3m-modal/index.js"],"sourcesContent":["import { proxy, subscribe as sub } from 'valtio/vanilla';\nimport { subscribeKey as subKey } from 'valtio/vanilla/utils';\nimport { withErrorBoundary } from '../utils/withErrorBoundary.js';\n// -- State --------------------------------------------- //\nconst state = proxy({\n message: '',\n open: false,\n triggerRect: {\n width: 0,\n height: 0,\n top: 0,\n left: 0\n },\n variant: 'shade'\n});\n// -- Controller ---------------------------------------- //\nconst controller = {\n state,\n subscribe(callback) {\n return sub(state, () => callback(state));\n },\n subscribeKey(key, callback) {\n return subKey(state, key, callback);\n },\n showTooltip({ message, triggerRect, variant }) {\n state.open = true;\n state.message = message;\n state.triggerRect = triggerRect;\n state.variant = variant;\n },\n hide() {\n state.open = false;\n state.message = '';\n state.triggerRect = {\n width: 0,\n height: 0,\n top: 0,\n left: 0\n };\n }\n};\n// Export the controller wrapped with our error boundary\nexport const TooltipController = withErrorBoundary(controller);\n//# sourceMappingURL=TooltipController.js.map","import { ConnectionController } from '../controllers/ConnectionController.js';\nimport { ModalController } from '../controllers/ModalController.js';\nimport { RouterController } from '../controllers/RouterController.js';\nimport { SIWXUtil } from './SIWXUtil.js';\nexport const ModalUtil = {\n isUnsupportedChainView() {\n return (RouterController.state.view === 'UnsupportedChain' ||\n (RouterController.state.view === 'SwitchNetwork' &&\n RouterController.state.history.includes('UnsupportedChain')));\n },\n async safeClose() {\n if (this.isUnsupportedChainView()) {\n ModalController.shake();\n return;\n }\n const isSIWXCloseDisabled = await SIWXUtil.isSIWXCloseDisabled();\n if (isSIWXCloseDisabled) {\n ModalController.shake();\n return;\n }\n if (RouterController.state.view === 'DataCapture' ||\n RouterController.state.view === 'DataCaptureOtpConfirm') {\n ConnectionController.disconnect();\n }\n ModalController.close();\n }\n};\n//# sourceMappingURL=ModalUtil.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n border-radius: clamp(0px, var(--wui-border-radius-l), 44px);\n box-shadow: 0 0 0 1px var(--wui-color-gray-glass-005);\n background-color: var(--wui-color-modal-bg);\n overflow: hidden;\n }\n\n :host([data-embedded='true']) {\n box-shadow:\n 0 0 0 1px var(--wui-color-gray-glass-005),\n 0px 4px 12px 4px var(--w3m-card-embedded-shadow-color);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiCard = class WuiCard extends LitElement {\n render() {\n return html ``;\n }\n};\nWuiCard.styles = [resetStyles, styles];\nWuiCard = __decorate([\n customElement('wui-card')\n], WuiCard);\nexport { WuiCard };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wui-spacing-s);\n border-radius: var(--wui-border-radius-s);\n border: 1px solid var(--wui-color-dark-glass-100);\n box-sizing: border-box;\n background-color: var(--wui-color-bg-325);\n box-shadow: 0px 0px 16px 0px rgba(0, 0, 0, 0.25);\n }\n\n wui-flex {\n width: 100%;\n }\n\n wui-text {\n word-break: break-word;\n flex: 1;\n }\n\n .close {\n cursor: pointer;\n }\n\n .icon-box {\n height: 40px;\n width: 40px;\n border-radius: var(--wui-border-radius-3xs);\n background-color: var(--local-icon-bg-value);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { AlertController } from '@reown/appkit-controllers';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-text/index.js';\nimport '../../layout/wui-flex/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiAlertBar = class WuiAlertBar extends LitElement {\n constructor() {\n super(...arguments);\n this.message = '';\n this.backgroundColor = 'accent-100';\n this.iconColor = 'accent-100';\n this.icon = 'info';\n }\n render() {\n this.style.cssText = `\n --local-icon-bg-value: var(--wui-color-${this.backgroundColor});\n `;\n return html `\n \n \n \n \n \n ${this.message}\n \n \n \n `;\n }\n onClose() {\n AlertController.close();\n }\n};\nWuiAlertBar.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiAlertBar.prototype, \"message\", void 0);\n__decorate([\n property()\n], WuiAlertBar.prototype, \"backgroundColor\", void 0);\n__decorate([\n property()\n], WuiAlertBar.prototype, \"iconColor\", void 0);\n__decorate([\n property()\n], WuiAlertBar.prototype, \"icon\", void 0);\nWuiAlertBar = __decorate([\n customElement('wui-alertbar')\n], WuiAlertBar);\nexport { WuiAlertBar };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n position: absolute;\n top: var(--wui-spacing-s);\n left: var(--wui-spacing-l);\n right: var(--wui-spacing-l);\n opacity: 0;\n pointer-events: none;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { AlertController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-alertbar';\nimport styles from './styles.js';\nexport const presets = {\n info: {\n backgroundColor: 'fg-350',\n iconColor: 'fg-325',\n icon: 'info'\n },\n success: {\n backgroundColor: 'success-glass-reown-020',\n iconColor: 'success-125',\n icon: 'checkmark'\n },\n warning: {\n backgroundColor: 'warning-glass-reown-020',\n iconColor: 'warning-100',\n icon: 'warningCircle'\n },\n error: {\n backgroundColor: 'error-glass-reown-020',\n iconColor: 'error-125',\n icon: 'exclamationTriangle'\n }\n};\nlet W3mAlertBar = class W3mAlertBar extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.open = AlertController.state.open;\n this.onOpen(true);\n this.unsubscribe.push(AlertController.subscribeKey('open', val => {\n this.open = val;\n this.onOpen(false);\n }));\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const { message, variant } = AlertController.state;\n const preset = presets[variant];\n return html `\n \n `;\n }\n onOpen(isMounted) {\n if (this.open) {\n this.animate([\n { opacity: 0, transform: 'scale(0.85)' },\n { opacity: 1, transform: 'scale(1)' }\n ], {\n duration: 150,\n fill: 'forwards',\n easing: 'ease'\n });\n this.style.cssText = `pointer-events: auto`;\n }\n else if (!isMounted) {\n this.animate([\n { opacity: 1, transform: 'scale(1)' },\n { opacity: 0, transform: 'scale(0.85)' }\n ], {\n duration: 150,\n fill: 'forwards',\n easing: 'ease'\n });\n this.style.cssText = `pointer-events: none`;\n }\n }\n};\nW3mAlertBar.styles = styles;\n__decorate([\n state()\n], W3mAlertBar.prototype, \"open\", void 0);\nW3mAlertBar = __decorate([\n customElement('w3m-alertbar')\n], W3mAlertBar);\nexport { W3mAlertBar };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n border-radius: var(--local-border-radius);\n color: var(--wui-color-fg-100);\n padding: var(--local-padding);\n }\n\n @media (max-width: 700px) {\n :host(:not([size='sm'])) button {\n padding: var(--wui-spacing-s);\n }\n }\n\n button > wui-icon {\n pointer-events: none;\n }\n\n button:disabled > wui-icon {\n color: var(--wui-color-bg-300) !important;\n }\n\n button:disabled {\n background-color: transparent;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport { colorStyles, elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiIconLink = class WuiIconLink extends LitElement {\n constructor() {\n super(...arguments);\n this.size = 'md';\n this.disabled = false;\n this.icon = 'copy';\n this.iconColor = 'inherit';\n }\n render() {\n this.dataset['size'] = this.size;\n let borderRadius = '';\n let padding = '';\n switch (this.size) {\n case 'lg':\n borderRadius = '--wui-border-radius-xs';\n padding = '--wui-spacing-1xs';\n break;\n case 'sm':\n borderRadius = '--wui-border-radius-3xs';\n padding = '--wui-spacing-xxs';\n break;\n default:\n borderRadius = '--wui-border-radius-xxs';\n padding = '--wui-spacing-2xs';\n break;\n }\n this.style.cssText = `\n --local-border-radius: var(${borderRadius});\n --local-padding: var(${padding});\n `;\n return html `\n \n `;\n }\n};\nWuiIconLink.styles = [resetStyles, elementStyles, colorStyles, styles];\n__decorate([\n property()\n], WuiIconLink.prototype, \"size\", void 0);\n__decorate([\n property({ type: Boolean })\n], WuiIconLink.prototype, \"disabled\", void 0);\n__decorate([\n property()\n], WuiIconLink.prototype, \"icon\", void 0);\n__decorate([\n property()\n], WuiIconLink.prototype, \"iconColor\", void 0);\nWuiIconLink = __decorate([\n customElement('wui-icon-link')\n], WuiIconLink);\nexport { WuiIconLink };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n button {\n display: block;\n display: flex;\n align-items: center;\n padding: var(--wui-spacing-xxs);\n gap: var(--wui-spacing-xxs);\n transition: all var(--wui-ease-out-power-1) var(--wui-duration-md);\n border-radius: var(--wui-border-radius-xxs);\n }\n\n wui-image {\n border-radius: 100%;\n width: var(--wui-spacing-xl);\n height: var(--wui-spacing-xl);\n }\n\n wui-icon-box {\n width: var(--wui-spacing-xl);\n height: var(--wui-spacing-xl);\n }\n\n button:hover {\n background-color: var(--wui-color-gray-glass-002);\n }\n\n button:active {\n background-color: var(--wui-color-gray-glass-005);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-image/index.js';\nimport '../../composites/wui-icon-box/index.js';\nimport { colorStyles, elementStyles, resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport styles from './styles.js';\nlet WuiSelect = class WuiSelect extends LitElement {\n constructor() {\n super(...arguments);\n this.imageSrc = '';\n }\n render() {\n return html ``;\n }\n imageTemplate() {\n if (this.imageSrc) {\n return html ``;\n }\n return html ``;\n }\n};\nWuiSelect.styles = [resetStyles, elementStyles, colorStyles, styles];\n__decorate([\n property()\n], WuiSelect.prototype, \"imageSrc\", void 0);\nWuiSelect = __decorate([\n customElement('wui-select')\n], WuiSelect);\nexport { WuiSelect };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n height: 64px;\n }\n\n wui-text {\n text-transform: capitalize;\n }\n\n wui-flex.w3m-header-title {\n transform: translateY(0);\n opacity: 1;\n }\n\n wui-flex.w3m-header-title[view-direction='prev'] {\n animation:\n slide-down-out 120ms forwards var(--wui-ease-out-power-2),\n slide-down-in 120ms forwards var(--wui-ease-out-power-2);\n animation-delay: 0ms, 200ms;\n }\n\n wui-flex.w3m-header-title[view-direction='next'] {\n animation:\n slide-up-out 120ms forwards var(--wui-ease-out-power-2),\n slide-up-in 120ms forwards var(--wui-ease-out-power-2);\n animation-delay: 0ms, 200ms;\n }\n\n wui-icon-link[data-hidden='true'] {\n opacity: 0 !important;\n pointer-events: none;\n }\n\n @keyframes slide-up-out {\n from {\n transform: translateY(0px);\n opacity: 1;\n }\n to {\n transform: translateY(3px);\n opacity: 0;\n }\n }\n\n @keyframes slide-up-in {\n from {\n transform: translateY(-3px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes slide-down-out {\n from {\n transform: translateY(0px);\n opacity: 1;\n }\n to {\n transform: translateY(-3px);\n opacity: 0;\n }\n }\n\n @keyframes slide-down-in {\n from {\n transform: translateY(3px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { AccountController, AssetController, AssetUtil, ChainController, ConnectorController, EventsController, ModalUtil, OptionsController, RouterController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon-link';\nimport '@reown/appkit-ui/wui-select';\nimport '@reown/appkit-ui/wui-tag';\nimport '@reown/appkit-ui/wui-text';\nimport { ConstantsUtil } from '../../utils/ConstantsUtil.js';\nimport styles from './styles.js';\nconst BETA_SCREENS = ['SmartSessionList'];\nfunction headings() {\n const connectorName = RouterController.state.data?.connector?.name;\n const walletName = RouterController.state.data?.wallet?.name;\n const networkName = RouterController.state.data?.network?.name;\n const name = walletName ?? connectorName;\n const connectors = ConnectorController.getConnectors();\n const isEmail = connectors.length === 1 && connectors[0]?.id === 'w3m-email';\n return {\n Connect: `Connect ${isEmail ? 'Email' : ''} Wallet`,\n Create: 'Create Wallet',\n ChooseAccountName: undefined,\n Account: undefined,\n AccountSettings: undefined,\n AllWallets: 'All Wallets',\n ApproveTransaction: 'Approve Transaction',\n BuyInProgress: 'Buy',\n ConnectingExternal: name ?? 'Connect Wallet',\n ConnectingWalletConnect: name ?? 'WalletConnect',\n ConnectingWalletConnectBasic: 'WalletConnect',\n ConnectingSiwe: 'Sign In',\n Convert: 'Convert',\n ConvertSelectToken: 'Select token',\n ConvertPreview: 'Preview convert',\n Downloads: name ? `Get ${name}` : 'Downloads',\n EmailLogin: 'Email Login',\n EmailVerifyOtp: 'Confirm Email',\n EmailVerifyDevice: 'Register Device',\n GetWallet: 'Get a wallet',\n Networks: 'Choose Network',\n OnRampProviders: 'Choose Provider',\n OnRampActivity: 'Activity',\n OnRampTokenSelect: 'Select Token',\n OnRampFiatSelect: 'Select Currency',\n Pay: 'How you pay',\n ProfileWallets: 'Wallets',\n SwitchNetwork: networkName ?? 'Switch Network',\n Transactions: 'Activity',\n UnsupportedChain: 'Switch Network',\n UpgradeEmailWallet: 'Upgrade your Wallet',\n UpdateEmailWallet: 'Edit Email',\n UpdateEmailPrimaryOtp: 'Confirm Current Email',\n UpdateEmailSecondaryOtp: 'Confirm New Email',\n WhatIsABuy: 'What is Buy?',\n RegisterAccountName: 'Choose name',\n RegisterAccountNameSuccess: '',\n WalletReceive: 'Receive',\n WalletCompatibleNetworks: 'Compatible Networks',\n Swap: 'Swap',\n SwapSelectToken: 'Select token',\n SwapPreview: 'Preview swap',\n WalletSend: 'Send',\n WalletSendPreview: 'Review send',\n WalletSendSelectToken: 'Select Token',\n WhatIsANetwork: 'What is a network?',\n WhatIsAWallet: 'What is a wallet?',\n ConnectWallets: 'Connect wallet',\n ConnectSocials: 'All socials',\n ConnectingSocial: AccountController.state.socialProvider\n ? AccountController.state.socialProvider\n : 'Connect Social',\n ConnectingMultiChain: 'Select chain',\n ConnectingFarcaster: 'Farcaster',\n SwitchActiveChain: 'Switch chain',\n SmartSessionCreated: undefined,\n SmartSessionList: 'Smart Sessions',\n SIWXSignMessage: 'Sign In',\n PayLoading: 'Payment in progress',\n DataCapture: 'Profile',\n DataCaptureOtpConfirm: 'Confirm Email'\n };\n}\nlet W3mHeader = class W3mHeader extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.heading = headings()[RouterController.state.view];\n this.network = ChainController.state.activeCaipNetwork;\n this.networkImage = AssetUtil.getNetworkImage(this.network);\n this.showBack = false;\n this.prevHistoryLength = 1;\n this.view = RouterController.state.view;\n this.viewDirection = '';\n this.headerText = headings()[RouterController.state.view];\n this.unsubscribe.push(AssetController.subscribeNetworkImages(() => {\n this.networkImage = AssetUtil.getNetworkImage(this.network);\n }), RouterController.subscribeKey('view', val => {\n setTimeout(() => {\n this.view = val;\n this.headerText = headings()[val];\n }, ConstantsUtil.ANIMATION_DURATIONS.HeaderText);\n this.onViewChange();\n this.onHistoryChange();\n }), ChainController.subscribeKey('activeCaipNetwork', val => {\n this.network = val;\n this.networkImage = AssetUtil.getNetworkImage(this.network);\n }));\n }\n disconnectCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n return html `\n \n ${this.leftHeaderTemplate()} ${this.titleTemplate()} ${this.rightHeaderTemplate()}\n \n `;\n }\n onWalletHelp() {\n EventsController.sendEvent({ type: 'track', event: 'CLICK_WALLET_HELP' });\n RouterController.push('WhatIsAWallet');\n }\n async onClose() {\n await ModalUtil.safeClose();\n }\n rightHeaderTemplate() {\n const isSmartSessionsEnabled = OptionsController?.state?.features?.smartSessions;\n if (RouterController.state.view !== 'Account' || !isSmartSessionsEnabled) {\n return this.closeButtonTemplate();\n }\n return html `\n RouterController.push('SmartSessionList')}\n data-testid=\"w3m-header-smart-sessions\"\n >\n ${this.closeButtonTemplate()}\n `;\n }\n closeButtonTemplate() {\n return html `\n \n `;\n }\n titleTemplate() {\n const isBeta = BETA_SCREENS.includes(this.view);\n return html `\n \n ${this.headerText}\n ${isBeta ? html `Beta` : null}\n \n `;\n }\n leftHeaderTemplate() {\n const { view } = RouterController.state;\n const isConnectHelp = view === 'Connect';\n const isEmbeddedEnable = OptionsController.state.enableEmbedded;\n const isApproveTransaction = view === 'ApproveTransaction';\n const isConnectingSIWEView = view === 'ConnectingSiwe';\n const isAccountView = view === 'Account';\n const enableNetworkSwitch = OptionsController.state.enableNetworkSwitch;\n const shouldHideBack = isApproveTransaction || isConnectingSIWEView || (isConnectHelp && isEmbeddedEnable);\n if (isAccountView && enableNetworkSwitch) {\n return html ``;\n }\n if (this.showBack && !shouldHideBack) {\n return html ``;\n }\n return html ``;\n }\n onNetworks() {\n if (this.isAllowedNetworkSwitch()) {\n EventsController.sendEvent({ type: 'track', event: 'CLICK_NETWORKS' });\n RouterController.push('Networks');\n }\n }\n isAllowedNetworkSwitch() {\n const requestedCaipNetworks = ChainController.getAllRequestedCaipNetworks();\n const isMultiNetwork = requestedCaipNetworks ? requestedCaipNetworks.length > 1 : false;\n const isValidNetwork = requestedCaipNetworks?.find(({ id }) => id === this.network?.id);\n return isMultiNetwork || !isValidNetwork;\n }\n getPadding() {\n if (this.heading) {\n return ['l', '2l', 'l', '2l'];\n }\n return ['0', '2l', '0', '2l'];\n }\n onViewChange() {\n const { history } = RouterController.state;\n let direction = ConstantsUtil.VIEW_DIRECTION.Next;\n if (history.length < this.prevHistoryLength) {\n direction = ConstantsUtil.VIEW_DIRECTION.Prev;\n }\n this.prevHistoryLength = history.length;\n this.viewDirection = direction;\n }\n async onHistoryChange() {\n const { history } = RouterController.state;\n const buttonEl = this.shadowRoot?.querySelector('#dynamic');\n if (history.length > 1 && !this.showBack && buttonEl) {\n await buttonEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n }).finished;\n this.showBack = true;\n buttonEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n else if (history.length <= 1 && this.showBack && buttonEl) {\n await buttonEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n }).finished;\n this.showBack = false;\n buttonEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: 200,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n onGoBack() {\n RouterController.goBack();\n }\n};\nW3mHeader.styles = styles;\n__decorate([\n state()\n], W3mHeader.prototype, \"heading\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"network\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"networkImage\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"showBack\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"prevHistoryLength\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"view\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"viewDirection\", void 0);\n__decorate([\n state()\n], W3mHeader.prototype, \"headerText\", void 0);\nW3mHeader = __decorate([\n customElement('w3m-header')\n], W3mHeader);\nexport { W3mHeader };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: flex;\n column-gap: var(--wui-spacing-s);\n align-items: center;\n padding: var(--wui-spacing-xs) var(--wui-spacing-m) var(--wui-spacing-xs) var(--wui-spacing-xs);\n border-radius: var(--wui-border-radius-s);\n border: 1px solid var(--wui-color-gray-glass-005);\n box-sizing: border-box;\n background-color: var(--wui-color-bg-175);\n box-shadow:\n 0px 14px 64px -4px rgba(0, 0, 0, 0.15),\n 0px 8px 22px -6px rgba(0, 0, 0, 0.15);\n\n max-width: 300px;\n }\n\n :host wui-loading-spinner {\n margin-left: var(--wui-spacing-3xs);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport '../../components/wui-icon/index.js';\nimport '../../components/wui-loading-spinner/index.js';\nimport '../../components/wui-text/index.js';\nimport { resetStyles } from '../../utils/ThemeUtil.js';\nimport { customElement } from '../../utils/WebComponentsUtil.js';\nimport '../wui-icon-box/index.js';\nimport styles from './styles.js';\nlet WuiSnackbar = class WuiSnackbar extends LitElement {\n constructor() {\n super(...arguments);\n this.backgroundColor = 'accent-100';\n this.iconColor = 'accent-100';\n this.icon = 'checkmark';\n this.message = '';\n this.loading = false;\n this.iconType = 'default';\n }\n render() {\n return html `\n ${this.templateIcon()}\n ${this.message}\n `;\n }\n templateIcon() {\n if (this.loading) {\n return html ``;\n }\n if (this.iconType === 'default') {\n return html ``;\n }\n return html ``;\n }\n};\nWuiSnackbar.styles = [resetStyles, styles];\n__decorate([\n property()\n], WuiSnackbar.prototype, \"backgroundColor\", void 0);\n__decorate([\n property()\n], WuiSnackbar.prototype, \"iconColor\", void 0);\n__decorate([\n property()\n], WuiSnackbar.prototype, \"icon\", void 0);\n__decorate([\n property()\n], WuiSnackbar.prototype, \"message\", void 0);\n__decorate([\n property()\n], WuiSnackbar.prototype, \"loading\", void 0);\n__decorate([\n property()\n], WuiSnackbar.prototype, \"iconType\", void 0);\nWuiSnackbar = __decorate([\n customElement('wui-snackbar')\n], WuiSnackbar);\nexport { WuiSnackbar };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n display: block;\n position: absolute;\n opacity: 0;\n pointer-events: none;\n top: 11px;\n left: 50%;\n width: max-content;\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { SnackController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-snackbar';\nimport styles from './styles.js';\nconst presets = {\n loading: undefined,\n success: {\n backgroundColor: 'success-100',\n iconColor: 'success-100',\n icon: 'checkmark'\n },\n error: {\n backgroundColor: 'error-100',\n iconColor: 'error-100',\n icon: 'close'\n }\n};\nlet W3mSnackBar = class W3mSnackBar extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.timeout = undefined;\n this.open = SnackController.state.open;\n this.unsubscribe.push(SnackController.subscribeKey('open', val => {\n this.open = val;\n this.onOpen();\n }));\n }\n disconnectedCallback() {\n clearTimeout(this.timeout);\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n const { message, variant, svg } = SnackController.state;\n const preset = presets[variant];\n const { icon, iconColor } = svg ?? preset ?? {};\n return html `\n \n `;\n }\n onOpen() {\n clearTimeout(this.timeout);\n if (this.open) {\n this.animate([\n { opacity: 0, transform: 'translateX(-50%) scale(0.85)' },\n { opacity: 1, transform: 'translateX(-50%) scale(1)' }\n ], {\n duration: 150,\n fill: 'forwards',\n easing: 'ease'\n });\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (SnackController.state.autoClose) {\n this.timeout = setTimeout(() => SnackController.hide(), 2500);\n }\n }\n else {\n this.animate([\n { opacity: 1, transform: 'translateX(-50%) scale(1)' },\n { opacity: 0, transform: 'translateX(-50%) scale(0.85)' }\n ], {\n duration: 150,\n fill: 'forwards',\n easing: 'ease'\n });\n }\n }\n};\nW3mSnackBar.styles = styles;\n__decorate([\n state()\n], W3mSnackBar.prototype, \"open\", void 0);\nW3mSnackBar = __decorate([\n customElement('w3m-snackbar')\n], W3mSnackBar);\nexport { W3mSnackBar };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n pointer-events: none;\n }\n\n :host > wui-flex {\n display: var(--w3m-tooltip-display);\n opacity: var(--w3m-tooltip-opacity);\n padding: 9px var(--wui-spacing-s) 10px var(--wui-spacing-s);\n border-radius: var(--wui-border-radius-xxs);\n color: var(--wui-color-bg-100);\n position: fixed;\n top: var(--w3m-tooltip-top);\n left: var(--w3m-tooltip-left);\n transform: translate(calc(-50% + var(--w3m-tooltip-parent-width)), calc(-100% - 8px));\n max-width: calc(var(--w3m-modal-width) - var(--wui-spacing-xl));\n transition: opacity 0.2s var(--wui-ease-out-power-2);\n will-change: opacity;\n }\n\n :host([data-variant='shade']) > wui-flex {\n background-color: var(--wui-color-bg-150);\n border: 1px solid var(--wui-color-gray-glass-005);\n }\n\n :host([data-variant='shade']) > wui-flex > wui-text {\n color: var(--wui-color-fg-150);\n }\n\n :host([data-variant='fill']) > wui-flex {\n background-color: var(--wui-color-fg-100);\n border: none;\n }\n\n wui-icon {\n position: absolute;\n width: 12px !important;\n height: 4px !important;\n color: var(--wui-color-bg-150);\n }\n\n wui-icon[data-placement='top'] {\n bottom: 0px;\n left: 50%;\n transform: translate(-50%, 95%);\n }\n\n wui-icon[data-placement='bottom'] {\n top: 0;\n left: 50%;\n transform: translate(-50%, -95%) rotate(180deg);\n }\n\n wui-icon[data-placement='right'] {\n top: 50%;\n left: 0;\n transform: translate(-65%, -50%) rotate(90deg);\n }\n\n wui-icon[data-placement='left'] {\n top: 50%;\n right: 0%;\n transform: translate(65%, -50%) rotate(270deg);\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { TooltipController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-flex';\nimport '@reown/appkit-ui/wui-icon';\nimport '@reown/appkit-ui/wui-text';\nimport styles from './styles.js';\nlet W3mTooltip = class W3mTooltip extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.open = TooltipController.state.open;\n this.message = TooltipController.state.message;\n this.triggerRect = TooltipController.state.triggerRect;\n this.variant = TooltipController.state.variant;\n this.unsubscribe.push(...[\n TooltipController.subscribe(newState => {\n this.open = newState.open;\n this.message = newState.message;\n this.triggerRect = newState.triggerRect;\n this.variant = newState.variant;\n })\n ]);\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n this.dataset['variant'] = this.variant;\n const topValue = this.triggerRect.top;\n const leftValue = this.triggerRect.left;\n this.style.cssText = `\n --w3m-tooltip-top: ${topValue}px;\n --w3m-tooltip-left: ${leftValue}px;\n --w3m-tooltip-parent-width: ${this.triggerRect.width / 2}px;\n --w3m-tooltip-display: ${this.open ? 'flex' : 'none'};\n --w3m-tooltip-opacity: ${this.open ? 1 : 0};\n `;\n return html `\n \n ${this.message}\n `;\n }\n};\nW3mTooltip.styles = [styles];\n__decorate([\n state()\n], W3mTooltip.prototype, \"open\", void 0);\n__decorate([\n state()\n], W3mTooltip.prototype, \"message\", void 0);\n__decorate([\n state()\n], W3mTooltip.prototype, \"triggerRect\", void 0);\n__decorate([\n state()\n], W3mTooltip.prototype, \"variant\", void 0);\nW3mTooltip = __decorate([\n customElement('w3m-tooltip'),\n customElement('w3m-tooltip')\n], W3mTooltip);\nexport { W3mTooltip };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n --prev-height: 0px;\n --new-height: 0px;\n display: block;\n }\n\n div.w3m-router-container {\n transform: translateY(0);\n opacity: 1;\n }\n\n div.w3m-router-container[view-direction='prev'] {\n animation:\n slide-left-out 150ms forwards ease,\n slide-left-in 150ms forwards ease;\n animation-delay: 0ms, 200ms;\n }\n\n div.w3m-router-container[view-direction='next'] {\n animation:\n slide-right-out 150ms forwards ease,\n slide-right-in 150ms forwards ease;\n animation-delay: 0ms, 200ms;\n }\n\n @keyframes slide-left-out {\n from {\n transform: translateX(0px);\n opacity: 1;\n }\n to {\n transform: translateX(10px);\n opacity: 0;\n }\n }\n\n @keyframes slide-left-in {\n from {\n transform: translateX(-10px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n\n @keyframes slide-right-out {\n from {\n transform: translateX(0px);\n opacity: 1;\n }\n to {\n transform: translateX(-10px);\n opacity: 0;\n }\n }\n\n @keyframes slide-right-in {\n from {\n transform: translateX(10px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { RouterController, TooltipController } from '@reown/appkit-controllers';\nimport { customElement } from '@reown/appkit-ui';\nimport { ConstantsUtil } from '../../utils/ConstantsUtil.js';\nimport styles from './styles.js';\nlet W3mRouter = class W3mRouter extends LitElement {\n constructor() {\n super();\n this.resizeObserver = undefined;\n this.prevHeight = '0px';\n this.prevHistoryLength = 1;\n this.unsubscribe = [];\n this.view = RouterController.state.view;\n this.viewDirection = '';\n this.unsubscribe.push(RouterController.subscribeKey('view', val => this.onViewChange(val)));\n }\n firstUpdated() {\n this.resizeObserver = new ResizeObserver(([content]) => {\n const height = `${content?.contentRect.height}px`;\n if (this.prevHeight !== '0px') {\n this.style.setProperty('--prev-height', this.prevHeight);\n this.style.setProperty('--new-height', height);\n this.style.animation = 'w3m-view-height 150ms forwards ease';\n this.style.height = 'auto';\n }\n setTimeout(() => {\n this.prevHeight = height;\n this.style.animation = 'unset';\n }, ConstantsUtil.ANIMATION_DURATIONS.ModalHeight);\n });\n this.resizeObserver?.observe(this.getWrapper());\n }\n disconnectedCallback() {\n this.resizeObserver?.unobserve(this.getWrapper());\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n }\n render() {\n return html `
\n ${this.viewTemplate()}\n
`;\n }\n viewTemplate() {\n switch (this.view) {\n case 'AccountSettings':\n return html ``;\n case 'Account':\n return html ``;\n case 'AllWallets':\n return html ``;\n case 'ApproveTransaction':\n return html ``;\n case 'BuyInProgress':\n return html ``;\n case 'ChooseAccountName':\n return html ``;\n case 'Connect':\n return html ``;\n case 'Create':\n return html ``;\n case 'ConnectingWalletConnect':\n return html ``;\n case 'ConnectingWalletConnectBasic':\n return html ``;\n case 'ConnectingExternal':\n return html ``;\n case 'ConnectingSiwe':\n return html ``;\n case 'ConnectWallets':\n return html ``;\n case 'ConnectSocials':\n return html ``;\n case 'ConnectingSocial':\n return html ``;\n case 'DataCapture':\n return html ``;\n case 'DataCaptureOtpConfirm':\n return html ``;\n case 'Downloads':\n return html ``;\n case 'EmailLogin':\n return html ``;\n case 'EmailVerifyOtp':\n return html ``;\n case 'EmailVerifyDevice':\n return html ``;\n case 'GetWallet':\n return html ``;\n case 'Networks':\n return html ``;\n case 'SwitchNetwork':\n return html ``;\n case 'ProfileWallets':\n return html ``;\n case 'Transactions':\n return html ``;\n case 'OnRampProviders':\n return html ``;\n case 'OnRampTokenSelect':\n return html ``;\n case 'OnRampFiatSelect':\n return html ``;\n case 'UpgradeEmailWallet':\n return html ``;\n case 'UpdateEmailWallet':\n return html ``;\n case 'UpdateEmailPrimaryOtp':\n return html ``;\n case 'UpdateEmailSecondaryOtp':\n return html ``;\n case 'UnsupportedChain':\n return html ``;\n case 'Swap':\n return html ``;\n case 'SwapSelectToken':\n return html ``;\n case 'SwapPreview':\n return html ``;\n case 'WalletSend':\n return html ``;\n case 'WalletSendSelectToken':\n return html ``;\n case 'WalletSendPreview':\n return html ``;\n case 'WhatIsABuy':\n return html ``;\n case 'WalletReceive':\n return html ``;\n case 'WalletCompatibleNetworks':\n return html ``;\n case 'WhatIsAWallet':\n return html ``;\n case 'ConnectingMultiChain':\n return html ``;\n case 'WhatIsANetwork':\n return html ``;\n case 'ConnectingFarcaster':\n return html ``;\n case 'SwitchActiveChain':\n return html ``;\n case 'RegisterAccountName':\n return html ``;\n case 'RegisterAccountNameSuccess':\n return html ``;\n case 'SmartSessionCreated':\n return html ``;\n case 'SmartSessionList':\n return html ``;\n case 'SIWXSignMessage':\n return html ``;\n case 'Pay':\n return html ``;\n case 'PayLoading':\n return html ``;\n default:\n return html ``;\n }\n }\n onViewChange(newView) {\n TooltipController.hide();\n let direction = ConstantsUtil.VIEW_DIRECTION.Next;\n const { history } = RouterController.state;\n if (history.length < this.prevHistoryLength) {\n direction = ConstantsUtil.VIEW_DIRECTION.Prev;\n }\n this.prevHistoryLength = history.length;\n this.viewDirection = direction;\n setTimeout(() => {\n this.view = newView;\n }, ConstantsUtil.ANIMATION_DURATIONS.ViewTransition);\n }\n getWrapper() {\n return this.shadowRoot?.querySelector('div');\n }\n};\nW3mRouter.styles = styles;\n__decorate([\n state()\n], W3mRouter.prototype, \"view\", void 0);\n__decorate([\n state()\n], W3mRouter.prototype, \"viewDirection\", void 0);\nW3mRouter = __decorate([\n customElement('w3m-router')\n], W3mRouter);\nexport { W3mRouter };\n//# sourceMappingURL=index.js.map","import { css } from 'lit';\nexport default css `\n :host {\n z-index: var(--w3m-z-index);\n display: block;\n backface-visibility: hidden;\n will-change: opacity;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n opacity: 0;\n background-color: var(--wui-cover);\n transition: opacity 0.2s var(--wui-ease-out-power-2);\n will-change: opacity;\n }\n\n :host(.open) {\n opacity: 1;\n }\n\n :host(.appkit-modal) {\n position: relative;\n pointer-events: unset;\n background: none;\n width: 100%;\n opacity: 1;\n }\n\n wui-card {\n max-width: var(--w3m-modal-width);\n width: 100%;\n position: relative;\n animation: zoom-in 0.2s var(--wui-ease-out-power-2);\n animation-fill-mode: backwards;\n outline: none;\n transition:\n border-radius var(--wui-duration-lg) var(--wui-ease-out-power-1),\n background-color var(--wui-duration-lg) var(--wui-ease-out-power-1);\n will-change: border-radius, background-color;\n }\n\n :host(.appkit-modal) wui-card {\n max-width: 400px;\n }\n\n wui-card[shake='true'] {\n animation:\n zoom-in 0.2s var(--wui-ease-out-power-2),\n w3m-shake 0.5s var(--wui-ease-out-power-2);\n }\n\n wui-flex {\n overflow-x: hidden;\n overflow-y: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n }\n\n @media (max-height: 700px) and (min-width: 431px) {\n wui-flex {\n align-items: flex-start;\n }\n\n wui-card {\n margin: var(--wui-spacing-xxl) 0px;\n }\n }\n\n @media (max-width: 430px) {\n wui-flex {\n align-items: flex-end;\n }\n\n wui-card {\n max-width: 100%;\n border-bottom-left-radius: var(--local-border-bottom-mobile-radius);\n border-bottom-right-radius: var(--local-border-bottom-mobile-radius);\n border-bottom: none;\n animation: slide-in 0.2s var(--wui-ease-out-power-2);\n }\n\n wui-card[shake='true'] {\n animation:\n slide-in 0.2s var(--wui-ease-out-power-2),\n w3m-shake 0.5s var(--wui-ease-out-power-2);\n }\n }\n\n @keyframes zoom-in {\n 0% {\n transform: scale(0.95) translateY(0);\n }\n 100% {\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes slide-in {\n 0% {\n transform: scale(1) translateY(50px);\n }\n 100% {\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes w3m-shake {\n 0% {\n transform: scale(1) rotate(0deg);\n }\n 20% {\n transform: scale(1) rotate(-1deg);\n }\n 40% {\n transform: scale(1) rotate(1.5deg);\n }\n 60% {\n transform: scale(1) rotate(-1.5deg);\n }\n 80% {\n transform: scale(1) rotate(1deg);\n }\n 100% {\n transform: scale(1) rotate(0deg);\n }\n }\n\n @keyframes w3m-view-height {\n from {\n height: var(--prev-height);\n }\n to {\n height: var(--new-height);\n }\n }\n`;\n//# sourceMappingURL=styles.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { ConstantsUtil as CommonConstantsUtil, ParseUtil } from '@reown/appkit-common';\nimport { ApiController, ChainController, ConnectorController, CoreHelperUtil, ModalController, ModalUtil, OptionsController, RouterController, SIWXUtil, SnackController, ThemeController } from '@reown/appkit-controllers';\nimport { UiHelperUtil, customElement, initializeTheming } from '@reown/appkit-ui';\nimport '@reown/appkit-ui/wui-card';\nimport '@reown/appkit-ui/wui-flex';\nimport '../../partials/w3m-alertbar/index.js';\nimport '../../partials/w3m-header/index.js';\nimport '../../partials/w3m-snackbar/index.js';\nimport '../../partials/w3m-tooltip/index.js';\nimport '../w3m-router/index.js';\nimport styles from './styles.js';\nconst SCROLL_LOCK = 'scroll-lock';\nexport class W3mModalBase extends LitElement {\n constructor() {\n super();\n this.unsubscribe = [];\n this.abortController = undefined;\n this.hasPrefetched = false;\n this.enableEmbedded = OptionsController.state.enableEmbedded;\n this.open = ModalController.state.open;\n this.caipAddress = ChainController.state.activeCaipAddress;\n this.caipNetwork = ChainController.state.activeCaipNetwork;\n this.shake = ModalController.state.shake;\n this.filterByNamespace = ConnectorController.state.filterByNamespace;\n this.initializeTheming();\n ApiController.prefetchAnalyticsConfig();\n this.unsubscribe.push(...[\n ModalController.subscribeKey('open', val => (val ? this.onOpen() : this.onClose())),\n ModalController.subscribeKey('shake', val => (this.shake = val)),\n ChainController.subscribeKey('activeCaipNetwork', val => this.onNewNetwork(val)),\n ChainController.subscribeKey('activeCaipAddress', val => this.onNewAddress(val)),\n OptionsController.subscribeKey('enableEmbedded', val => (this.enableEmbedded = val)),\n ConnectorController.subscribeKey('filterByNamespace', val => {\n if (this.filterByNamespace !== val && !ChainController.getAccountData(val)?.caipAddress) {\n ApiController.fetchRecommendedWallets();\n this.filterByNamespace = val;\n }\n })\n ]);\n }\n firstUpdated() {\n if (this.caipAddress) {\n if (this.enableEmbedded) {\n ModalController.close();\n this.prefetch();\n return;\n }\n this.onNewAddress(this.caipAddress);\n }\n if (this.open) {\n this.onOpen();\n }\n if (this.enableEmbedded) {\n this.prefetch();\n }\n }\n disconnectedCallback() {\n this.unsubscribe.forEach(unsubscribe => unsubscribe());\n this.onRemoveKeyboardListener();\n }\n render() {\n this.style.cssText = `\n --local-border-bottom-mobile-radius: ${this.enableEmbedded ? 'clamp(0px, var(--wui-border-radius-l), 44px)' : '0px'};\n `;\n if (this.enableEmbedded) {\n return html `${this.contentTemplate()}\n `;\n }\n return this.open\n ? html `\n \n ${this.contentTemplate()}\n \n \n `\n : null;\n }\n contentTemplate() {\n return html ` \n \n \n \n \n `;\n }\n async onOverlayClick(event) {\n if (event.target === event.currentTarget) {\n await this.handleClose();\n }\n }\n async handleClose() {\n await ModalUtil.safeClose();\n }\n initializeTheming() {\n const { themeVariables, themeMode } = ThemeController.state;\n const defaultThemeMode = UiHelperUtil.getColorTheme(themeMode);\n initializeTheming(themeVariables, defaultThemeMode);\n }\n onClose() {\n this.open = false;\n this.classList.remove('open');\n this.onScrollUnlock();\n SnackController.hide();\n this.onRemoveKeyboardListener();\n }\n onOpen() {\n this.open = true;\n this.classList.add('open');\n this.onScrollLock();\n this.onAddKeyboardListener();\n }\n onScrollLock() {\n const styleTag = document.createElement('style');\n styleTag.dataset['w3m'] = SCROLL_LOCK;\n styleTag.textContent = `\n body {\n touch-action: none;\n overflow: hidden;\n overscroll-behavior: contain;\n }\n w3m-modal {\n pointer-events: auto;\n }\n `;\n document.head.appendChild(styleTag);\n }\n onScrollUnlock() {\n const styleTag = document.head.querySelector(`style[data-w3m=\"${SCROLL_LOCK}\"]`);\n if (styleTag) {\n styleTag.remove();\n }\n }\n onAddKeyboardListener() {\n this.abortController = new AbortController();\n const card = this.shadowRoot?.querySelector('wui-card');\n card?.focus();\n window.addEventListener('keydown', event => {\n if (event.key === 'Escape') {\n this.handleClose();\n }\n else if (event.key === 'Tab') {\n const { tagName } = event.target;\n if (tagName && !tagName.includes('W3M-') && !tagName.includes('WUI-')) {\n card?.focus();\n }\n }\n }, this.abortController);\n }\n onRemoveKeyboardListener() {\n this.abortController?.abort();\n this.abortController = undefined;\n }\n async onNewAddress(caipAddress) {\n const isSwitchingNamespace = ChainController.state.isSwitchingNamespace;\n const isInProfileView = RouterController.state.view === 'ProfileWallets';\n if (caipAddress) {\n await this.onConnected({\n caipAddress,\n isSwitchingNamespace,\n isInProfileView\n });\n }\n else if (!isSwitchingNamespace && !this.enableEmbedded && !isInProfileView) {\n ModalController.close();\n }\n await SIWXUtil.initializeIfEnabled(caipAddress);\n this.caipAddress = caipAddress;\n ChainController.setIsSwitchingNamespace(false);\n }\n async onConnected(args) {\n if (args.isInProfileView) {\n return;\n }\n const { chainNamespace, chainId, address: newAddress } = ParseUtil.parseCaipAddress(args.caipAddress);\n const caipNetworkId = `${chainNamespace}:${chainId}`;\n const wasPreviouslyDisconnected = !CoreHelperUtil.getPlainAddress(this.caipAddress);\n const sessions = await SIWXUtil.getSessions({ address: newAddress, caipNetworkId });\n const isAuthenticated = SIWXUtil.getSIWX()\n ? sessions.some(s => s.data.accountAddress === newAddress)\n : true;\n const shouldGoBack = args.isSwitchingNamespace && isAuthenticated && !this.enableEmbedded;\n const shouldCloseEmbeddedModal = this.enableEmbedded && wasPreviouslyDisconnected;\n if (shouldGoBack) {\n RouterController.goBack();\n }\n else if (shouldCloseEmbeddedModal) {\n ModalController.close();\n }\n }\n onNewNetwork(nextCaipNetwork) {\n const prevCaipNetwork = this.caipNetwork;\n const prevCaipNetworkId = prevCaipNetwork?.caipNetworkId?.toString();\n const prevChainNamespace = prevCaipNetwork?.chainNamespace;\n const nextNetworkId = nextCaipNetwork?.caipNetworkId?.toString();\n const nextChainNamespace = nextCaipNetwork?.chainNamespace;\n const networkIdChanged = prevCaipNetworkId !== nextNetworkId;\n const namespaceChanged = prevChainNamespace !== nextChainNamespace;\n const isNetworkChangedInSameNamespace = networkIdChanged && !namespaceChanged;\n const wasUnsupportedNetwork = prevCaipNetwork?.name === CommonConstantsUtil.UNSUPPORTED_NETWORK_NAME;\n const isConnectingExternal = RouterController.state.view === 'ConnectingExternal';\n const isInProfileWalletsView = RouterController.state.view === 'ProfileWallets';\n const isNotConnected = !ChainController.getAccountData(nextCaipNetwork?.chainNamespace)\n ?.caipAddress;\n const isUnsupportedNetworkScreen = RouterController.state.view === 'UnsupportedChain';\n const isModalOpen = ModalController.state.open;\n let shouldGoBack = false;\n if (this.enableEmbedded && RouterController.state.view === 'SwitchNetwork') {\n shouldGoBack = true;\n }\n if (isModalOpen && !isConnectingExternal && !isInProfileWalletsView) {\n if (isNotConnected) {\n if (networkIdChanged) {\n shouldGoBack = true;\n }\n }\n else if (isUnsupportedNetworkScreen) {\n shouldGoBack = true;\n }\n else if (isNetworkChangedInSameNamespace && !wasUnsupportedNetwork) {\n shouldGoBack = true;\n }\n }\n if (shouldGoBack && RouterController.state.view !== 'SIWXSignMessage') {\n RouterController.goBack();\n }\n this.caipNetwork = nextCaipNetwork;\n }\n prefetch() {\n if (!this.hasPrefetched) {\n ApiController.prefetch();\n ApiController.fetchWalletsByPage({ page: 1 });\n this.hasPrefetched = true;\n }\n }\n}\nW3mModalBase.styles = styles;\n__decorate([\n property({ type: Boolean })\n], W3mModalBase.prototype, \"enableEmbedded\", void 0);\n__decorate([\n state()\n], W3mModalBase.prototype, \"open\", void 0);\n__decorate([\n state()\n], W3mModalBase.prototype, \"caipAddress\", void 0);\n__decorate([\n state()\n], W3mModalBase.prototype, \"caipNetwork\", void 0);\n__decorate([\n state()\n], W3mModalBase.prototype, \"shake\", void 0);\n__decorate([\n state()\n], W3mModalBase.prototype, \"filterByNamespace\", void 0);\nlet W3mModal = class W3mModal extends W3mModalBase {\n};\nW3mModal = __decorate([\n customElement('w3m-modal')\n], W3mModal);\nexport { W3mModal };\nlet AppKitModal = class AppKitModal extends W3mModalBase {\n};\nAppKitModal = __decorate([\n customElement('appkit-modal')\n], AppKitModal);\nexport { AppKitModal };\n//# sourceMappingURL=index.js.map"],"names":["state","proxy","controller","callback","sub","key","subKey","message","triggerRect","variant","TooltipController","withErrorBoundary","ModalUtil","RouterController","ModalController","SIWXUtil","ConnectionController","styles$a","css","__decorate","decorators","target","desc","c","r","d","i","WuiCard","LitElement","html","resetStyles","styles","customElement","styles$9","WuiAlertBar","AlertController","property","styles$8","presets","W3mAlertBar","val","unsubscribe","preset","isMounted","styles$7","WuiIconLink","borderRadius","padding","elementStyles","colorStyles","styles$6","WuiSelect","styles$5","BETA_SCREENS","headings","connectorName","_b","_a","walletName","_d","_c","networkName","_f","_e","name","connectors","ConnectorController","_g","AccountController","W3mHeader","ChainController","AssetUtil","AssetController","ConstantsUtil","EventsController","isSmartSessionsEnabled","OptionsController","isBeta","view","isConnectHelp","isEmbeddedEnable","isApproveTransaction","isConnectingSIWEView","isAccountView","enableNetworkSwitch","shouldHideBack","ifDefined","requestedCaipNetworks","isMultiNetwork","isValidNetwork","id","history","direction","buttonEl","styles$4","WuiSnackbar","styles$3","W3mSnackBar","SnackController","svg","icon","iconColor","styles$2","W3mTooltip","newState","topValue","leftValue","styles$1","W3mRouter","content","height","newView","SCROLL_LOCK","W3mModalBase","ApiController","event","themeVariables","themeMode","ThemeController","defaultThemeMode","UiHelperUtil","initializeTheming","styleTag","card","tagName","caipAddress","isSwitchingNamespace","isInProfileView","args","chainNamespace","chainId","newAddress","ParseUtil","caipNetworkId","wasPreviouslyDisconnected","CoreHelperUtil","sessions","isAuthenticated","s","shouldGoBack","shouldCloseEmbeddedModal","nextCaipNetwork","prevCaipNetwork","prevCaipNetworkId","prevChainNamespace","nextNetworkId","nextChainNamespace","networkIdChanged","isNetworkChangedInSameNamespace","wasUnsupportedNetwork","CommonConstantsUtil","isConnectingExternal","isInProfileWalletsView","isNotConnected","isUnsupportedNetworkScreen","isModalOpen","W3mModal","AppKitModal"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]} \ No newline at end of file diff --git a/dist/assets/wallet-CrlOgCjY.js b/dist/assets/wallet-CrlOgCjY.js new file mode 100644 index 0000000..34e73c1 --- /dev/null +++ b/dist/assets/wallet-CrlOgCjY.js @@ -0,0 +1,9 @@ +import{p as c}from"./index-B95lHF7v.js";const v=c` + +`;export{v as walletSvg}; +//# sourceMappingURL=wallet-CrlOgCjY.js.map diff --git a/dist/assets/wallet-CrlOgCjY.js.map b/dist/assets/wallet-CrlOgCjY.js.map new file mode 100644 index 0000000..081963d --- /dev/null +++ b/dist/assets/wallet-CrlOgCjY.js.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-CrlOgCjY.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/wallet.js"],"sourcesContent":["import { svg } from 'lit';\nexport const walletSvg = svg `\n \n`;\n//# sourceMappingURL=wallet.js.map"],"names":["walletSvg","svg"],"mappings":"wCACY,MAACA,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/wallet-placeholder-BHY4DgGe.js b/dist/assets/wallet-placeholder-BHY4DgGe.js new file mode 100644 index 0000000..9eef255 --- /dev/null +++ b/dist/assets/wallet-placeholder-BHY4DgGe.js @@ -0,0 +1,15 @@ +import{p as a}from"./index-B95lHF7v.js";const v=a` + + + + +`;export{v as walletPlaceholderSvg}; +//# sourceMappingURL=wallet-placeholder-BHY4DgGe.js.map diff --git a/dist/assets/wallet-placeholder-BHY4DgGe.js.map b/dist/assets/wallet-placeholder-BHY4DgGe.js.map new file mode 100644 index 0000000..8be81b1 --- /dev/null +++ b/dist/assets/wallet-placeholder-BHY4DgGe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"wallet-placeholder-BHY4DgGe.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/wallet-placeholder.js"],"sourcesContent":["import { svg } from 'lit';\nexport const walletPlaceholderSvg = svg `\n \n \n \n \n`;\n//# sourceMappingURL=wallet-placeholder.js.map"],"names":["walletPlaceholderSvg","svg"],"mappings":"wCACY,MAACA,EAAuBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/walletconnect-Bjp2_CnW.js b/dist/assets/walletconnect-Bjp2_CnW.js new file mode 100644 index 0000000..3cb2038 --- /dev/null +++ b/dist/assets/walletconnect-Bjp2_CnW.js @@ -0,0 +1,31 @@ +import{p as l}from"./index-B95lHF7v.js";const t=l` + + +`,C=l` + + + + + + + + + + + +`,L=l` + + + + + + +`;export{L as walletConnectBrownSvg,C as walletConnectLightBrownSvg,t as walletConnectSvg}; +//# sourceMappingURL=walletconnect-Bjp2_CnW.js.map diff --git a/dist/assets/walletconnect-Bjp2_CnW.js.map b/dist/assets/walletconnect-Bjp2_CnW.js.map new file mode 100644 index 0000000..214a13c --- /dev/null +++ b/dist/assets/walletconnect-Bjp2_CnW.js.map @@ -0,0 +1 @@ +{"version":3,"file":"walletconnect-Bjp2_CnW.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/walletconnect.js"],"sourcesContent":["import { svg } from 'lit';\nexport const walletConnectSvg = svg `\n \n \n`;\nexport const walletConnectLightBrownSvg = svg `\n\n\n\n\n\n\n\n\n\n\n\n`;\nexport const walletConnectBrownSvg = svg `\n\n\n\n\n\n\n`;\n//# sourceMappingURL=walletconnect.js.map"],"names":["walletConnectSvg","svg","walletConnectLightBrownSvg","walletConnectBrownSvg"],"mappings":"wCACY,MAACA,EAAmBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,QAWnBC,EAA6BD;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAa7BE,EAAwBF;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/warning-circle-C7JI6fo1.js b/dist/assets/warning-circle-C7JI6fo1.js new file mode 100644 index 0000000..9eac364 --- /dev/null +++ b/dist/assets/warning-circle-C7JI6fo1.js @@ -0,0 +1,13 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + + +`;export{e as warningCircleSvg}; +//# sourceMappingURL=warning-circle-C7JI6fo1.js.map diff --git a/dist/assets/warning-circle-C7JI6fo1.js.map b/dist/assets/warning-circle-C7JI6fo1.js.map new file mode 100644 index 0000000..c93c71c --- /dev/null +++ b/dist/assets/warning-circle-C7JI6fo1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"warning-circle-C7JI6fo1.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/warning-circle.js"],"sourcesContent":["import { svg } from 'lit';\nexport const warningCircleSvg = svg `\n \n \n`;\n//# sourceMappingURL=warning-circle.js.map"],"names":["warningCircleSvg","svg"],"mappings":"wCACY,MAACA,EAAmBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/x-CeOvQMPn.js b/dist/assets/x-CeOvQMPn.js new file mode 100644 index 0000000..925ed17 --- /dev/null +++ b/dist/assets/x-CeOvQMPn.js @@ -0,0 +1,13 @@ +import{p as l}from"./index-B95lHF7v.js";const h=l` + + + + + + + +`;export{h as xSvg}; +//# sourceMappingURL=x-CeOvQMPn.js.map diff --git a/dist/assets/x-CeOvQMPn.js.map b/dist/assets/x-CeOvQMPn.js.map new file mode 100644 index 0000000..b15af17 --- /dev/null +++ b/dist/assets/x-CeOvQMPn.js.map @@ -0,0 +1 @@ +{"version":3,"file":"x-CeOvQMPn.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/x.js"],"sourcesContent":["import { svg } from 'lit';\nexport const xSvg = svg `\n \n \n \n \n \n \n \n`;\n//# sourceMappingURL=x.js.map"],"names":["xSvg","svg"],"mappings":"wCACY,MAACA,EAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/assets/x-mark-C5EE7WXX.js b/dist/assets/x-mark-C5EE7WXX.js new file mode 100644 index 0000000..45e2ee2 --- /dev/null +++ b/dist/assets/x-mark-C5EE7WXX.js @@ -0,0 +1,4 @@ +import{p as l}from"./index-B95lHF7v.js";const e=l` + +`;export{e as xMarkSvg}; +//# sourceMappingURL=x-mark-C5EE7WXX.js.map diff --git a/dist/assets/x-mark-C5EE7WXX.js.map b/dist/assets/x-mark-C5EE7WXX.js.map new file mode 100644 index 0000000..e7e5f5f --- /dev/null +++ b/dist/assets/x-mark-C5EE7WXX.js.map @@ -0,0 +1 @@ +{"version":3,"file":"x-mark-C5EE7WXX.js","sources":["../../node_modules/.pnpm/@reown+appkit-ui@1.7.17_@types+react@18.3.25_react@18.3.1_typescript@5.9.3_zod@3.22.4/node_modules/@reown/appkit-ui/dist/esm/src/assets/svg/x-mark.js"],"sourcesContent":["import { svg } from 'lit';\nexport const xMarkSvg = svg `\n \n`;\n//# sourceMappingURL=x-mark.js.map"],"names":["xMarkSvg","svg"],"mappings":"wCACY,MAACA,EAAWC;AAAAA;","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..6a23003 --- /dev/null +++ b/dist/index.html @@ -0,0 +1,14 @@ + + + + + + STX Airtime Drip + + + + + +
+ + diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000..3e8549b --- /dev/null +++ b/frontend/.env @@ -0,0 +1,6 @@ +# Fill these with your deploy output before deploying to testnet +# For now, using placeholder for local development +VITE_CONTRACT_ADDRESS=STX9BA8A6BQBWTZJ62DWZ6G1QQAAHZKKC7R46JE8 +VITE_CONTRACT_NAME=stream-v2upgraded +VITE_NETWORK=testnet +VITE_STACKS_API_URL=https://api.testnet.hiro.so diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..63f065a --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1,5 @@ +# Fill these with your deploy output before running the frontend locally +VITE_CONTRACT_ADDRESS=ST2ABCDEFG1234567890EXAMPLE +VITE_CONTRACT_NAME=stream +VITE_NETWORK=testnet +VITE_STACKS_API_URL=https://api.testnet.hiro.so diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..6d6ae85 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + STX Airtime Drip + + + +
+ + + diff --git a/frontend/public/app-icon.svg b/frontend/public/app-icon.svg new file mode 100644 index 0000000..0bc3446 --- /dev/null +++ b/frontend/public/app-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..059ed42 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,536 @@ +import { useCallback, useEffect, useMemo, useState } from "react"; +import { + AnchorMode, + bufferCV, + callReadOnlyFunction, + PostConditionMode, + principalCV, + uintCV, +} from "@stacks/transactions"; +import { useConnect } from "@stacks/connect-react"; +import type { UserSession } from "@stacks/connect"; + +import AnimatedBackground from "./components/AnimatedBackground"; +import CreatePlanForm, { CreatePlanPayload } from "./components/CreatePlanForm"; +import PlanCard from "./components/PlanCard"; +import CustomerPortal from "./components/CustomerPortal"; +import MerchantPortal from "./components/MerchantPortal"; +import ReadOnlyView from "./components/ReadOnlyView"; +import FaucetHelper from "./components/FaucetHelper"; +import LandingPage from "./components/LandingPage"; +import { ToastContainer } from "./components/Toast"; +import { useToast } from "./hooks/useToast"; +import { useBlockHeight } from "./hooks/useBlockHeight"; +import { + AirtimePlan, + parsePlanOption, + unwrapOk, + unwrapUInt, +} from "./lib/clarity"; +import { + CONTRACT_ADDRESS, + CONTRACT_NAME, + NETWORK_KEY, + NETWORK_NAME, + STACKS_NETWORK, + formatStx, + toMicroStx, +} from "./lib/config"; + +const toFixedBuffer = (input: string, length: number) => { + const encoder = new TextEncoder(); + const data = encoder.encode(input.toLowerCase()); + if (data.length >= length) { + return data.slice(0, length); + } + const padded = new Uint8Array(length); + padded.set(data); + return padded; +}; + +interface AppProps { + userSession: UserSession; +} + +type ViewMode = "landing" | "all" | "customer" | "merchant"; + +const App = ({ userSession }: AppProps) => { + const { + doOpenAuth, + doContractCall, + userSession: connectSession, + } = useConnect(); + const session = connectSession ?? userSession; + const { toasts, showToast, dismissToast, updateToast } = useToast(); + const { blockHeight } = useBlockHeight(); + + const [plans, setPlans] = useState([]); + const [isFetching, setFetching] = useState(false); + const [busyPlanId, setBusyPlanId] = useState(null); + const [viewMode, setViewMode] = useState("landing"); + const [lookupAddress, setLookupAddress] = useState(""); + + // Check URL params for direct plan viewing + useEffect(() => { + const params = new URLSearchParams(window.location.search); + const planParam = params.get("plan"); + const customerParam = params.get("customer"); + + if (planParam && customerParam) { + setLookupAddress(customerParam); + showToast( + `Viewing plan #${planParam} for ${customerParam.slice(0, 8)}...`, + "info" + ); + } + }, [showToast]); + + const isSignedIn = session?.isUserSignedIn() ?? false; + + const currentAddress = useMemo(() => { + if (!session || !isSignedIn) return undefined; + const data = session.loadUserData(); + const addresses = (data?.profile as any)?.stxAddress ?? {}; + return addresses[NETWORK_KEY]; + }, [isSignedIn, session]); + + const shortAddress = useMemo(() => { + if (!currentAddress) return null; + return `${currentAddress.slice(0, 6)}…${currentAddress.slice(-4)}`; + }, [currentAddress]); + + const contractReady = CONTRACT_ADDRESS.length > 0; + + const refreshPlans = useCallback( + async (address?: string) => { + if (!contractReady) { + setPlans([]); + showToast( + "Contract address not configured. Set VITE_CONTRACT_ADDRESS in .env", + "error" + ); + return; + } + + const loadingToastId = showToast( + "Loading plans from blockchain...", + "pending", + 0 + ); + + try { + setFetching(true); + const lookupAddr = address || currentAddress || CONTRACT_ADDRESS; + + const latestResponse = await callReadOnlyFunction({ + contractAddress: CONTRACT_ADDRESS, + contractName: CONTRACT_NAME, + functionName: "get-latest-airtime-plan-id", + functionArgs: [], + senderAddress: lookupAddr, + network: STACKS_NETWORK, + }); + + const totalPlans = unwrapUInt(unwrapOk(latestResponse)); + const items: AirtimePlan[] = []; + + for (let i = 0n; i < totalPlans; i += 1n) { + const planId = Number(i); + const planCv = await callReadOnlyFunction({ + contractAddress: CONTRACT_ADDRESS, + contractName: CONTRACT_NAME, + functionName: "get-airtime-plan", + functionArgs: [uintCV(i)], + senderAddress: lookupAddr, + network: STACKS_NETWORK, + }); + const parsed = parsePlanOption(planCv, planId); + if (parsed) { + items.push(parsed); + } + } + + items.sort((a, b) => b.id - a.id); + setPlans(items); + updateToast( + loadingToastId, + `✓ Synced ${items.length} plan${items.length === 1 ? "" : "s"}`, + "success", + 3000 + ); + } catch (error) { + console.error("refreshPlans", error); + updateToast( + loadingToastId, + "Failed to load plans. Check your network connection.", + "error" + ); + } finally { + setFetching(false); + } + }, + [contractReady, currentAddress, showToast, updateToast] + ); + + useEffect(() => { + refreshPlans(); + }, [refreshPlans]); + + const requireWallet = () => { + if (!isSignedIn) { + throw new Error("Connect your Stacks wallet first."); + } + }; + + const handleCreatePlan = async (payload: CreatePlanPayload) => { + requireWallet(); + if (!contractReady) { + throw new Error("Contract address is missing."); + } + + const toastId = showToast("Preparing transaction...", "pending", 0); + + await new Promise((resolve, reject) => { + doContractCall({ + contractAddress: CONTRACT_ADDRESS, + contractName: CONTRACT_NAME, + functionName: "create-airtime-plan", + functionArgs: [ + principalCV(payload.customer), + bufferCV(toFixedBuffer(payload.phone, 16)), + bufferCV(toFixedBuffer(payload.network, 16)), + uintCV(toMicroStx(payload.payout)), + uintCV(BigInt(payload.interval)), + uintCV(BigInt(payload.maxClaims)), + ], + network: STACKS_NETWORK, + anchorMode: AnchorMode.Any, + postConditionMode: PostConditionMode.Allow, + onFinish: (result) => { + updateToast( + toastId, + `Plan created! Transaction: ${result.txId.slice(0, 8)}...`, + "success" + ); + setTimeout(() => refreshPlans(), 8000); + resolve(); + }, + onCancel: () => { + updateToast(toastId, "Transaction cancelled", "info", 3000); + reject(new Error("User cancelled")); + }, + }); + }); + }; + + const runPlanAction = async ( + planId: number, + functionName: "claim-airtime" | "topup-airtime" | "cancel-airtime", + args: ReturnType[], + actionName: string + ) => { + requireWallet(); + if (!contractReady) { + throw new Error("Contract address is missing."); + } + + const toastId = showToast(`${actionName}...`, "pending", 0); + + await new Promise((resolve, reject) => { + doContractCall({ + contractAddress: CONTRACT_ADDRESS, + contractName: CONTRACT_NAME, + functionName, + functionArgs: args, + network: STACKS_NETWORK, + anchorMode: AnchorMode.Any, + postConditionMode: PostConditionMode.Allow, + onFinish: (result) => { + updateToast( + toastId, + `✓ ${actionName} successful! Tx: ${result.txId.slice(0, 8)}...`, + "success" + ); + setTimeout(() => refreshPlans(), 8000); + resolve(); + }, + onCancel: () => { + updateToast(toastId, "Transaction cancelled", "info", 3000); + reject(new Error("User cancelled")); + }, + }); + }); + }; + + const handleClaim = async (planId: number) => { + try { + setBusyPlanId(planId); + await runPlanAction( + planId, + "claim-airtime", + [uintCV(BigInt(planId))], + "Claiming airtime" + ); + } catch (error) { + showToast((error as Error).message || "Claim failed", "error"); + } finally { + setBusyPlanId(null); + } + }; + + const handleClaimAll = async () => { + if (!currentAddress) return; + + const customerPlans = plans.filter( + (p) => + p.customer.toLowerCase() === currentAddress.toLowerCase() && + p.remainingBalance > 0n && + p.totalClaims < p.maxClaims && + blockHeight && + p.nextClaimBlock <= blockHeight + ); + + if (customerPlans.length === 0) { + showToast("No plans ready to claim", "info"); + return; + } + + showToast(`Claiming from ${customerPlans.length} plans...`, "pending", 0); + + for (const plan of customerPlans) { + try { + await handleClaim(plan.id); + } catch (error) { + console.error(`Failed to claim plan ${plan.id}:`, error); + } + } + + showToast("Bulk claim complete!", "success"); + }; + + const handleTopup = async (planId: number, extraClaims: number) => { + try { + setBusyPlanId(planId); + await runPlanAction( + planId, + "topup-airtime", + [uintCV(BigInt(planId)), uintCV(BigInt(extraClaims))], + "Topping up plan" + ); + } catch (error) { + showToast((error as Error).message || "Top-up failed", "error"); + } finally { + setBusyPlanId(null); + } + }; + + const handleCancel = async (planId: number) => { + try { + setBusyPlanId(planId); + await runPlanAction( + planId, + "cancel-airtime", + [uintCV(BigInt(planId))], + "Cancelling plan" + ); + } catch (error) { + showToast((error as Error).message || "Cancellation failed", "error"); + } finally { + setBusyPlanId(null); + } + }; + + const handleSignIn = () => { + doOpenAuth(true); + }; + + const handleSignOut = () => { + session?.signUserOut(); + window.location.reload(); + }; + + const handleLookup = (address: string) => { + setLookupAddress(address); + refreshPlans(address); + }; + + const renderContent = () => { + if (viewMode === "landing") { + return ( + setViewMode("all")} + onLookup={handleLookup} + lookupAddress={lookupAddress} + /> + ); + } + + if (viewMode === "customer") { + return ( + + ); + } + + if (viewMode === "merchant") { + return ( + + ); + } + + return ( + <> +
+

All airtime plans

+

+ {isFetching + ? "Syncing with blockchain..." + : plans.length === 0 + ? "No plans yet. Create your first one below." + : `Showing ${plans.length} plan${plans.length === 1 ? "" : "s"}.`} +

+
+ {plans.map((plan) => ( + + ))} +
+
+
+
+ + Total locked:{" "} + + {formatStx( + plans.reduce((sum, plan) => sum + plan.remainingBalance, 0n) + )}{" "} + STX + + + + + Block height:{" "} + {blockHeight?.toString() || "Loading..."} + +
+

+ Contract: {CONTRACT_ADDRESS || "Not configured"} +

+
+ + ); + }; + + return ( +
+ + + +
+
+

💰 STX Airtime Drip

+

Keep your people topped up — no POS queues, no wahala.

+
+
+ {isSignedIn && ( + + )} + {shortAddress && ( + + {shortAddress} ·{" "} + {NETWORK_NAME === "mainnet" ? "Mainnet" : "Testnet"} + + )} + {isSignedIn ? ( + + ) : ( + + )} +
+
+ + {!isSignedIn ? ( + + ) : ( + <> + {viewMode !== "landing" && ( + + )} + +
+ + + + +
+ + {renderContent()} + + )} +
+ ); +}; + +export default App; diff --git a/frontend/src/components/AnimatedBackground.tsx b/frontend/src/components/AnimatedBackground.tsx new file mode 100644 index 0000000..b1d794c --- /dev/null +++ b/frontend/src/components/AnimatedBackground.tsx @@ -0,0 +1,125 @@ +import { useEffect, useRef } from "react"; +import * as THREE from "three"; + +const AnimatedBackground = () => { + const mountRef = useRef(null); + + useEffect(() => { + const mount = mountRef.current; + if (!mount) return; + + const scene = new THREE.Scene(); + scene.background = null; + + const camera = new THREE.PerspectiveCamera( + 60, + window.innerWidth / window.innerHeight, + 0.1, + 1000 + ); + camera.position.z = 28; + + const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); + renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); + mount.appendChild(renderer.domElement); + + const ambientLight = new THREE.AmbientLight(0x1c1f23, 0.6); + scene.add(ambientLight); + + const orangeLight = new THREE.PointLight(0xf97316, 1.3, 120); + orangeLight.position.set(14, 10, 30); + scene.add(orangeLight); + + const greenLight = new THREE.PointLight(0x3f6212, 1.1, 110); + greenLight.position.set(-16, -12, 25); + scene.add(greenLight); + + const geometry = new THREE.IcosahedronGeometry(10, 1); + const material = new THREE.MeshStandardMaterial({ + color: 0x101316, + roughness: 0.42, + metalness: 0.48, + }); + + const mesh = new THREE.Mesh(geometry, material); + scene.add(mesh); + + const edges = new THREE.EdgesGeometry(geometry); + const wireframe = new THREE.LineSegments( + edges, + new THREE.LineBasicMaterial({ color: 0x3f6212, linewidth: 1 }) + ); + mesh.add(wireframe); + + const orbitGroup = new THREE.Group(); + scene.add(orbitGroup); + + // Sprinkle subtle particles like Lagos night lights + const particlesGeometry = new THREE.BufferGeometry(); + const particleCount = 180; + const positions = new Float32Array(particleCount * 3); + + for (let i = 0; i < particleCount; i += 1) { + positions[i * 3] = (Math.random() - 0.5) * 60; + positions[i * 3 + 1] = (Math.random() - 0.5) * 60; + positions[i * 3 + 2] = (Math.random() - 0.5) * 60; + } + + particlesGeometry.setAttribute( + "position", + new THREE.BufferAttribute(positions, 3) + ); + + const particlesMaterial = new THREE.PointsMaterial({ + color: 0xf97316, + size: 0.25, + transparent: true, + opacity: 0.6, + }); + + const particles = new THREE.Points(particlesGeometry, particlesMaterial); + orbitGroup.add(particles); + + let animationFrame = 0; + + const onResize = () => { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + renderer.setSize(window.innerWidth, window.innerHeight); + }; + window.addEventListener("resize", onResize); + + const animate = () => { + mesh.rotation.x += 0.0025; + mesh.rotation.y += 0.0018; + wireframe.rotation.z += 0.0015; + orbitGroup.rotation.y += 0.0009; + renderer.render(scene, camera); + animationFrame = requestAnimationFrame(animate); + }; + + animate(); + + return () => { + cancelAnimationFrame(animationFrame); + window.removeEventListener("resize", onResize); + particlesGeometry.dispose(); + particlesMaterial.dispose(); + edges.dispose(); + (wireframe.material as THREE.Material).dispose(); + geometry.dispose(); + material.dispose(); + renderer.dispose(); + if (renderer.domElement.parentNode === mount) { + mount.removeChild(renderer.domElement); + } + }; + }, []); + + return ( +